AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Textdatei lesen/schreiben Phänomen

Ein Thema von Moombas · begonnen am 11. Apr 2018 · letzter Beitrag vom 11. Apr 2018
Antwort Antwort
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#1

Delphi Textdatei lesen/schreiben Phänomen

  Alt 11. Apr 2018, 10:29
Delphi-Version: 5
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?
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Delphi Textdatei lesen/schreiben Phänomen

  Alt 11. Apr 2018, 10:32
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
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#3

AW: Delphi Textdatei lesen/schreiben Phänomen

  Alt 11. Apr 2018, 10:36
Dein GetCurrentUserName liefert vermutlich einen String der am Ende einen 0-Char enthält. Schau dir die Logdatei mal mit einem Hex-Editor an.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Delphi Textdatei lesen/schreiben Phänomen

  Alt 11. Apr 2018, 10:36
Das hilft mir aber nach dem Neustart des Programms nicht 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.

Geändert von Moombas (11. Apr 2018 um 10:50 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#5

AW: Delphi Textdatei lesen/schreiben Phänomen

  Alt 11. Apr 2018, 10:57
Hmm..

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!
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Delphi Textdatei lesen/schreiben Phänomen

  Alt 11. Apr 2018, 22:11

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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (11. Apr 2018 um 22:17 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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