Hallo Christoph,
Gut, dass es funktioniert. Hier, zur Ergänzung, wie man eine Textdatei einsetzen kann.
Beim ersten Aufruf wird der Anwender gebeten, den Zielordner für die Datei zu wählen.
Dann wird nur die Ziffer "1" in dieses Datei geschrieben, zurück in eine Variable
gelesen, in die Textbox gesetzt, die Zahl wird um eins erhöht und wieder in die Datei
geschrieben. Dies erreicht man durch 'set eof of file counterFile to 0'. Mit diesem
Setzten von 'eof' (= end of file) auf Null wird der Inhalt gelöscht.
Wenn die Datei mal nicht gefunden werden kann (verschoben, umbenannt, gelöscht), dann
erscheint ein Dialog, welcher den aktuellen Zählerstand anzeigt. Der Anwender kann
diesen Wert übernehmen oder einen neuen eingeben.
---
property saveCounter : 1
property counterFile : ""
if counterFile = "" then
set counterFile to ¬
((choose folder with prompt ¬
"Zielordner für Zählerdatei auswählen") as string) & "counter.txt"
writeFile("" & saveCounter)
end if
try
counterFile as alias
readFile()
writeFile(saveCounter)
on error
set bR to button returned of (display dialog "Die Zähler-Datei ist unauffindbar.
Der Zählerstand wäre: " & text -3 thru -1 of ("00" & saveCounter) & "
Neue Datei erzeugen?" buttons ¬
{"Abbruch", "Neuer Wert", "Alter Wert"} default button 3 with icon 2)
if bR = "Alter Wert" then
writeFile(saveCounter)
readFile()
writeFile(saveCounter)
else if bR = "Neuer Wert" then
set okay to 0
repeat while okay = 0
set ctrVal to text returned of (display dialog ¬
"Neuer Wert für den Zähler:" default answer "")
if ctrVal is not "" then
set okay to 1
repeat with i from 1 to count ctrVal
if character i of ctrVal is not in "0123456789" then
set okay to 0
exit repeat
end if
end repeat
end if
end repeat
writeFile(ctrVal)
readFile()
writeFile(saveCounter)
else
error number -128
end if
end try
on writeFile(ctr)
try
open for access file counterFile with write permission
set eof of file counterFile to 0
write ctr to file counterFile
close access file counterFile
on error
try
close access file counterFile
end try
end try
end writeFile
on readFile()
set aCounter to read file counterFile
set aNumber to text -3 thru -1 of ("00" & aCounter)
importCounter(aNumber)
set saveCounter to "" & (aCounter + 1)
end readFile
on importCounter(aNumber)
tell document 1 of application "QuarkXPress 4.11"
activate
tell current box
set story 1 to aNumber
end tell
end tell
end importCounter
---
Man könnte den Code mit Error-Handling ergänzen, damit die Meldungen etwas verständlicher
ausfallen, wenn kein XPress-Dokument geöffnet, oder eine Musterseite angezeigt oder keine
Textbox ausgewählt ist.
Und beim Überschreiten von "999" könnte man eine Dialog anzeigen lassen...
Hans Haesler, <a href="mailto:hsa@ringier.ch">hsa@ringier.ch</a>