Fallen beim Scripting

Squirrel

Mitglied
Dabei seit
06.02.04
Beiträge
210
#1
Hallo,

ich möchte die Scripter unter Euch auf zwei Fallen hinweisen.

Falle 1:
Die automatische Konfiguration im Scripteditor bzw. beim Start von FF nach Update auf eine neue Version entpackt unerbittlich alle ZIP-Dateien im FF-Scriptverzeichnis.
Dies ist mir auf die Füße gefallen bei folgendem Szenario:

Ich hatte ein als ZIP-Datei vorliegendes Script ins Scriptverzeichnis gelegt. Nach automatischer Konfiguration hatte ich die einzelnen Dateien (*.vbs (oder *.js) und Hilfedatei(en)) aus der ZIP im Scriptverzeichnis, das Script war in der FFSCRIPT.INI eingetragen und lief wunderbar.
Irgendwann habe ich an dem Script Veränderungen vorgenommen, und es lief noch besser.
Da nun alle drei Tage eine neue Beta von FF kommt, führte ich das FF-Update aus. Danach lief das Script wie in der Urform. Ein Blick in die *.vbs zeigte, das meine Neuerungen weg waren.

Was war passiert?
Bei der automatischen Konfiguration bleibt die ZIP-Datei im Scriptverzeichnis erhalten. Bei der nächsten automatischen Konfiguration, wie sie auch nach einem Update von FF durchgeführt wird, wird die ZIP-Datei erneut entpackt - und macht damit alle Änderungen an den Dateien, die in der ZIP stecken zunichte.

Schlußfolgerung:
Wenn ich an Scripten bastele und einen bestimmten Stand zum Hochladen ins Forum Zippe, lasse ich die ZIP-Datei nicht mehr im FF-Scriptverzeichnis stehen.

Falle 2:
gibts morgen oder übermorgen

Ralf
 

W.P.

Mitglied
Dabei seit
16.10.02
Beiträge
5.099
Standort
Anzing BY
#2
Zu Falle 1:
Sollte eigentlich nicht mehr vorkommen! Geändert in 2.76 - Nur ältere Versionen, egal welchen Dateityps sollten überschrieben werden (außer *.cfg), entscheidend ist das Dateiänderungsdatum. Bitte überprüfen und bei Bedarf Joachim in Beta-Test melden.

Grundsätzlich empfehle ich folgendes Vorgehen:
  • Alle Entwicklungsskripte nach Projekten in eigenen Verzeichnissen, da wo man sie schnell findet. Dann können Projekte und zugehörigen Entwicklungsfiles und auch Versuche, oder passende Informationen aus dem Internet zusammengefasst werden. Ob weitere Ordner dafür angelegt werden, ist eine Umfangssache. Hilfreich ist ein Link zum schnellen Erreichen des Projektverzeichnisses.
  • Entwicklungs-Skripte dann manuell in FF eintragen.
  • Nur fertige und/oder kompilierte Skripte werden zu Versuchszwecken in FF per AutoKonfig eingetragen.
  • Funktioniert ein Skript und stehen größere gravierende oder strukturelle Änderungen an: Alte Version sichern! Am besten in einem Unterverzeichnis (Backup) mit Version und Datum! Dann kann man zum letzten funktionierenden Ausgangspunkt zurück, oder auch weiter zurück, falls man sich verrannt hat.
  • Bei größeren Projekten: Bei festgestellten Bugs oder größeren Vorhaben, ToDo-Listen in Skript eintragen und je nach Aufarbeitungsstand wieder löschen. Warum im Skript? Wenn man ein Backup erstellt hat, weiß man gleich wieder, wo es in der jeweiligen Version Probleme gab oder was noch zu ändern war.
  • Fertige Installationspakete nach Möglichkeit mit Versionsangaben und/oder Fertigstellungsdatum archivieren, falls mal schnell zu alten Version zurück muß, weil auf einem Fremdrechner die aktuelle Version Probleme bereitet.
  • Geniale Funktionen rechtzeitig auslagern in eigene Verzeichnisse, so dass man sie bei neuen Projekten schnell wiederfindet. Gleiches gilt für funktionierende Klassen, die wiederverwendet werden können, wobei eigentlich gilt: Jede Klasse ist so zu konzipieren, dass sie wiederverwendet werden kann, schließlich steckt eine Menge Entwicklungsarbeit drin.

Schönen Gruß,
Werner.
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#3
Gleiches gilt für funktionierende Klassen, die wiederverwendet werden können, wobei eigentlich gilt: Jede Klasse ist so zu konzipieren, dass sie wiederverwendet werden kann, schließlich steckt eine Menge Entwicklungsarbeit drin.
Und wie verwenden wir sie wieder? Na so:

Execute CreateObject("Scripting.FileSystemObject").OpenTextFile(FF_GetScriptPath&"\clsWdwSelektion.vbs").ReadAll

Da muß man auch erst drauf kommen .... :)

Gruß Jochen
 

Squirrel

Mitglied
Dabei seit
06.02.04
Beiträge
210
#4
W. hat gesagt.:
Zu Falle 1:
Sollte eigentlich nicht mehr vorkommen! Geändert in 2.76 - Nur ältere Versionen, egal welchen Dateityps sollten überschrieben werden (außer *.cfg), entscheidend ist das Dateiänderungsdatum. Bitte überprüfen und bei Bedarf Joachim in Beta-Test melden.
Oh, da habe ich wohl hinter dem Mond gelebt. Es ist in den aktuellen FF-Versionen tatsächlich so, daß neuere Dateien nicht mehr überschrieben werden. Da habe ich wohl im Forum mal ein paar Artikel verpaßt.
Es ist wirklich schon lange her, daß ich damit auf die Nase gefallen bin (bei meinem "Diff"-Script, das war im März). Seitdem habe ich immer aufgepaßt, daß keine ZIPs im Scriptverzeichnis bleiben und garnicht gemerkt, daß mein "Verhütungsmittel" inzwischen nicht mehr notwendig ist.

Gruß Ralf
 
Dabei seit
02.12.02
Beiträge
1.546
Standort
Lübeck
#5
Noch 'ne Falle:

Wenn Scripttext in Unicode abgespeichert wird, kann der FF-Editor sie nicht mehr lesen. Es werden nur wenige Zeichen angezeigt. Wenn man sich das Script vor dem Start nicht ansieht, kommt Fehlermeldung "Ungültiges Zeichen".
 

Squirrel

Mitglied
Dabei seit
06.02.04
Beiträge
210
#6
Hallo,

etwas zeitverzögert noch das zweite eingangs angekündigte Problem. Wahrscheinlich sollte man den Thread doch in Beta&Bug-Rubrik verschieben.

Bei der automatischen Konfiguration der Scripte sollten VBS und JS Scripte berücksichtigt werden. Üblicherweise haben diese Scriptdateien die Endungen *.vbs oder *.js.

Die Konfigurationsroutine erwischt aber auch Dateien mit der Endung "*.vbsx" , wobei x für ein beliebiges Zeichen steht.

Im konkreten Fall hatte ich ein Script "script.vbs" mit einem Editor bearbeitet, der eine Backupdatei "script.vbs~" im gleichen Verzeichnis hinterlies. Damit existierten zwei Dateien, die das gleiche Script beschrieben. Der folgende automatische Konfigurationslauf fand die Backup-Datei "*.VBS~" und ordnete sie an Stelle der "*.VBS" in das Scriptmenü ein.

Äußerlich war alles in Ordnung, aber das Script ließ sich nicht starten. Erst ein Blick in die FFSCRIPT.INI zeigte mir die Ursache,

Gruß Ralf
 
Oben