[GastForen Programmierung/Entwicklung AppleScript 32 Kb Limit

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

32 Kb Limit

Anonym
Beiträge gesamt: 22827

5. Mai 2006, 08:04
Beitrag # 1 von 12
Bewertung:
(3341 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
laut Apple soll mit Applescript v2.0 das 32 Kb Limit nicht mehr existieren und Du hast mit Deinen Skripts keine Probleme (das Thema wurde bereits erörtert).
Bei meinem Skript tritt sowohl unter Panther (10.3.9), als auch unter Tiger (10.4.3) kurz der "spinning beach ball" und danach der Einfügecursor auf. Lösche ich irgendwelche Kommentare raus, klappt das kompilieren. Nur gibt es irgendwann keine Kommentarzeilen mehr, die man rauslöschen kann.
Weißt Du voran das liegen kann ???

Schöne Grüße aus Karlsruhe
Wolfgang
X

32 Kb Limit

Hans Haesler
  
Beiträge gesamt: 5822

5. Mai 2006, 08:53
Beitrag # 2 von 12
Beitrag ID: #420920
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Wolfgang,

eines meiner Scripts ist sehr umfangreich. Bei der geringsten Änderung dauert es nach dem Klick
auf "Übersetzen" (oder Enter-Taste) eine schöne Weile, bis sich der bunte Ball nicht mehr dreht.
Nach ungefähr 20 Sekunden ist das Kompilieren vollendet (G4/800, 1GB, Mac OS X 10.4.4).

Im Textformat gesichert und mit BBEdit geöffnet, zeigen mir die Infos folgende Werte:
Zeichen: 130'038, Worte: 21'762, Zeilen: 3822.

Welchen Umfang hat denn Dein Script?

Gruss, Hans


als Antwort auf: [#420919]

32 Kb Limit

Anonym
Beiträge gesamt: 22827

5. Mai 2006, 10:53
Beitrag # 3 von 12
Beitrag ID: #420921
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
habe das Script in TextWrangler geöffnet und folgende Informationen erhalten:
Characters: 239.269
Words: 26.537
Lines: 6.463
Bis jetzt habe ich das Script noch immer kompilieren können (nach Löschen von Kommentarzeilen), dann dauert es auf meinen Quicksilver 733GHz, 1Gb Hauptspeicher auch einige Sekunden bis der Ball mit drehen aufhört.
Am Wochenende werde ich meinen neuen G5 Quad (mit 2,5Gb Hauptspeicher) einweihen, mal sehen ob dort die Compilierungsprobleme immer noch auftauchen.

Schöne Grüße
Wolfgang


als Antwort auf: [#420919]

32 Kb Limit

Hans Haesler
  
Beiträge gesamt: 5822

5. Mai 2006, 11:13
Beitrag # 4 von 12
Beitrag ID: #420922
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Wolfgang,

ja, das ist happig! Da schlägst Du mein Monsterscript um Längen

Aber ausser dem Löschen von Kommentaren, gibt es noch eine andere Möglichkeit,
um den Code zu reduzieren. Nämlich das Optimieren des Ablaufs. Wenn zum Beispiel
immer die gleichen Wiederholungen vorkommen, dann kann man die entsprechende
Aktion in einen Handler packen. Die Aufrufe des Handlers zählen dann nur noch
ein paar Zeichen. Doch sehr wahrscheinlich hast Du das schon gemacht.

Ich sehe zwar immer wieder Scripts, in welchen unnötige Zwischenschritte
vorkommen. Auch hier gibt es viele Kürzungsmöglichkeiten.

Was führt denn das Script aus?

Gruss, Hans


als Antwort auf: [#420919]

32 Kb Limit

Anonym
Beiträge gesamt: 22827

5. Mai 2006, 12:36
Beitrag # 5 von 12
Beitrag ID: #420923
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
Das ist selbstverständlich, gleiche Wiederholungen in einen Handler zu packen, gehört zur Basis des effizienten Programmierens.
Das Script überwacht einen Hotfolder in den aus einem PHP-System XML-Dateien reingeschrieben werden. Abhängig vom Dateinamen weiß das Script in welchem Verzeichnis sich das entsprechende Indesigndokument befindet. Die XML-Datei wird mit einem eigens geschriebenen Parser analysiert. Befindet sich nur <root></root> im XML-Dokument, wird das Indesign-Dok komplett analysiert, d.h Textinhalte rausgeschrieben, versucht fehlende Bilder neu zu verlinken, Rahmenkoordinaten (in Punkt) und Fläche,...
Nach der Doku-Analyse werden zwei Dateien ausgegeben, eine CSV-Datei: dort ist der Rahmenname (sind die Rahmen nicht vertagged, weise ich ihnen abhängig ob Bild oder Textrahmen den Namen Bild001/Text001 mit fortlaufender Nummer zu), die Fläche und Koordinaten hinterlegt und eine XML-Datei: wo die Rahmennamen als Tag und deren Inhalt, oder bei Bilder der Pfad ausgegeben wird. Weiterhin wird noch ein PDF und JPG von den Seiten erstellt. Befindet sich in der XML-Datei der <update> Tag, dann wird die XML-Datei analysiert, d.h. die Rahmennahmen + Inhalt ausgelesen, in Indesign der zugehörige Rahmen gesucht und aktualisiert. Je nach Schalter der sich in der XML-Datei befindet, bekommt der aktualisierte Rahmen eine rote Umrandung. Es wird noch einiges mehr in dem Script gemacht, dann sitze ich aber noch stunden am schreiben  :-)

Schöne Grüße
Wolfgang


als Antwort auf: [#420919]

32 Kb Limit

Hans Haesler
  
Beiträge gesamt: 5822

5. Mai 2006, 13:28
Beitrag # 6 von 12
Beitrag ID: #420924
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Wolfgang,

welch ein Programm! :-) Tja  dann bleibt Dir nur noch die Hoffnung
auf die leistungsstärkere Maschine.

Gruss, Hans


als Antwort auf: [#420919]

32 Kb Limit

Anonym
Beiträge gesamt: 22827

8. Mai 2006, 08:02
Beitrag # 7 von 12
Beitrag ID: #420925
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
selbst mit der Höllenmaschine (G5 Quad) und Applescript v2.1.1 tritt dieses Phänomen auf. Zusätzlich habe ich noch etwas anderes kurioses festgestellt, wird das Script zum ersten Mal erfolgreich kompiliert, dann ist beim Aufrufen der Suchmaske (Apfel-F für Finden) das Feld für die Eingabe des "Suchstrings" zur Hälfte abgeschnitten, d.h. das Dialogfenster ist kleiner geworden und bleibt auch so. An einem anderen Rechner unter Tiger hatte ich genau das gleiche Phänomen, unter Panther tritt dies nicht auf. Nur mit dem Mammutscript tritt dieser Effekt auf, kleine Script bereiten keine Probleme.
Noch eine Bemerkung zu dem Script:
Es läuft nach dem ersten Start immer durch ("Stay open") und hat zwei Handler "on run" und "on idle". Übrigens auch die neueste ScriptDebuggerversion 4.02 kompiliert das Script erst nach löschen von Kommentarzeilen.

Grüße aus Karlsruhe
Wolfgang


als Antwort auf: [#420919]

32 Kb Limit

Hans Haesler
  
Beiträge gesamt: 5822

8. Mai 2006, 08:59
Beitrag # 8 von 12
Beitrag ID: #420926
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Wolfgang,

na dann bleibt Dir wohl nichts anderes übrig, als Kommentar-Zeilen zu löschen, Variablen-Namen
zu kürzen und das Script auf Optimierungsmöglichkeiten zu durchkämmen.

Bitte vergiss nicht die Anmeldung für einen Eintrag im "Guinness-Buch der Rekorde"! ;-)

Zum Problem mit der Such-Maske: Das ist ein Tiger-Bug, welcher mindestens bis und mit v10.4.4
vorhanden ist. Abhilfe findest Du im Thema "Skripteditor - Suchfenster" hier:
http://www.apfeltalk.de/forum/skripteditor-suchfenster-t32106.html
Der Beitrag enthält eine angehängte Datei und eine Anleitung.

Gruss, Hans


als Antwort auf: [#420919]

32 Kb Limit

Anonym
Beiträge gesamt: 22827

9. Mai 2006, 06:42
Beitrag # 9 von 12
Beitrag ID: #420927
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,
super, vielen Dank für den Suchmasken-Hinweis, werde ich gleich heute Abend ausprobieren !
Erst wenn das Script abgeschlossen ist, dann versuche ich einen Eintrag ;-)
Hier die Antwort auf die Größenproblematik von Late Night Software:
Yes, the AppleScript compiler runs into trouble when scripts grow too long
or too complex. We have never been able to figure out exactly what these
limits are since they are inter-related. However, scripts over 70-80K bytes
in length are pushing the limits of the compiler.

The solution is to break your code up into handlers that you can load from
library scripts. This allows you to compile you script in separate files
and then combine them. You can use Script Debugger's Libraries features or
AppleScript's load script command to load your library code.

Cheers
-Mark

Gruß
Wolfgang


als Antwort auf: [#420919]

32 Kb Limit

Hans Haesler
  
Beiträge gesamt: 5822

9. Mai 2006, 07:16
Beitrag # 10 von 12
Beitrag ID: #420928
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Wolfgang,

bitteschön. Ich habe die Korrektur der Suchmaske noch nicht gemacht, weil ich als
Mac-OS-Sprache meistens Francais oder English eingestellt habe. Und damit tritt
das Problem nicht auf.

Und auch das Aufteilen eine Scripts habe ich noch nie eingesetzt (nur vor vielen
Jahren die Theorie studiert). Auch nicht, als der Code unter Mac OS 8 (und 9)
an die 30'000-Zeichen-Limite stiess

Viel Glück!

Gruss, Hans


als Antwort auf: [#420919]

32 Kb Limit

TMA
Beiträge gesamt: 399

9. Mai 2006, 12:19
Beitrag # 11 von 12
Beitrag ID: #420929
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
bezüglich aufteilen eines scriptes:

http://www.page-online.de/page/forum/viewthread/2967/

Gruß
TMA


als Antwort auf: [#420919]

32 Kb Limit

Anonym
Beiträge gesamt: 22827

10. Mai 2006, 09:18
Beitrag # 12 von 12
Beitrag ID: #420930
Bewertung:
(3340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank für den Link-Hinweis, werde am Wochenende dran gehen das Script zu splitten.

Gruß
Wolfgang


als Antwort auf: [#420919]
X