avisynth.dll: Fehlermeldung auslesen.

  • Da Fr_An sich wohl ausgesperrt hat (:ani_lol:), übernehme ich mal die Antwort:

  • ASCII?

    Das Zeichen bekommt man mit CHR(aktByte).

    Die Datei wird byteweise gelesen. Fr_An hat eine Textdatei mit allen Zeichen, welche nach seiner Meinung in einem Script vorhanden sein können, erstellt. Beim Test hat er dann die Werte aus einer Liste gestrichen und den Rest in die Unit geschrieben.

    Nachtrag:

    Er hat zum Beispiel die ~ vergessen.

    Nachtrag: Anhang gelöscht. Aktuelle Version am Ende.

  • Ach so, du hast Fr_An's Quelltext analysiert - sag das doch!

    Ja, es ist zu vermuten, dass das Programm wohl die Skriptdateien analysiert hat, und beim Auftreten von Zeichen, die sonst nicht in Skripten und Verzeichnis+Dateinamen auftauchen sollten, mal ganz pessimistissch vermutet, dass das gar kein AviSynth-Skript ist (sondern z.B. ein WinAmp-Visualisierungs-Preset).

    So viele verschiedene Zeichen hätte Frank da aber nicht ausschließen sollen.

    Garf: Deine Version ändert bei mir übrigens nichts gegenüber der von Fr_An, und bringt ebenfalls eine Zugriffsverletzung beim laden der mitgelieferten "Version.avs"!

  • So, jetzt kann ich wieder selbst übernehmen.

    Habe mal alle Zeichen bis 127 aus der Überprüfung herausgenommen und wenn ein Fehler auftritt, kann man trotzdem laden. Wenn im Script kein Source oder Import angegeben ist, gibt es auch eine Warnung.

    Nachtrag: Anhang gelöscht. Aktuelle Version am Ende.

    Gruß Frank

  • Beim Öffnen der mitgelieferten "Version.avs", und der "TransOverTest.avs" im Anhang:

    ---------------------------
    AviSynth Error
    ---------------------------
    Zugriffsverletzung bei Adresse 0047A66A in Modul 'AVSError.exe'. Lesen von Adresse 00000000.
    ---------------------------
    OK
    ---------------------------


    Außerdem hat mein Windows 2000 leichte Darstellungsprobleme, weil du hier wohl Unicode aktiviert hast, wo es nicht nötig ist; anstatt "Länge" lese ich also "L[]ge".
    __

    ^ Danke für die Quelltexte - Zugriffsverletzung gefunden: In einer leeren Zeile darf man nicht fragen, ob das erste Zeichen ... da ist nämlich keins.

  • Unicode? :hm:

    WinXP SP2 und Delphi 7 Personal.

    Scheint dann doch was betriebssystemabhängiges zu sein.

    Bei der Schrift könnte es an der Schriftart liegen. Ich habe Courier New eingestellt. Allerdings wird das Vorhandensein nicht geprüft.

    Gruß Frank

  • Den Fehler mit der Schutzverletzung hat LigH gefunden. Es lag daran, dass ich nicht berücksichtigt habe, dass es auch Leerzeilen gibt.

    Das mit der Schrift klären wir noch.

    Nachtrag: Anhang gelöscht. Aktuelle Version am Ende.

    Gruß Frank

  • Dann hänge ich jetzt mal die aktuelle Version ran und lösche vorne alle anderen.

    Die japanischen Schriftzeichen könnten von einem Unicode-Test übriggeblieben sein. Kommt davon, wenn man eine Vorlage weiterverwendet.

    Hauptsache es klappt jetzt. Danke LigH.

    Nachtrag: Anhang gelöscht. Aktuelle Version unten.

    Gruß Frank

  • Zitat von Fr_An

    Das mit der Schrift klären wir noch.


    wegen : Höhe // Länge ???

    Und warum bekomm ich immer noch den Fehler, das es kein AVS ist?


    EDIT: Bild2 ist jetzt das aktuelle. ist aber immer noch was fremdes drin.

  • Zitat von katjarella

    wegen : Höhe // Länge ???


    Der Kauderwelsch im rechten Memo ist von Avisynth. Den werde ich jetzt mal weg lassen.

    Zitat von katjarella

    Und warum bekomm ich immer noch den Fehler, das es kein AVS ist?


    Das ist eine Warnung, weil kein Source oder Import gefunden wurde.

    Zitat von katjarella

    EDIT: Bild2 ist jetzt das aktuelle. ist aber immer noch was fremdes drin.


    Du meinst im Memo?

    Gruß Frank

  • Der Kauderwelsch mit den Kästchen waren keine Fehlermeldungen, sondern Pointer. Die Auswertung war fehlerhaft.

    In der anhängenden Version sind die bekannten Fehler beseitigt.

    Nachtrag: Anhang gelöscht. Aktuelle Version unten.

    Gruß Frank

  • So sieht's eigentlich ganz in Ordnung aus; es werden nur immer noch Skripte als "keine Scriptdatei" gemeldet, Obwohl sie ein "...source" enthalten, weil ich "...Script" mit großem "S" geschrieben habe; abgesehen davon halte ich diesen Test generell nicht für besonders nützlich, AviSynth wird das besser entscheiden können (Ergebnistyp = 'c' = Clip: Ist ein Skript).

    Ein "Skriptlet" bzw. Include, in welchem z.B. nur Konstanten und Funktionen deklariert werden (gern auch *.avsi benannt), sollte als Ergebnis keinen Clip liefern, sondern was anderes.

  • Es ist schon eigenartig. Das Script wird in eine Stringlist geladen und soll dann ausgewertet werden. Wird es aber anscheinend nicht. Weise ich die einzelnen Strings einer anderen Variablen zu, dann funktioniert es.

    Muss mal sehen, wie ich die Funktionen der avisynth_c.pas am besten bei der Prüfung einsetzen kann.

  • Zitat von Amnon82

    Könnte ich Deinen Code einsehen? Ich würd Dir auch meinen von AutoQ2 zur Einsicht linken.


    Beta-Versionen gebe ich grundsätzlich nicht raus. Hier hatte ich ausnahmsweise LigH um Hilfe gebeten, da er über erheblich mehr Erfahrung und mit Sicherheit eine bessere Ausbildung in Bezug auf Programmierung verfügt. An dieser Stelle noch einmal mein Dank an LigH.

    Im Prinzip sind die zu Grunde liegenden Sourcen alle öffentlich zugänglich.

    Anzeige per Vfw:
    http://www.swissdelphicenter.ch/de/showcode.php?id=1180
    http://www.delphipraxis.net/topic66869.html

    Anzeige per Avisynth:
    http://forum.doom9.org/showthread.php?p=695756#post695756
    http://yatta.mellbin.org/misc/avisynth_pascal_v4.rar

    Parsen des AVS:
    http://yatta.mellbin.org/misc/old/avisynth_pascal_v3.zip

    Der Ablauf ist prinzipiell so:

    • Öffnen-Dialog.
    • Überprüfen, ob die Datei eine Textdatei ist. Siehe hier, nur die Zeilen mit den Zeichen bis 127 entfernen.
    • Links die Anzeige entsprechend dem Projekt aus der Delphi-Praxis.
    • Einlesen des AVS. Suchen nach 'Import' und 'Source'. Bei Source Quelle entsprechend avisynth_pascal_v3 prüfen.
    • Anzeige in modifizierter Form entsprechend avisynth_pascal_v4. Dabei wird das AVS erst importiert und der vtype ausgewertet.
    • Eventuell AVISource verwenden.
    • Farbbereich auswerten und ggfs ConvertToRGB ausführen.

    Aktuelle Version ist im Anhang. Ich überlege, ob ich das Parsen noch ausbaue.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!