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

Read File
Gehe zu Seite Zurück  1, 2
 
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-Forum
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 15.09.2003 - 15:14    Titel: Antworten mit Zitat

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


Anmeldedatum: 24.03.2003
Beiträge: 18
Wohnort: Wicker Herkunft:Berlin

BeitragVerfasst am: 15.09.2003 - 16:59    Titel: Antworten mit Zitat

Hallo Smile
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1946
Wohnort: Deiningen

BeitragVerfasst am: 15.09.2003 - 17:44    Titel: Antworten mit Zitat

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


Anmeldedatum: 24.03.2003
Beiträge: 18
Wohnort: Wicker Herkunft:Berlin

BeitragVerfasst am: 22.09.2003 - 09:53    Titel: Antworten mit Zitat

Hallo,

sorry das ich jetzt erst antworte. Vielen Dank das klappt alles wunderbar Smile.
Ich kann mich aber irgendwie immer noch nicht mit AppleScript anfreunden, vielleicht kommt das ja später noch... Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
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-Forum Alle Zeiten sind GMT + 2 Stunden
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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