Delphi-PRAXiS
Seite 3 von 4     123 4      

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)

Luckie 18. Feb 2020 14:06

AW: Auf den letzten char in einer Datei zugreifen
 
Warum einfach, wenn es kompliziert geht. Berücksichtigst du auch, ob es ANSI oder Unicode ist, wenn du ein Byte abschheidest?

freimatz 18. Feb 2020 14:11

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

Zitat von kagi3624 (Beitrag 1457795)
Habe das jetzt über TFileStream gelöst. Ich kann meinen Kopf nicht über die Tatsache wickeln warum bei dem String der Index mit 1 und nicht 0, so wie sonst, anfängt.

Wie kommst Du drauf, dass es sonst bei 0 anfängt? Was ist bei dir "sonst"?

kagi3624 18. Feb 2020 14:14

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

Zitat von freimatz (Beitrag 1457798)
Wie kommst Du drauf, dass es sonst bei 0 anfängt? Was ist bei dir "sonst"?

Arrays?

Moombas 18. Feb 2020 14:14

AW: Auf den letzten char in einer Datei zugreifen
 
Zumal du den String immer übergibst beim Aufruf deiner Funktion anstatt "wirklich" die Datei und deren letzte Zeile auszulesen... irgendwie macht deine Lösung in meinen Augen nicht das was du eigentlich gefragt hast...

- Du rufst die Funktion mit dem String "abcxyz" auf.
- Du weist eine csv einem Stream zu
- Definierst die Länge deines übergebenen Strings
- Schreibst deinen String 1:1 in die csv
- Schneidest vom Stream 1 Byte ab (siehe Hinweis von Luckie!)

...

Du willst also bei JEDEM Eintrag in die CSV das letzte Zeichen abschneiden!?
Warum machst du das nicht BEVOR du ihn in die CSV schreibst!?

....

Und wegen 1 und 0 habe ich mir das generell mal so gemerkt: Geht es um die Position starte mit 0, geht es um das Zeichen starte mit 1.
Ob das nun immer hin haut weiß ich nicht aber bisher passte es.

Sherlock 18. Feb 2020 15:36

AW: Auf den letzten char in einer Datei zugreifen
 
Darf ich kurz zur Klarstellung etwas dazwischen fragen? Die CSV Datei erstellst Du doch selbst, richtig? Warum nicht zum Zeitpunkt der Erstellung das überflüssige Zechen entfernen/vermeiden?

Sherlock

kagi3624 19. Feb 2020 06:58

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

Zitat von Sherlock (Beitrag 1457818)
Darf ich kurz zur Klarstellung etwas dazwischen fragen? Die CSV Datei erstellst Du doch selbst, richtig? Warum nicht zum Zeitpunkt der Erstellung das überflüssige Zechen entfernen/vermeiden?

Sherlock

Hallo Sherlock...weil ich in Delphi neu bin und kommend von anderen Programmiersprachen es alles so unglaublich kompliziert für mich aussieht. So schneidet man z.B. das letzte Stringzeichen in D weg.

Code:
str = str[0..$-1];
Wie geht es in Delphi?

DieDolly 19. Feb 2020 07:03

AW: Auf den letzten char in einer Datei zugreifen
 
Mit Delete().
Wurde auf der ersten Seite doch verlinkt.

Von welcher Sprache kommst du?

KodeZwerg 19. Feb 2020 08:11

AW: Auf den letzten char in einer Datei zugreifen
 
Vielleicht hilft Dir das hier...
Delphi-Quellcode:
procedure SchreibeCSV;
var
  Inhalt: TStringList;
begin
  Inhalt := TStringList.Create;
  try
    Inhalt.Add('abc,123,xyz');
    Inhalt.SaveToFile('Dateiname.csv');
  finally
    Inhalt.Free;
  end;
end;
So könnte man eine frische Datei erzeugen.
Per Inhalt.Add was auch immer einfügen.
Per SaveToFile abspeichern, fertig.
Viel Spass.

dummzeuch 19. Feb 2020 08:33

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

Zitat von kagi3624 (Beitrag 1457862)
Code:
str = str[0..$-1];
Wie geht es in Delphi?

Such' Dir was aus:

Delphi-Quellcode:
Delete(Str, Length(Str), 1);
str := LeftStr(Str, Length(Str)-1);
str := Copy(str, 1, Length(Str)-1);
SetLength(str, Length(Str)-1);
Und wenn es ein ShortString ist, geht auch:
Delphi-Quellcode:
Str[0] := AnsiChar(Byte(Str[0])-1);

Aber das will man nicht wirklich, zumal es bei normalen Strings zu Laufzeitfehlern führt.

Und ich habe bestimmt noch Möglichkeiten vergessen.

Jasocul 19. Feb 2020 09:42

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 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.

Du erstellst also selbst diese CSV-Einträge.
Ich würde die CSV-Datei gleich korrekt füllen.
Dann sparst du dir das Gemurkse mit Datei einlesen, das letzte Zeichen löschen und die Datei neu speichern.

Vermutlich erstellst du in einer Schleife die Zeileneinträge. Für jeden Durchlauf der Schleife mit Trennzeichen. Da kannst du schon nach der Schleife das letzte Zeichen löschen oder beim letzten Durchlauf einfach das Trennzeichen weglassen.

Also Fehlerursache beheben und nicht hinterher daran rumbasteln.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Seite 3 von 4     123 4      

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