[GastForen Programmierung/Entwicklung AppleScript QXP 7.31, Problem mit "do script"

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

QXP 7.31, Problem mit "do script"

Anonym
Beiträge gesamt: 22827

29. Nov 2007, 12:33
Beitrag # 1 von 14
Bewertung:
(2536 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo an alle,

seit langem schau' ich hier wieder mal vorbei,
in der Hoffnung einen guten Rat für mein Problem zu bekommen.

Ich habe ein umfangreiches Script, das unter anderem Text in eine Box setzt und diesen dann formatiert. Formatiert wird nach vorhandenen Absatz- und Zeichenstilen. Ich hole mir also zuerst eine Referenz auf den vorhandenen Stil und weise dem Text dann diese Referenz zu. Damit das Ganze schneller geht, wird es mit "do script" ausgeführt.

Das funktioniert unter OS 10.51 mit XPress 6.52 wunderbar, funktioniert aber nicht mehr mit XPress 7.31! Die Fehlermeldung lautet:
„QuarkXPress“ hat einen Fehler erhalten: „«class CHSS» of character 2 of text 1 of «class TXTB» 1 of document "Projekt6"“ kann nicht als „«class CSSP» "test" of document 1“ gesetzt werden.

Ich habe mein Skript mal so weit reduziert, dass der Fehler noch zu beobachten ist, aber sonst nichts unnötiges mehr dabei ist. An dem reduzierten Skript kann man jetzt sehr schön erkennen, dass es funktioniert, wenn es mit "run" aufgerufen wird, mit "do script" kommt aber der Fehler.

Weil ich sehr schnell eine Lösung brauche, baue ich mein Skript jetzt erst mal so um, dass es zuerst "do script" probiert, und dann im Fehlerfall auf "run" zurückfällt. Falls aber jemand eine Idee hat, wie man das Problem besser umschiffen kann, wäre ich für jeden Rat sehr dankbar.

Gruß Peter



-- mit run aufgerufen, funktioniert es
run qxp

-- mit "do script" leider nicht!
tell application "QuarkXPress"
   do script {qxp}
end tell


script qxp
   tell document 1 of application "QuarkXPress"
      if (count every text box) = 0 then
         set myBox to make new text box at beginning ¬
            with properties {bounds:{10, 10, 50, 50}}
         set text of myBox to "XXXX"
      end if
      set myStyle to a reference to style spec "Normal"
      set myCharStyle to a reference to character spec "Normal"
      tell text box 1
         tell text 1
            set style sheet to myStyle
            set character style of character 1 to myCharStyle
         end tell
      end tell
   end tell
end script
X

QXP 7.31, Problem mit "do script"

Hans Haesler
  
Beiträge gesamt: 5826

29. Nov 2007, 15:47
Beitrag # 2 von 14
Beitrag ID: #422140
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

ich kann Dein Problem nicht reproduzieren. Auch mit 'do script'
wird das Script ohne Fehlermeldung ausgeführt. Mit QXP 7.31.
Aber unter Mac OS X 10.4.10.

Doch wenn es bei Dir mit QXP 6.52 klappt, dann sollte der
Intel-Rechner nicht daran schuld sein.

Frage: Was geschieht, wenn das Script etwas umgestellt wird?
---
global myStyle
global myCharStyle

set myStyle to "Normal"
set myCharStyle to "Normal"

tell application "QuarkXPress 7.31"
   do script {qxp}
end tell

script qxp
   tell document 1 of application "QuarkXPress 7.31"
      if (count every text box) = 0 then
         set myBox to make new text box at beginning ¬
            with properties {bounds:{10, 10, 50, 50}}
         set text of myBox to "XXXX"
      end if
      tell text box 1
         tell text 1
            set style sheet to myStyle
            set character style of character 1 to myCharStyle
         end tell
      end tell
   end tell
end script
---
Vielleicht hilft es, wenn doppelte 'document 1' vermieden wird
(ein Mal in der Referenz und ein Mal im 'tell document'-Block).

Gruss, Hans


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Anonym
Beiträge gesamt: 22827

29. Nov 2007, 17:27
Beitrag # 3 von 14
Beitrag ID: #422141
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

erst mal vielen Dank für Deine rasche Antwort!

Deinen Einwand, das doppelte "document 1" könnte stören fand ich sehr gut, weil ich mich an böse Probleme mit so verschachtelten Adressierungen erinnern kann. Leider hilft es in diesem Fall nicht!

Ich habe Dein Skript sofort ausprobiert und bekam dann folgende Fehlermeldung: „QuarkXPress“ hat einen Fehler erhalten: Es wurde eine Referenz erwartet.

XPress 7.31 mit OS 10.5.1 auf einem Intel Mac braucht anscheinen tatsächlich eine Referenz um den Stil zu setzen, der Name reicht nicht aus. Ich habe auch noch 6.52 auf demselben Mac gestartet und auch hier wird der Stilname nicht akzeptiert.

Das interessante ist jetzt, dass mein Skript (mit den Referenzen auf die Stile) mit 6.52 läuft mit 7.31 aber nicht! (jeweils OS 10.5.1/Intel).

Ich baue jetzt eine Weiche in mein Skript damit ich "do script" umgehen kann, falls es notwendig ist. Vielleicht gibt es die richtige Lösung ja dann mit OS 10.52 oder XP 7.32.

Noch mal besten Dank und einen schönen Abend


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Hans Haesler
  
Beiträge gesamt: 5826

29. Nov 2007, 21:07
Beitrag # 4 von 14
Beitrag ID: #422142
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

es ist schon eigenartig, dass es mit QXP 6.52 funktioniert.

Hier noch ein Versuch. Diesmal mit Referenzen, aber ausserhalb
des 'tell document 1'-Blocks.
---
tell application "QuarkXPress"
   do script {qxp}
end tell

script qxp
   tell application "QuarkXPress"
      tell document 1
         if (count every text box) = 0 then
            set myBox to make new text box at beginning ¬
               with properties {bounds:{10, 10, 50, 50}}
            set text of myBox to "XXXX"
         end if
         set myStyle to a reference to style spec "Normal"
         set myCharStyle to a reference to character spec "Normal"
      end tell
      tell paragraph 1 of text 1 of text box 1 of document 1
         set style sheet to myStyle
         set character style of character 1 to myCharStyle
      end tell
   end tell
end script
---

Gruss, Hans


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

TMA
Beiträge gesamt: 399

30. Nov 2007, 06:26
Beitrag # 5 von 14
Beitrag ID: #422143
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
also bei mir läuft es auch nicht (keine der geposteten Versionen).

XPress 7.3.1
OS 10.4.11
Intel

Gruß
TMA


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Anonym
Beiträge gesamt: 22827

30. Nov 2007, 11:45
Beitrag # 6 von 14
Beitrag ID: #422144
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans, hallo TMA

danke Hans für Dein neues modifiziertes Skript und danke an TMA für die Info.

Das neue Skript bringt leider auch keinen Erfolg, aber wenigstens die Gewissheit, dass mit der Kombination XP 7.31 und OS 10.51 etwas faul ist. Mit der Modifikation stürzt XPress jetzt sogar ab!

Schlimm ist auch was TMA berichtet, dass das Problem sogar mit OS 10.4.11! Man kann ja noch erklären, man solle nicht Leopard verwenden, aber es ist halt viel schwieriger jemanden zu sagen er soll das kostenlose Update auf 10.4.11 nicht machen.

Anscheinend treten die Probleme jedoch nur zusammen mit "do script" auf. Meine Gegenprobe mit  "run" funktioniert auch mit Hans' letzer Modifikation einwandfrei.

Ich habe inzwischen einen Fehlerbericht an Apple und Quark geschrieben und berichte Euch, sobald ich eine Antwort habe.


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Anonym
Beiträge gesamt: 22827

30. Nov 2007, 14:45
Beitrag # 7 von 14
Beitrag ID: #422145
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo an alle,

leider kann ich schon wieder über einen weiteren Fehler berichten:

tell application "QuarkXPress"
   do script {ssn}
end tell


script ssn
   tell application "QuarkXPress"
      tell document 1
         set selection to null
      end tell
   end tell
end script


Das Script liefert den Fehler:
"„QuarkXPress“ hat einen Fehler erhalten: „selection of document 1“ kann nicht als „null“ gesetzt werden."

Für den Fall, dass nichts selektiert war. Wenn etwas selektiert war, dann gibt es keine Fehlermeldung, die Selektion bleibt aber bestehen!

Das gilt für XP 6.52 und 7.31 auf OS 10.5.1.
Eine Zugabe gibt es noch bei 7.31, hier wird "null" in die selektierte Textbox geschrieben!

Ohne "do script" gibt es kein Problem.

Ich verwende "do script" in einem umfangreichen Skript an vielen Stellen. Ich kann daher auch sagen, dass es vielen Fällen so gut und schnell funktioniert wie bisher.

Problematisch wird es, wenn

selection
set character style
set style sheet

vorkommt. Falls ich noch mehr entdecke, werde ich hier berichten.


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Hans Haesler
  
Beiträge gesamt: 5826

30. Nov 2007, 15:56
Beitrag # 8 von 14
Beitrag ID: #422146
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

danke für Deine neue Meldung ...

Die Fehlermeldung kann zwar leicht vermieden werden, indem das Aufheben der Auswahl vor den Aufruf des Script-Objekts verschoben wird. Deshalb ist dieses Problem beim Entwickeln eines Scripts nicht gravierend, weil die Einbusse an Performance nicht spürbar sein dürfte.

Aber: Sehr ärgerlich ist es, wenn bestehende Scripts erst wieder benutzt werden können, wenn sie entsprechend geändert worden sind.

Ich werde heute Abend prüfen, ob auf dem Intel-Rechner mit 10.4.10 auch dieselben Probleme bestehen. Und morgen werde ich versuchen, den Leoparden zu installieren, damit ich endlich mitreden kann ...

Gruss, Hans


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Anonym
Beiträge gesamt: 22827

30. Nov 2007, 17:07
Beitrag # 9 von 14
Beitrag ID: #422147
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

versau' Dir aber nicht das ganze Wochenende mit meinen Problemen!

Ich wünsche Dir jedenfalls ein schönes und angenehmes Wochenende!


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Hans Haesler
  
Beiträge gesamt: 5826

30. Nov 2007, 21:52
Beitrag # 10 von 14
Beitrag ID: #422148
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Peter,

keine Angst. Zudem sind es ja unsere Probleme ...

So ... zunächst habe ich die vier geposteten Beispiele auf meinem Mac Pro (2x 2.66 GHz Dual-Core Intel Xeon) gestartet. Mit QuarkXPress 7.31 unter Mac OS X 10.4.10.

Ergebnis: Alle 'do script'-Dinger funktionieren problemlos.

Dann habe ich – tollkühn – das Update auf Mac OS X 10.4.11 durchführen lassen und die Scripts erneut ab Skripteditor gestartet. Und wieder mit QuarkXPress 7.31.

Ergebnis: Alles in Ordnung. Keine Fehlermeldungen.
Warum es bei TMA nicht will, kann ich mir nicht erklären. Liegt es am Rechnermodell?

Gruss, Hans


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Bernhard Werner
Beiträge gesamt: 5131

1. Dez 2007, 11:40
Beitrag # 11 von 14
Beitrag ID: #422149
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,

hab' zwar keine Lösung, bei mir laufen aber alle Scripts anstandslos unter 10.4.11, QXP 7.3 und 7.31, gleicher Rechner wie Hans'.

Gruß
Bernhard


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Hans Haesler
  
Beiträge gesamt: 5826

1. Dez 2007, 15:55
Beitrag # 12 von 14
Beitrag ID: #422150
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
[ Hallo Bernhard, danke für die Bestätigung. ]

Hallo Peter,

ich habe jetzt den Leoparden installiert und auch QuarkXPress 7.0. Anschliessend noch das Upgrade auf 7.31 vorgenommen. Hat nicht geklappt. Die Programmversion wird immer noch als "7.0" angegeben. Werde ich später regeln.

Dein erstes Script gestartet. Vorsichtshalber mit 'run'. Funktioniert. Dann umgestellt auf 'do script'. Gestartet. Auf dem Schreibtisch erscheint sofort der Ordner "QuarkRescueFolder" ... Und das Programm reagiert nicht mehr, muss zwangsbeendet werden.

Und lässt sich auch nicht erneut starten. Meldung (in English): "Ein anderer Anwender benutzt bereits diese QuarkXPress-Kopie." Also: Session beenden. Nein, genügt nicht. XPress kann erst nach einem Neustart des Rechners erneut gestartet werden.

Auch die restlichen drei Scripts ausgeführt. Da kann ich Deine Beobachtungen bestätigen. Präzisierung beim vierten: Eine  Textbox muss mit dem Inhaltswerkzeug ausgewählt sein, damit 'null' eingesetzt wird.

Deprimierter Gruss, Hans


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

Hans Haesler
  
Beiträge gesamt: 5826

1. Dez 2007, 22:59
Beitrag # 13 von 14
Beitrag ID: #422151
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Leute,

jetzt habe ich das Upgraden auf QXP 7.31 auch geschafft.

[[ Gut zu wissen: Auch mit dem Updater 731 kann immer noch nicht eine 7.0-Version auf den Stand von 7.31 gebracht werden, Dazu muss mindestens eine 7.01 vorhanden sein. Aber je nach Umständen meldet dies Installer nicht. Am Ende verkündet er aber "Software erfolgreich upgedatet", doch die Version bleibt 7.0 ]]

Die Probleme mit 'do script' bleiben aber dieselben.

Zudem habe ich noch andere entdeckt (kein Zusammenhang mit 'do script'). Bei gewissen fundamentalen Befehlen wird die Fehlermeldung "unbekannter Objekttyp" gezeigt.

Mehr davon später.

Gruss, Hans


als Antwort auf: [#422139]

QXP 7.31, Problem mit "do script"

TMA
Beiträge gesamt: 399

3. Dez 2007, 06:31
Beitrag # 14 von 14
Beitrag ID: #422152
Bewertung:
(2535 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

dieses hier läuft jetzt bei mir. Keine Ahnung warum es vorher nicht wollte.

Zitat von author="Hans Haesler" date="1196366848" ---
tell application "QuarkXPress"
   do script {qxp}
end tell

script qxp
   tell application "QuarkXPress"
      tell document 1
         if (count every text box) = 0 then
            set myBox to make new text box at beginning ¬
               with properties {bounds:{10, 10, 50, 50}}
            set text of myBox to "XXXX"
         end if
         set myStyle to a reference to style spec "Normal"
         set myCharStyle to a reference to character spec "Normal"
      end tell
      tell paragraph 1 of text 1 of text box 1 of document 1
         set style sheet to myStyle
         set character style of character 1 to myCharStyle
      end tell
   end tell
end script
---


MacBook Pro 2,4 GHz Intel Core 2 Duo, 4 GB Ram, OS 10.4.11, XPress 7.31

Gruß
TMA


als Antwort auf: [#422139]
X