Deutsch
Bugs und vermeintliche

@RTF("LoadRTF"... gibt leere Datei nicht frei

 

E.T.
Folgende Situation:

Wenn mittels @RTF("LoadRTF"... eine zuvor erzeugte, leere rtf-Datei geladen wird, wird diese nach dem Laden nicht wieder freigegeben, bis das Programm beendet wird. Dies tritt im Interpreter und in der fertigen exe auf.

Um das zu veranschaulichen, bitte ich den folgenden Quelltext zu starten und:
1. auf den Button 1. Die 3 Boxen in 3 Datein speichern  zu klicken
___Dann werden die RichEdits jeweils (ohne Fehler) in eine Datei geschrieben.
2. auf den Button 2. Die erzeugten 3 Datein neu einlesen  zu klicken
___Hier wird dann Fehler:6?? zurückgegeben

Wenn ich nun wieder auf den Button 1. ...  klicke (auch, wenn ich jetzt in Box 3 etwas reinschreibe), erhalte ich den Fehler 32. Das heist, die Datei ist noch geöffnet !! Das kann man ganz leicht nachvollziehen, wenn man die Datei RTF-Test_3.rtf  (wenn das Prog noch läuft) in z.B. Word öffnet und dort auf Speichern klickt. Man kann auch versuchen, bei noch laufendem Prog die 3 erzeugten rtf-Datein zu löschen, bei der ersten und der zweiten klappt das, bei der dritten wird verweigert. In diesem Zusammenhang ist mir auch aufgefallen, das ein Erase  auf die betreffende Datei kein %ioresult setzt (so bin ich erst drauf gekommen, das die Datei noch geöffnet ist). Interessant ist auch, das der Explorer kein Attribut "schreibgeschützt" bei dieser Datei anzeigt.

Hier mal mein Test-Code, ich hoffe, ich hab mich verständlich genug ausgedrückt:
KompilierenMarkierenSeparieren
Declare rtf_box&[], rtf_Btn&[]Ich liebe diese dynamischen Variablen
Declare Ende%, rtf_error%
Window 800,600
rtf_box&[1] = @Create("RichEdit",%HWnd,"RTF-Box 1",10,10,770,90)
rtf_box&[2] = @Create("RichEdit",%HWnd,"RTF-Box 2",10,110,770,90)
rtf_box&[3] = @Create("RichEdit",%HWnd,"",10,210,770,90)Diese Box bitte leer lassen !!
rtf_Btn&[1] = @Create("Button",%HWnd,"1.   Die 3 Boxen in 3 Datein speichern",10,350,770,25)
rtf_Btn&[2] = @Create("Button",%HWnd,"2.   Die erzeugten 3 Datein neu einlesen",10,400,770,25)
Clear Ende%

WhileNot Ende%

    waitinput

    If @Clicked(rtf_Btn&[1])Speichern

        WhileLoop 3

            rtf_error% = @RTF("SaveRTF",rtf_box&[&loop],"RTF-Test_" + @str$(&loop) + ".rtf")
            Case rtf_error% : @messagebox("RTF-Fehler : "+@str$(rtf_error%),"FEHLER BEIM SPEICHERN, Datei : "+ @str$(&loop),64)
            Clear rtf_error%

        EndWhile

    Elseif @Clicked(rtf_Btn&[2])Laden

        SetText rtf_box&[1],""
        SetText rtf_box&[2],""
        SetText rtf_box&[3],""

        WhileLoop 3

            rtf_error% = @RTF("LoadRTF",rtf_box&[&loop],"RTF-Test_" + @str$(&loop) + ".rtf")
            Case rtf_error% : @messagebox("RTF-Fehler : "+@str$(rtf_error%),"FEHLER BEIM LADEN, Datei : "+ @str$(&loop),64)
            Clear rtf_error%

        EndWhile

    EndIf

EndWhile

end
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
06.12.2008  
 




Dieter
Zornow
Das ganze hat nichts mit der Freigabe zu tun, RTF() hat ein
Problem mit leeren RTF-Dateien. Es wird ja auch immer die 3. leere Datei
angemeckert.
Ich habe mal zuerst die Dateien erzeugt,
Das Programm dann beendet und einfach die vorher erzeugten Dateien eingelesen.
Der Fehler kam genauso.

Habe dann mit einem anderen Programm die 3. leere Datei geladen etwas geschrieben,
aber das neu geschriebene kann man auch hier nicht abspeichern.
Also kann man mit Profanmitteln eine leere bereits abgespeicherte RTF-Datei nicht neu
beschreiben.
Das Problem scheint aber schon seit der undokumentierten Call() zu bestehen, nur dass
damals eine Fehlermeldung kam. In RTF() kommt keine Fehlermeldung mehr aber das Problem
ist nicht behoben

Als workaround kannst du folgendes verwenden.

case gettext$(rtf_box[&loop]) = "":settext rtf_box&[&loop]," "

Wenn in allen 3 Dateien etwas steht, arbeitet dein Programm ohne Fehlermeldung.

Man kann von einem grundsätzlichen BUG in RTF() oder im Richedit ausgehen
Mit Wordpad geht es aber ohne Probleme und das verwendet doch bestimmt ebenfalls
ein Richedit.
 
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2
06.12.2008  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

2.446 Betrachtungen

Unbenanntvor 0 min.

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Dieter Zornow (1x)
E.T. (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie