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

EOF Error beim auslesen einer Datei

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
marcaroni
•->
•->


Anmeldedatum: 23.03.2003
Beiträge: 4

BeitragVerfasst am: 23.03.2003 - 16:49    Titel: EOF Error beim auslesen einer Datei Antworten mit Zitat

Hallo,

ich habe ein Problem mit einem Applescript unter MacOS X und komme
nicht weiter. Vielleicht kann mir jemand einen Tip geben.

Ein Java Applet soll aus dem Internet Explorer auf einen bestimmten Etiketten Drucker
ein Adressetikett drucken. Das Appler ruft erst ein Script auf welches auf den den Etiketten Drucker umschaltet.
Das funktioniert einwandfrei. Nachdem gedruckt wurde soll der alte Standarddrucker wieder ausgewählt werden.
Hierzu ruft das Applet das Script resetDymoDesktop auf. In resetDymoDestop steckt auch das Problem.
Es kommt immer in der Zeile "set theData to read open_target_file until eof" eine Execption " End of file Error "
In der Datei "tempLabelX" steht nichts aus dem Namen des Druckers z.B. 192.168.1.99
Ich habe auch mal die Rechte geändert, aber das hat leider auch nichts gebracht.

Wie bekomme ich Applescript dazu die Datei auszulesen?

Vielen Dank im Vorraus und viele Grüße
Marcus




-- START SKRIPT resetDymoDesktop

tell application "Print Center"
try
set myCurrentPrinter to the name of the current printer
set this_file to (((path to preferences folder) as text) & "tempLabelX")
set the open_target_file to open for access file this_file
set theData to read open_target_file until eof -- EXCEPTION !!!
set the current printer to printer theData
delete the this_file
on error errnum
try
close access file open_target_file
end try
display dialog errnum
return false
end try
end tell

--ENDE SKRIPT resetDymoDesktop
--***********************************************
--START SKRIPT setDymoDesktop

tell application "Print Center"
set myCurrentPrinter to the name of the current printer
set this_file to (((path to preferences folder) as text) & "tempLabelX")
my write_to_file(myCurrentPrinter, this_file, false)
set the current printer to printer "DYMO Labelwriter 320"
end tell


on write_to_file(this_data, target_file, append_data)
try
set the target_file to the target_file as text
set the open_target_file to ¬
open for access file target_file with write permission
if append_data is false then ¬
set eof of the open_target_file to 0
write this_data to the open_target_file starting at eof as string
close access the open_target_file
return true
on error
try
close access file target_file
end try
return false
end try
end write_to_file

--ENDE SKRIPT setDymoDesktop
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 23.03.2003 - 17:48    Titel: Antworten mit Zitat

Hallo Marcus,

lass doch einfach "until eof" beim Lesen der Datei weg, dann kommt auch kein Fehler mehr.

Der Fehler tritt übrigens auf, da es zu einem Problem mit den Datentypen kommt. EOF ist ein Zahlenwert.
Wenn du "until" verwendest, wird jedoch ein Textwert erwartet.

Aus dem Befehlsverzeichnis:

before plain text
until plain text
from double integer
to double integer

Du könntest die entsprechende Zeile auch so schreiben:

set theData to read open_target_file to eof -- EXCEPTION !!!


Gruß
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
marcaroni
•->
•->


Anmeldedatum: 23.03.2003
Beiträge: 4

BeitragVerfasst am: 23.03.2003 - 18:04    Titel: Antworten mit Zitat

Hallo Snow,

ursprünglich hatte ich nur die Zeile " set theData to read open_target_file" im Skript stehen. Aber das hat nicht funktioniert.
Ich habe es gerade nochmal ausprobiert, aber es geht einfach nicht.
Ich habe auch schon mal folgendes ausprobiert :

--set tsize to (get eof open_target_file)
--set theData to read open_target_file from 1 to tsize

Aber egal was immer ich tue; Ergebniss ist "End of File Error "


Vielen Dank und
Gruß
Marcus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 23.03.2003 - 18:46    Titel: Antworten mit Zitat

Probier' mal folgende Variante:

set tsize to (get eof open_target_file)
set theData to read open_target_file for tsize

