Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
scriptingmouse13 •-->


Anmeldedatum: 04.11.2003 Beiträge: 125 Wohnort: .DS_Store
|
Verfasst am: 14.03.2006 - 16:22 Titel: Suchen & Ersetzen mit XCODE ( *KOTZ* ) |
|
|
Error :
Applescript Error
Can't get window "Ablage" of {""}. (-1728)
Skript :
on SuchSongandArtist()
set LangSuchErsetzPaarWL to count SuchErsetzPaarWL
repeat with ItZa from 1 to LangSuchErsetzPaarWL
set ZuErsetztenText to contents of text field "ZuErsetzenText" of window "Ablage"
set AktSuchErsPaarWLZeile to item ItZa of SuchErsetzPaarWL
set SuchT to SuchT of AktSuchErsPaarWLZeile
set contents of text field "SuchT" of window "Ablage" to SuchT
set ErsatzT to ErsatzT of AktSuchErsPaarWLZeile
set contents of text field "ErsatzT" of window "Ablage" to ErsatzT
my TexErsetzer()
end repeat
end SuchSongandArtist
on TexErsetzer()
set SuchT to contents of text field "SuchT" of window "Ablage"
set ErsatzT to contents of text field "ErsatzT" of window "Ablage"
set ZuErsetzenText to contents of text field "ZuErsetzenText" of window "Ablage"
tell (a reference to AppleScript's text item delimiters)
set {od, contents} to {contents, {SuchT}}
try
set {ZuErsetzenTextList, contents} to {(text items of ZuErsetzenText), {ErsatzT}}
set {ZuErsetzenText2, contents} to {(ZuErsetzenTextList as text), od}
set contents of text field "ZuErsetzenText" of window "Ablage" to item 1 of result
on error errMeld number errZA
set contents to od
error errMeld number errZA
end try
end tell
end TexErsetzer
Erklärung :
Da XCode ( *Mac Erwürg* ) keine Variablen von On- Handlern übernimmt musste ich irgendwie SuchT, ErsatzT und ZuErsetzenText in den TexErsetzer bringen, also hab ich Text fields in dem Fenster "Ablage" mit den jeweiligen Namen erstellt, die wie der Fenster name schon sagt als Ablage dienen sollen. Bitte entweder um andere Vorschläge oder Lösungen
*Hilfe schrei*
mfg
Chriss |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 14.03.2006 - 16:31 Titel: Re: Suchen & Ersetzen mit XCODE ( *KOTZ* ) |
|
|
scriptingmouse13 hat Folgendes geschrieben: | Erklärung :
Da XCode ( *Mac Erwürg* ) keine Variablen von On- Handlern übernimmt | Warum sollte denn das nicht gehen?
Solange beide Handler in der gleichen Skriptdatei sind, kannst du damit genauso arbeiten wie man es vom normalen AppleScript im Skripteditor gewohnt ist. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
scriptingmouse13 •-->


Anmeldedatum: 04.11.2003 Beiträge: 125 Wohnort: .DS_Store
|
Verfasst am: 14.03.2006 - 18:55 Titel: |
|
|
nee bei mir geht das irgendwie nich ( hab xCode 1.5 )
Naja ich hab irgendwo oben im on IdleScript() handler stehen
Set ZuErsetzenText to the_artist
Im script-editor übernimmt der das in alle on-handler, da das nicht selbst in einem on-handler steht, da on-handler untergeorndet zu der variable sind ! wenn ich jetz aber das auch in einen on-handler packe wie z.b. On Idle dann wird es auf die gleiche "Stufe" gesetzt und ist nicht mehr für andere on-handler verfügbar, sondern eben nur für on Idle....  |
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 14.03.2006 - 19:26 Titel: |
|
|
Dieses Verhalten ist doch ganz normal bei Handlern.
Wenn du den Wert eine Skriptebene höher benötigst, musst du ihn dir entweder beim Handleraufruf bereits in eine Variable zurück liefern lassen oder du benutzt eine Property (Achtung: Properties speichern in X-Code Projekten ihren Wert nicht nach Beendigung des Programms).
Also beschäftigen wir uns nochmal mit Handler-Grundlagen.
Lösung 1:
set meinWert to Textersetzer() of me
on Textersetzer()
-- anderer Skripttext
return Ergebnis
end Textersetzer
oder mit Property
Lösung 2:
property meinWert : ""
my Textersetzer()
on Textersetzer()
-- anderer Skripttext
-- Ergebnis soll hier mal das Ergebnis des TextErsetzer Hanlders beinhalten
set meinWert to Ergebnis
end Textersetzer _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
scriptingmouse13 •-->


Anmeldedatum: 04.11.2003 Beiträge: 125 Wohnort: .DS_Store
|
Verfasst am: 15.03.2006 - 16:20 Titel: |
|
|
Naja hat nich wirklich geholfen, aber irgendwie funktionierts jetz doch mit der text field methode trotzdem danke  |
|
Nach oben |
|
 |
spirigwi •----->


Anmeldedatum: 10.07.2003 Beiträge: 1517 Wohnort: Olten-CH
|
Verfasst am: 15.03.2006 - 22:59 Titel: Schwanengesang |
|
|
Wenn du willst, dass ZB SuchT = SuchT ALLEN Handlern zu ihrem internen Gebrauch zur Verfügung stehen soll, kannst du ZB:
eine Global-Reihe in den Handler stecken und dieselbe Reihe nochmals am Skript-Kopf deponieren:
Zur Herstellung einer solchen Global-Reihe:
sie ist dann sichtbar vollständig , wenn du der Reihe nach die Variablen aus dem Handler herauskopiert hast, was ja schnell gemacht ist mit: æ+C dann æ+v natürlich, musst nur ein Komma zwischen die Variablen tippen. Dann kannst du ja die ganze so erstellte Reihe wieder mit æ+C dann æ+v in beliebige Zeilen hineinpasten um zu sehen mit welchen Variablen dein Skript überhaupt arbeitet.
ZB:
global SuchT, ErsatzT, ZuErsetzenText --=> an den Kopf des Skriptes
my TexErsetzer() --Skript-Ablauf = ausserhalb des Handlers
on TexErsetzer()
global SuchT, ErsatzT, ZuErsetzenText
set SuchT to contents of text field "SuchT" of window "Ablage" --Achtung! Programm des text field aufrufen!
on TexErsetzer
Noch ein Tipp betr. Namensgebung:
ich würde nie eine Variable gleichlautend nennen wie ein Textfeld eines Programmes, es lohnt sich da die Textfelder als propertys zuerst unter der Global-Reihe aufzuführen:
property TextF_SuchT : "SuchT" als Beispiel, und statt:
set SuchT to contents of text field "SuchT" of window "Ablage"
würde ich solche Namen geben:
set ContTextF_SuchT to contents of text field TextF_SuchT of window "Ablage"
selbst für "Ablage" würde ich eine Property definieren, ZB
property Win1 : "Ablage"
set ContTextF_SuchT to contents of text field TextF_SuchT of window Win1
Damit erreichst du, wie ich das seit Jahren mit den FileMaker-Datenbanken vor allem zur Erleichterung späterer Skript-Reparaturen/Ergänzungen mache, dass sämtliche Funktionen und Handleraktionen immer nur mit Variablen arbeiten statt mit konkreten, immerwieder einzutippenden Texten wie
"SuchT" "Ablage" "ZuErsetzenText"
sodass man am handler nie jemals wieder was ändern muss(ausser man hat sich beim handler-planen verhauen):
nur die Variablenwerte, die ein handler anders als der verhergehende Aufruf verarbeiten müssen, musst du jeweils vor jedem neuerlichen Aufruf mit
set SuchT to .....
verändern. Wie schon erwähnt, wenn die Variablen dafür eine GLOBAL an der Skriptspitze haben, wird der neu eingegebene Wert ja dort gespeichert und sämtlichen Handlern zur Verfügung stehen.
So merkst du dann hoffentlich, dass gewisse "Vorbedingungen"
wie set ContTextF_SuchT to contents of text field "SuchT"
gar nicht im Handler drin sein müssen(können es aber, kein Problem) sondern geschickterweise zuerst einmalig ausserhalb der Handler definiert werden können:
vorausgesetzt, du hast eine Global für die Variable ZB: ContTextF_SuchT gesetzt, damit der Wert dem Handler intern zur Verfügung steht!
PS: Script-mus ¿ hab deinen richtigen Namen vergessen, weisst du was ein Schwanengesang ist? Das war meiner! _________________ Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius |
|
Nach oben |
|
 |
scriptingmouse13 •-->


Anmeldedatum: 04.11.2003 Beiträge: 125 Wohnort: .DS_Store
|
Verfasst am: 16.03.2006 - 20:31 Titel: |
|
|
nice
Wie immer ...
das mit dem Global funzt perfekt ... danke spiri vorallem so viieelll schneller
-- hübscher schwanen gesang ^^ |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2002 phpBB Group Deutsche Übersetzung von phpBB.de
|
|
|