Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Textdatei lesen/schreiben Phänomen (https://www.delphipraxis.net/195961-delphi-textdatei-lesen-schreiben-phaenomen.html)

Moombas 11. Apr 2018 09:29

Delphi-Version: 5

Delphi Textdatei lesen/schreiben Phänomen
 
Moin zusammen, ich schreibe eine Logdatei (.txt) und öffne sie danach im Programm in einer Stringlist.

Code:
//Log schreiben
    assignfile(logf, ExtractFilePath(ParamStr(0)) + '\Log.txt');
    reset(logf);
    append(logf);
    writeln(logf,DateToStr(Now) + ' - '
               + TimeToStr(Now) + ' - '
               + GetCurrentUserName + '- '
               + ExcelE.Text + ' - gespeichert');
    closefile(logf);
    //Log im Programm aktualisieren
    LogList.Items.Clear;
    LogList.Items.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Log.txt');
Das Phänomen was dabei nun auftritt ist folgendes:

Im Log steht (wenn ich ihn im Editor öffne) alles korrekt drin aber in der Stringlist (bei Memo das gleiche) geht er nur bis zum Benutzernamen und schneidet dann ab und zeigt dann auch folgende Logs nicht mehr an.
Code:
11.04.2018 - 10:20:12 - "Benutzername"
Öffne ich die Datei im Editor und speichere sie einmal (ohne Änderungen) wird sie korrekt angezeigt. Jemand eine Idee?

Neutral General 11. Apr 2018 09:32

AW: Delphi Textdatei lesen/schreiben Phänomen
 
Schreib die Logdatei doch genauso mit der Stringlist wie du sie lädst.
Oder nutz zumindest einen Stream o.ä. statt der uralten Turbo-Pascal Prozeduren :roll:

samso 11. Apr 2018 09:36

AW: Delphi Textdatei lesen/schreiben Phänomen
 
Dein GetCurrentUserName liefert vermutlich einen String der am Ende einen 0-Char enthält. Schau dir die Logdatei mal mit einem Hex-Editor an.

Moombas 11. Apr 2018 09:36

AW: Delphi Textdatei lesen/schreiben Phänomen
 
Das hilft mir aber nach dem Neustart des Programms nicht :roll: und löst das Problem auch nicht.

Da kann eigtl. kein 0- String drin sein, da alles definiert ist (Das Editfeld ist nie leer).


Im Hexeditor steht hinter dem Benutzernamen ein ".", bei den Zeilen die funktionieren (weil mal mit Texteditor gespeichert) nicht.

Habe nun den Punkt immer entfernen lassen, nun passt es.


Danke für den Tipp mit dem Hexeditor.

HolgerX 11. Apr 2018 09:57

AW: Delphi Textdatei lesen/schreiben Phänomen
 
Hmm..

Zitat:

Zitat von Moombas (Beitrag 1398742)
Im Hexeditor steht hinter dem Benutzernamen ein ".", bei den Zeilen die funktionieren (weil mal mit Texteditor gespeichert) nicht.

Dir ist bewust, das Hex-Editoren für 'nicht darstellbare' Zeichen wie u.A. #0 einen '.' zur Anzeige verwenden?

Welcher 'Wert' ist den in der Hex-Darstellung deiner LogFiles?
Ich gehe davon aus, dass da nach dem Usernamen ein 00 steht. ;)

Deshalb in Hex-Editoren immer in die Hexdarstellung der Bytes schauen und nicht im lesbaren Text!

p80286 11. Apr 2018 21:11

AW: Delphi Textdatei lesen/schreiben Phänomen
 
Zitat:

Zitat von Moombas (Beitrag 1398742)

Da kann eigtl. kein 0- String drin sein, da alles definiert ist (Das Editfeld ist nie leer).

Es geht um ein Byte mit dem Wert 0x00, das hinter dem Benutzernamen steht. Es kommt des Öfteren vor, daß Strings, die vom API geliefert werden, als letztes Zeichen 0x00 enthalten.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:08 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz