Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Suchen & Ersetzen mit XCODE ( *KOTZ* )

 
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
scriptingmouse13
•-->
•-->


Anmeldedatum: 04.11.2003
Beiträge: 125
Wohnort: .DS_Store

BeitragVerfasst am: 14.03.2006 - 16:22    Titel: Suchen & Ersetzen mit XCODE ( *KOTZ* ) Antworten mit Zitat

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 Confused

*Hilfe schrei*

mfg

Chriss
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 14.03.2006 - 16:31    Titel: Re: Suchen & Ersetzen mit XCODE ( *KOTZ* ) Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
scriptingmouse13
•-->
•-->


Anmeldedatum: 04.11.2003
Beiträge: 125
Wohnort: .DS_Store

BeitragVerfasst am: 14.03.2006 - 18:55    Titel: Antworten mit Zitat

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.... Sad
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 14.03.2006 - 19:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
scriptingmouse13
•-->
•-->


Anmeldedatum: 04.11.2003
Beiträge: 125
Wohnort: .DS_Store

BeitragVerfasst am: 15.03.2006 - 16:20    Titel: Antworten mit Zitat

Naja hat nich wirklich geholfen, aber irgendwie funktionierts jetz doch mit der text field methode Smile trotzdem danke Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1517
Wohnort: Olten-CH

BeitragVerfasst am: 15.03.2006 - 22:59    Titel: Schwanengesang Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
scriptingmouse13
•-->
•-->


Anmeldedatum: 04.11.2003
Beiträge: 125
Wohnort: .DS_Store

BeitragVerfasst am: 16.03.2006 - 20:31    Titel: Antworten mit Zitat

Exclamation nice Exclamation Laughing

Wie immer ...
das mit dem Global funzt perfekt ... danke spiri Laughing vorallem so viieelll schneller Very Happy

-- hübscher schwanen gesang ^^
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.   Dieses Thema ist gesperrt, du kannst keine Beiträge editieren oder beantworten.    Fischer-Bayern.de Foren-Übersicht -> AppleScript-Studio Forum Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
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


AppleScript für absolute Starter