Löschen - einfach so- ja wohl schon?

  • Was mich allerdings noch etwas irritiert :

    Ops, mein Fehler... das ist noch ein ungewolltes Überbleibsel (hab's korrigiert), da ich es vorher auch mit FileOpen versucht hatte, wo du dann ja in @extended die Länge übergeben bekommst. :saint:
    Da _WinAPI_CreateFileEx erfolgreich ausgeführt werden konnte, ist in @extended demnach eine 0, was für _WinAPI_LockFile dann wohl bedeutet, dass die komplette Datei damit gemeint ist.

    Man kann die _WinAPI_... Funktionen wohl nicht mal eben so mit Funktionen wie FileOpen mischen, korrekt ?

    Nein, kannst du nicht... weil AutoIt kein echtes Filehandle bei FileOpen liefert, was für die _WinAPI_... Funktionen aber zwingend erforderlich ist.

  • Ops, mein Fehler... das ist noch ein ungewolltes Überbleibsel (hab's korrigiert), da ich es vorher auch mit FileOpen versucht hatte, wo du dann ja in @extended die Länge übergeben bekommst. :saint:
    Da _WinAPI_CreateFileEx erfolgreich ausgeführt werden konnte, ist in @extended demnach eine 0, was für _WinAPI_LockFile dann wohl bedeutet, dass die komplette Datei damit gemeint ist.

    Nein, kannst du nicht... weil AutoIt kein echtes Filehandle bei FileOpen liefert, was für die _WinAPI_... Funktionen aber zwingend erforderlich ist.

    Hallo Bitnugger

    Danke für die schnelle Antwort.

    Meine Irritation bzgl. @extended war dann ja zum Glück doch nicht unbegründet. Ich dachte schon, ich bekomme heute gar nichts auf die Reihe ^^.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hier noch ein sehr schönes Beispiel... 8o

    LockFile 2.0 ;-)
  • Hallo Bitnugger

    Ja, erneut ein schönes Beispiel !

    Im Ablauf kommt es aber zu Fehlern, ich versuche das mal halbwegs zu beschreiben :

    1. Skript starten (Go) :

    -> Notepad wird geöffnet

    -> Am Ende des Skriptes (innerhalb von Notepad) wird folgendes angezeigt :

    -> Notepad schließen (X)

    -> Die Skriptanzeige in Scite ist nun leer

    -> ESC -> Notepad wird wieder angezeigt

    -> Notepad schließen (X)

    -> Die Skriptanzeige in Scite bleibt leer

    2. sauberes Skript erneut starten (Go) :

    -> Notepad wird geöffnet

    -> Am Ende des Skriptes (innerhalb von Notepad) wird folgendes angezeigt (s.o.)

    -> In Notepad ESC drücken

    -> Die Skriptanzeige in Scite bleibt erhalten, ist am Ende aber wieder fehlerhaft :

    AutoIt
    ...
    Run('notepad.exe ' & @ScriptFullPath)
        Exit
    EndFuncConsoleWrite('Test' & @CRLF) 
    
    ; ********************************************************************************************************

    (Außerdem gibt es ganz am Ende auch noch ein Sonderzeichen)

    -> Notepad schließen (X)

    ==> so ist der Code am Ende auch gespeichert

    ==> erneutes Laden und Build führt zu Fehlern

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Im Ablauf kommt es aber zu Fehlern

    Nein... nicht wirklich, denn das Script macht genau das, was es soll. ,-)

    Am Ende des Skriptes (innerhalb von Notepad) wird folgendes angezeigt :

    Ja, dies passiert durch Zeile 35-37 im Script... womit ich zeigen wollte, das du selbst Daten an die geöffnete Datei anhängen darfst... jedoch nicht innerhalb des gelockten Bereich schreiben kannst... was in Zeile 31-32 passiert.

    Außerdem gibt es ganz am Ende auch noch ein Sonderzeichen

    Das passiert durch Zeile 36... weil dort die Position im File 1 Byte hinter das Ende des Files gesetzt wird und das "übersprungene" Byte dann als Chr(0) gespeichert wird. Allerdings wird das FileWrite in Zeile 28 ausgeführt und noch eine Zeile an die Datei angehangen... bevor notepad die Datei öffnen kann... weshalb das Null-Byte dann hinter dieser Zeile geschrieben wird. Wenn du das Chr(0) nicht magst, setzt du als Parameter für das FileSetPos in Zeile 36 einfach anstelle einer 1 eine 0. ;)

    so ist der Code am Ende auch gespeichert

    Tja, das liegt wohl daran, dass ich als Dateiname @ScriptFullPath verwendet habe. 8)

    erneutes Laden und Build führt zu Fehlern

    Würde mich auch schwer wunden, wenn dem nicht so währe... sehr gewundert hat mich aber, wie SciTE darauf reagiert und was passiert, wenn du die noch geöffnete Datei in notepad änderst und dann speichern willst!

  • Hallo Bitnugger

    Würde mich auch schwer wunden, wenn dem nicht so währe... sehr gewundert hat mich aber, wie SciTE darauf reagiert und was passiert, wenn du die noch geöffnete Datei in notepad änderst und dann speichern willst!

    Warum, und wo, etwas passiert, habe ich anhand des Codes schon verstanden ;).

    Ich wollte nur, und völlig kritikfrei, darauf hinweisen, dass das Skript nach dem Test nicht mehr lauffähig ist.

    Das mag den einen oder anderen Leser möglicherweise doch etwas verwirren. Der Grund ist, wie beschrieben und von Dir wohl auch beabsichtigt, dass der Test auf das laufende Skript selbst angewendet wird (-> @ScriptFullPath).

    Ich habe es daher - quick and dirty - mal so modifiziert, dass eine separate Testdatei (locktest.txt) verwendet wird :

    Allgemein :

    Wie SciTE bei @ScriptFullPath reagiert, und das Editieren->Speichern der Datei in Notepad, fand ich auch überraschend ^^.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."