Das funktioniert hier bei mir fehlerfrei (OS X 10.2.4; AS 1.9).
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 23.03.2003 - 19:05    Titel: Antworten mit Zitat

Jetzt konnte ich den Fehler nachvollziehen.
Ich hatte bisher zum Testen einen ganz normalen Text ("kein Drucker ausgewählt") verwendet. Damit funktionierten sämtliche Varianten.

Jetzt habe ich den Text mal in "192.168.1.99" abgeändert und bekomme die gleichen Fehlermeldungen wie du.

Wenn du die read-Anweisung aus dem Tell-Block, der sich an Print Center richtet, heraus nimmst, sollte es aber funktionieren.

Gruß
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
marcaroni
•->
•->


Anmeldedatum: 23.03.2003
Beiträge: 4

BeitragVerfasst am: 23.03.2003 - 20:08    Titel: Antworten mit Zitat

Hallo Snow,

hört sich gut an. Da ich nicht fit in AS bin,
kannst du mal das abgeänderte Bsp posten.
Ich weiß nicht wie ich das Read aus der Tell Anweisung bekomme.

Danke und Gruß
Marcus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 23.03.2003 - 20:20    Titel: Antworten mit Zitat

Hier das umgestaltete Skript (nicht getestet):


-- START SKRIPT resetDymoDesktop

tell application "Print Center"
 try
  set myCurrentPrinter to the name of the current printer
  set this_file to (((path to preferences folder) as text) & "tempLabelX" )
 on error errMsg
  display dialog errMsg
 end try
end tell
try
 set the open_target_file to open for access file this_file
 set theData to read open_target_file until eof -- EXCEPTION !!!
 tell application "Print Center"
  set the current printer to printer theData
  delete the this_file
 end tell
on error errnum
 try
  close access file open_target_file
 end try
 display dialog errnum
 return false
end try


--ENDE SKRIPT resetDymoDesktop


Gruß
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 23.03.2003 - 20:30    Titel: Antworten mit Zitat

Schöner wird die Sache, wenn man den Read-Teil in einen eigenen Handler auslagert:

-- START SKRIPT resetDymoDesktop

tell application "Print Center"
 try
  set myCurrentPrinter to the name of the current printer
  set this_file to (((path to preferences folder) as text) & "tempLabelX" )
  set theData to (my readData(this_file))
  set the current printer to printer theData
  delete the this_file
 on error errMsg
  display dialog errMsg
 end try
end tell


on readData(this_file)
 try
  set the open_target_file to open for access file this_file
  set theData to read open_target_file until eof -- EXCEPTION !!!  
 on error errnum
  try
   close access file open_target_file
  end try
  display dialog errnum
  return false
 end try
end readData

--ENDE SKRIPT resetDymoDesktop


Gruß
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
marcaroni
•->
•->


Anmeldedatum: 23.03.2003
Beiträge: 4

BeitragVerfasst am: 23.03.2003 - 20:32    Titel: Antworten mit Zitat

Hallo Snow,

yippeee es geht jetzt. Vielen Dank für deine Hilfe.
Das macht mich richtig happy. AS ist Cool.

Allerdings ist mir nicht so ganz klar was hier den Unterschied macht.

Viele Grüße
Marcus
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Snow
Administrator
Administrator


Anmeldedatum: 21.11.2000
Beiträge: 1955
Wohnort: Deiningen

BeitragVerfasst am: 23.03.2003 - 20:41    Titel: Antworten mit Zitat

Es ist ein Problem der Kommandostruktur bei AppleScript.

Zunächst wird bei einem Befehl mal geschaut, ob er zum "Standard-Repertoire" von AppleScript gehört. Ist das nicht der Fall, geht die Suche bei den Scripting Additions weiter.

Der Read-Befehl ist Bestandteil der Standard Additions.
Wenn man diesen Befehl nun in einen Tell-Block packt, der an ein Programm gerichtet ist, versucht nun zuerst dieses Programm, mit dem Befehl klar zu kommen. Klappt das nicht, wird der Befehl erst danach an die Scripting Additions weiter gegeben.

Die Befehlskette wurde also unnötig verlängert - und das ist immer ein Risiko.

Gruß
_________________
Peter
-
Fischer-Bayern.de|Shadetreemicro.com
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> AppleScript X 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