Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auf den letzten char in einer Datei zugreifen (https://www.delphipraxis.net/203448-auf-den-letzten-char-einer-datei-zugreifen.html)

kagi3624 18. Feb 2020 09:41

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! :)

Luckie 18. Feb 2020 09:47

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: http://www.bergt.de/workshop/delphi/html/funktion21.htm

Klaus01 18. Feb 2020 09:52

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

Moombas 18. Feb 2020 09:56

AW: Auf den letzten char in einer Datei zugreifen
 
Vom Prinzip:

Delphi-Quellcode:
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
Ungetestet, bin mir gerade wegen der Zuweisung nicht sicher.

Luckie 18. Feb 2020 09:57

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 )

p80286 18. Feb 2020 09:58

AW: Auf den letzten char in einer Datei zugreifen
 
Das letzte Zeichen einer Datei erreichst Du mit
Delphi-Quellcode:
seek(filesize-2)
aber
Zitat:

Zitat von kagi3624 (Beitrag 1457746)
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.

warum das? Meiner Meinung nach geht nichts über eine vernünftige Feldbegrenzung und warum solltest du überhaupt hinter dem Dateiende zugreifen?

Luckie hat ja schon den Weg der üblichen Datenbehandlung beschrieben.

Gruß
K-H

Moombas 18. Feb 2020 10:05

AW: Auf den letzten char in einer Datei zugreifen
 
Zitat:

Zitat von Luckie (Beitrag 1457753)
@Moombas: Und warum nicht Delete?

War mir jetzt zu einfach ^^ ... klar kann man auch

Delphi-Quellcode:
Delete(sl.Strings[sl.Count-1], length(sl.Strings[sl.Count-1]) - 1, 1);

nehmen^^

kagi3624 18. Feb 2020 10:07

AW: Auf den letzten char in einer Datei zugreifen
 
Zitat:

Zitat von p80286 (Beitrag 1457754)
warum das? Meiner Meinung nach geht nichts über eine vernünftige Feldbegrenzung und warum solltest du überhaupt hinter dem Dateiende zugreifen?
Gruß
K-H

Delphi (6?) behandelt ja auch nicht initialisierte Objekte als schon vorhandene Objekte und reicht die dann auch feucht fröhlich an andere Funktionen usw weiter. Man darf dann Stundenlang suchen, wo man dann T.create(); und nicht T := Tclass.Create(); hingedonnert hat oder gar weggelassen...Also mein Frustlevel mit Delphi ist ausgereizt.

p80286 18. Feb 2020 10:35

AW: Auf den letzten char in einer Datei zugreifen
 
Zitat:

Zitat von kagi3624 (Beitrag 1457757)

Delphi (6?) behandelt ja auch nicht initialisierte Objekte als schon vorhandene Objekte und reicht die dann auch feucht fröhlich an andere Funktionen usw weiter. Man darf dann Stundenlang suchen, wo man dann T.create(); und nicht T := Tclass.Create(); hingedonnert hat oder gar weggelassen...Also mein Frustlevel mit Delphi ist ausgereizt.

Mmm das passiert auch mir manchmal, ich halte das aber für meine Dusseligkeit.

Gruß
K-H

KodeZwerg 18. Feb 2020 10:36

AW: Auf den letzten char in einer Datei zugreifen
 
Zitat:

Zitat von kagi3624 (Beitrag 1457746)
wie kann ich auf den letzten Char in der Textdatei zugreifen

very oldschool, nur zum auslesen des letzten zeichen erstmal gedacht...
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 05:11 Uhr.
Seite 1 von 4  1 23     Letzte »    

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