Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03647.jsonl.gz/1518

Quark letzte Textbox ermitteln / Fehler 609
Hallo zusammen,
ich versuche ein Quarkdokument auf möglichen Überlauf in der letzten Textbox einer Kette von Textboxen zu prüfen. Entweder ist der Überlauf in einer Textbox auf der Dokumentseite und wird mit dem Überlaufzeichen angezeigt oder der Überlauf steht steht in einer Textbox neben der Seite (und es wird kein Überlaufzeichen angezeigt).
Das Script funktioniert auch, per Selbstaufruf (my QuarkNextTB(TB, theDokName)) ermittle ich die letzte Textbox der verketten Textboxen und prüfe auf Inhalt. Leider kommt es immer wieder zu sporadischen Fehlern ( -609 Connection Is Invalid). Der Fehler ist nicht zuverlässig reproduzierbar, tritt nach einiger Zeit bei beliebigen Dokumenten immer wieder auf. Die Anzahl der verknüpften Textboxen variiert übrigens je nach Dokument.
Versuchsweise habe ich mit delay den Ablauf verzögert, ohne Erfolg.
Meine Frage wäre, was ich am Ablauf verbessern könnte? Gibt es eventuell eine andere Möglichkeit, die letzte Textbox einer Reihe verketteter Boxen zu ermitteln? Die von mir im Dokument gesuchte Verknüpfung startet übrigens immer in Textbox 1, ich suche also die zugehörige (letzte) Textbox von story 1
Danke und viele Grüße in die Runde,
Mirko
Anbei das Script
property debugflag : true
repeat
if my checkUeberlauf() is true then
exit repeat
else
delay 5
end if
end repeat
on checkUeberlauf()
try
tell application "QuarkXPress Passport"
if debugflag is true then set theDokName to name of document 1 -- nur im debugmodus, anonsten kommt der name über die fmdb
if (document theDokName exists) then
tell document theDokName
set selection to null -- Auswahl aufheben
set allboxes to count (every text box whose box overflows is true)
set FirstBox to text box 1
set LastBox_Text to (my QuarkNextTB(FirstBox, theDokName)) -- letzte Box ermitteln aus der Verknüpfungskette
set CurBox to object reference of LastBox_Text
--set Page_Name to name of page 1 of CurBox
set Page_Number to page number of page 1 of CurBox --Page_Number = "2001" or Page_Number = "2002" beudeutet Box steht neben der Seite
log "allboxes" & allboxes
if allboxes > 0 then
set ueberlauf_flag to true
else if the text of LastBox_Text is not "" and Page_Number as text = "2001" then -- Überlauf gefunden?
log "2001"
set ueberlauf_flag to true
else if the text of LastBox_Text is not "" and Page_Number as text = "2002" then -- Überlauf gefunden?
log "2002"
set ueberlauf_flag to true
else
log "nix"
set ueberlauf_flag to false
end if
if ueberlauf_flag is true then
show LastBox_Text
select LastBox_Text
if debugflag is true then display dialog "Überlauf"
else
if debugflag is true then display dialog "Kein Überlauf"
end if
end tell
end if
end tell
return true
on error errMsg number errnum
display dialog "Fehler bei Überlaufscript" & return & errMsg & return & errnum with title "Ueberlauf testen" with icon stop
end try
end checkUeberlauf
on QuarkNextTB(TB, theDokName)
tell application "QuarkXPress Passport"
tell document theDokName
if next text box of TB is not null then
my QuarkNextTB(next text box of TB, theDokName)
else
return TB
end if
end tell
end tell
end QuarkNextTB