• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Variable Probleme

-Ph!L-

Gast
Hi,
ich bin gerade dran mein Programm zu verbessern, indem ich mehr Codecs ein baue jedoch öffnet sich keine Variable, wenn ich auf den Button klicke.
Hier mein Code:


on clicked theObject
set a to display dialog {"MP3", "Apple Lossless", "AAC", "AIFF"}

if the answer is "MP3" then
tell application "iTunes"
set current encoder to encoder "MP3 Encoder"
convert playlist "convertlist"
end tell
end if
if the answer is "Apple Lossless" then
tell application "iTunes"
set current encoder to encoder "Apple Lossless Encoder"
convert playlist "convertlist"
end tell
end if
if the answer is "AAC" then
tell application "iTunes"
set current encoder to encoder "AAC Encoder"
convert playlist "convertlist"
end tell
end if
if the answer is "AIFF" then
tell application "iTunes"
set current encoder to encoder "AIFF Encoder"
convert playlist "convertlist"
end tell
end if
end clicked
 
Zuletzt bearbeitet von einem Moderator:

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Welche Sprache soll das sein? Es mutet ein bißchen wie AppleScript an, kann aber nicht übersetzt werden.
 

-Ph!L-

Gast
Klar ist das Applescript.. Was soll es sonst sein? Wo ist denn der Fehler..
 

-Ph!L-

Gast
Habs:


on clicked theObject
set a to choose from list {"MP3", "Apple Lossless", "AAC", "AIFF"}

if the answer is "MP3" then
tell application "iTunes"
set current encoder to encoder "MP3 Encoder"
convert playlist "convertlist"
end tell
end if
if the answer is "Apple Lossless" then
tell application "iTunes"
set current encoder to encoder "Apple Lossless Encoder"
convert playlist "convertlist"
end tell
end if
if the answer is "AAC" then
tell application "iTunes"
set current encoder to encoder "AAC Encoder"
convert playlist "convertlist"
end tell
end if
if the answer is "AIFF" then
tell application "iTunes"
set current encoder to encoder "AIFF Encoder"
convert playlist "convertlist"
end tell
end if
end clicked

Da musste set a to choose from list, anstatt set a to display dialog hin..

Aber, nächstes Problem, wenn ich den Codec wähle, kommt Variable Answer ist not defined.. Wo liegt jetzt der fehler
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Wenn Du "a" setzt, aber "answer" abfragst, ist das ja wohl kein Wunder.

Wäre übrigens geschickt, wenn Du um deinen Code ein
Code:
setzen könntest...
 

-Ph!L-

Gast
Und was muss ich den schreiben damit es richtig klappt?
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Du lernst noch zu Programmieren, gell?

Überleg mal... Wenn Du eine Variable (answer) abfragen willst, mußt Du doch vorher dieser Variablen auch einen Wert zuweisen und nicht einer anderen mit einem ganz anderen Namen (a).
 

-Ph!L-

Gast
Ja ich lerne es gerade, deswegen die doofen Fragen.

Wenn ich die Variable answer nenne, passiert später wenn ich z.B mp3 klicke nichts. NORMALERWEISE sollte iTunes dann ja konvertieren.
und wenn ich if a is "MP3"... eingebe, passiert ebenfalls nichts.. Aber der code
tell application "iTunes"
set current encoder to encoder "MP3 Encoder"
convert playlist "convertlist"

läuft, den hab ich schon ausprobiert (mit erfolg.)
 

Andy001

Gast
also wenn das apple script studio sein soll dann ... naja stimmt so einiges nicht ...

du machst hier die variable "a" zu einem display dialog du musst eher sowas machen:

if button returned of a is "MP3"

mfg andy
 

-Ph!L-

Gast
Ich arbeite mit Xcode,

aber der code funktioniert leider immer noch nicht..
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Lass mal nur diesen Teil laufen:
Code:
set a to choose from list {"MP3", "Apple Lossless", "AAC", "AIFF"}
Vielleicht siehst Du dann, was verkehrt ist. Ich weiß allerdings nicht, ob das in XCode genauso zu sehen ist, wie im ScriptEditor.
 

CloneOfMyself

Weigelts Zinszahler (Rotfranch)
Registriert
24.02.07
Beiträge
253
versuchs mal so, und werwende dann auch "a" statt "answer" im weiteren code:

set a to item 1 of (choose from list {"MP3", "Apple Lossless", "AAC", "AIFF"} without multiple selections allowed)

das 1. problem ist, dass der "choose from list"-befehl auch eine liste als ergebnis liefert. deshalb "item 1". du kannst das ergebnis leicht überprüfen mit get class of a. was du brauchst, ist ja ein string, weil du ja mit einem string vergleichst.

das 2. problem ist das von skeeve bereits beschriebene: wenn du das ergebnis in "a" abspeicherst, musst du auch anschliessend "a" mit den strings vergleichen, und nicht "answer".
und was ist das "clicked Object", das den code auslöst?
 
  • Like
Reaktionen: 1 Person

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
Menno! Clone! Das sollte er doch selbst lernen und nicht vorverdaut präsentiert bekommen!
 

CloneOfMyself

Weigelts Zinszahler (Rotfranch)
Registriert
24.02.07
Beiträge
253
das ist ansichtssache. wenn man gerade anfängt, kann einen applescript schon ziemlich bekloppt machen. da ist man für jeden tipp dankbar. und wenn man hier eine frage stellt, gehe ich davon aus, dass der/diejenige schon einiges versucht hat.
das heisst ja nicht, dass man dabei nichts lernt. deshalb die erklärungen.
und ich denke, das applescript noch genügend geheimnisse für phil übrig behält. schliesslich gilt applescript als apples am besten behütetes geheimnis ;)
 

Skeeve

Pomme d'or
Registriert
26.10.05
Beiträge
3.120
das ist ansichtssache. wenn man gerade anfängt, kann einen applescript schon ziemlich bekloppt machen.
Nicht nur dann... Aber ich habe ihm ja gerade das mit dem choose alleine empfohlen, weil man da im Scripteditor wunderbar sieht, daß eine Liste und nicht ein String zurückkommt. Das sind halt die Dinge, die ich selbst mache, wenn mir mal wieder was merkwürdig vorkommt.

Ich denke halt, daß es besser ist, jemanden auf die richtige Spur zu bringen als am Ziel abzusetzen.