Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 15.09.2003 - 15:14 Titel: |
|
|
'read' bietet die Option "before return" oder "until return".
Damit wird nur bis zu einer Zeilenschaltung gelesen.
Solange der Dateizugriff nicht mit 'close access' geschlossen wird, wandert der Positionszeiger innerhalb der Datei immer bis zu dem Punkt, bis zu dem gelesen wurde. D.h. man kann mit einer Schleife immer weiter die Daten auslesen. Beim jeweiligen Schleifendurchlauf wird an der letzten Position gestartet. Würde man den Zugriff auf die Datei immer wieder schließen, könntest du stets nur die erste Zeile auslesen, da dann am Anfang der Datei mit dem Lesen begonnen wird.
Nachdem eine Zeile gelesen und überprüft wurde, wird die Variable, die den gelesenen Text enthält wieder geleert. Somit vermeidet man den 'stack overflow'.
Beispiel:
set myDisk to path to startup disk as string
set meineDatei to myDisk & "Grafik-Work:Scans:Logo-1.eps"
set RefNum to open for access alias meineDatei
try
repeat --10 times -- zum Testen mit Eventprotokoll
set eineZeile to (read RefNum before return)
Ueberpruefung(eineZeile)
set eineZeile to "" -- Variable wieder leeren
end repeat
close access RefNum
on error errMsg
display dialog "Fertig!" & return & errMsg
close access RefNum
end try
on Ueberpruefung(Textinhalt)
-- schreibe hier deine Anweisungen zur
-- Überprüfung der jeweiligen Zeile hinein
log Textinhalt -- nur für die Anzeige im Eventprotokoll
end Ueberpruefung
Wenn du das Beispiel ausprobieren möchtest, solltest du die Kommentierung bei der Schleife entfernen, so dass nur 10 Wiederholungen stattfinden. Sonst brauchst du echt Geduld, da das Skript bei geöffnetem Eventprotokoll sehr viel Zeit braucht. _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
SaTiZ •->

Anmeldedatum: 24.03.2003 Beiträge: 18 Wohnort: Wicker Herkunft:Berlin
|
Verfasst am: 15.09.2003 - 16:59 Titel: |
|
|
Hallo
das funzt soweit ziemlich gut, allerdings sollte ich noch ne Abfrage einbauen ob eof (EndOfFile) erreicht wird. Da er bis jetzt immer mit ner Fehlermeldung abbricht.
das müßte dann ja ungefähr so aussehen:
Code: | repeat while the position of RefNum is not eof |
|
|
Nach oben |
|
 |
Snow Administrator


Anmeldedatum: 21.11.2000 Beiträge: 1946 Wohnort: Deiningen
|
Verfasst am: 15.09.2003 - 17:44 Titel: |
|
|
Das mit der Fehlermeldung war mir klar. Deswegen steht ja alles innerhalb eines try-Blocks.
Wenn die Fehlermeldung stört, könnte man die entsprechende 'display dialog' Anweisung ja entfernen.
Eleganter ist jedoch, die Fehlernummer abzufragen. End of file hat die Fehlernummer -39.
Im Fehlerfall wird also der Dateizugriff geschlossen und solange es sich um Fehlernummer -39 handelt, wird das Skript einfach beendet. Andernfalls erfolgt noch die Fehlermeldung.
Hier also die neue Version:
set myDisk to path to startup disk as string
set meineDatei to myDisk & "Grafik-Work:Scans:Logo-1.eps"
set RefNum to open for access alias meineDatei
try
repeat --10 times -- zum Testen mit Eventprotokoll
set eineZeile to (read RefNum before return)
Ueberpruefung(eineZeile)
set eineZeile to "" -- Variable wieder leeren
end repeat
close access RefNum
on error errMsg number errNr
close access RefNum
if errNr = -39 then
return
else
display dialog "Fehler: " & errNr & return & errMsg
end if
end try
on Ueberpruefung(Textinhalt)
-- schreibe hier deine Anweisungen zur
-- Überprüfung der jeweiligen Zeile hinein
log Textinhalt -- nur für die Anzeige im Eventprotokoll
end Ueberpruefung _________________ Peter
-
Fischer-Bayern.de|Shadetreemicro.com |
|
Nach oben |
|
 |
SaTiZ •->

Anmeldedatum: 24.03.2003 Beiträge: 18 Wohnort: Wicker Herkunft:Berlin
|
Verfasst am: 22.09.2003 - 09:53 Titel: |
|
|
Hallo,
sorry das ich jetzt erst antworte. Vielen Dank das klappt alles wunderbar .
Ich kann mich aber irgendwie immer noch nicht mit AppleScript anfreunden, vielleicht kommt das ja später noch...  |
|
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
|
|
|