![]() |
Auf den letzten char in einer Datei zugreifen
Hallo, unfreiwilliger Delphi 6 User hier,
wie kann ich auf den letzten Char in der Textdatei zugreifen um den eventuell zu löschen? Hintergrund: Ich schreibe in eine CSV Einträge und möchte das letzte Komma einfach löschen, ohne dass es in den EOF zugreift oder mir sonstwie um die Ohren fliegt. Danke! :) |
AW: Auf den letzten char in einer Datei zugreifen
Lad die Datei in eine Stringliste. In der Eigenschaft Text hast du dann den Inhalt der Datei. Zum Löschen eines Zeichens, guck dir mal in der Hilfe Delete an:
![]() |
AW: Auf den letzten char in einer Datei zugreifen
.. ich würde die Datei in einen Stream laden, das Ende des Streams springen und schauen was für ein Zeichen sich da befindet.
Grüße Klaus |
AW: Auf den letzten char in einer Datei zugreifen
Vom Prinzip:
Delphi-Quellcode:
Ungetestet, bin mir gerade wegen der Zuweisung nicht sicher.
sl := TStringlist.Create;
sl.LoadFromFile(Text.csv); sl.Strings[Liste.Count-1]:= copy(sl.Strings[Liste.Count-1], 1, Length(sl.Strings[Liste.Count-1])-1); //Letztes Zeichen löschen |
AW: Auf den letzten char in einer Datei zugreifen
Eine Stringliste behandelt die Textdatei als das, was sie ist, als Zeichenkette. Und darauf kann man ganz einfach die Funktionen zur Zeichenkettenmanipulation anwenden.
@Moombas: Und warum nicht Delete?
Delphi-Quellcode:
Delete ( var Source : string; StartChar : Integer; Count : Integer )
|
AW: Auf den letzten char in einer Datei zugreifen
Das letzte Zeichen einer Datei erreichst Du mit
Delphi-Quellcode:
aber
seek(filesize-2)
Zitat:
Luckie hat ja schon den Weg der üblichen Datenbehandlung beschrieben. Gruß K-H |
AW: Auf den letzten char in einer Datei zugreifen
Zitat:
Delphi-Quellcode:
Delete(sl.Strings[sl.Count-1], length(sl.Strings[sl.Count-1]) - 1, 1);
nehmen^^ |
AW: Auf den letzten char in einer Datei zugreifen
Zitat:
|
AW: Auf den letzten char in einer Datei zugreifen
Zitat:
Gruß K-H |
AW: Auf den letzten char in einer Datei zugreifen
Zitat:
Delphi-Quellcode:
var
DateiHandle: THandle; dwBytesRead: Cardinal; Buf: Byte; begin DateiHandle := CreateFile('Dateiname.csv', GENERIC_READ, 0, nil, OPEN_EXISTING, 0, 0); if DateiHandle <> INVALID_HANDLE_VALUE then begin SetFilePointer(DateiHandle, -1, nil, FILE_END); ReadFile(DateiHandle, Buf, 1, dwBytesRead, nil); // Buf checken machen tuen ShowMessage(IntToStr(Buf)); CloseHandle(DateiHandle); end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz