AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Auf den letzten char in einer Datei zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Auf den letzten char in einer Datei zugreifen

Ein Thema von kagi3624 · begonnen am 18. Feb 2020 · letzter Beitrag vom 19. Feb 2020
Antwort Antwort
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#1

AW: Auf den letzten char in einer Datei zugreifen

  Alt 18. Feb 2020, 13:05
Sorry, Bbommel hat recht, das war ein Copy/Paste Fehler.

So wäre es richtig bzw. Luckie hat ja auch schon die Anwendung von Delete gepostet.
Delete(sl.Strings[sl.Count-1], length(sl.Strings[sl.Count-1]) - 1, 1);
Ich bekomme aber folgenden Fehler bei dieser Zeile...

[Fehler] FRMMAIN.pas(3782): Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Auf den letzten char in einer Datei zugreifen

  Alt 18. Feb 2020, 13:24
Delphi-Quellcode:
var
  sl: TStringList;
  s: String;
Beginn
  // ...;
  s := sl.Text;
  Delete(s, 0, length(s)-1);
  sl.Text := s;
  sl.SaveToFile;
Michael
Ein Teil meines Codes würde euch verunsichern.

Geändert von Luckie (18. Feb 2020 um 13:37 Uhr)
  Mit Zitat antworten Zitat
DasWolf

Registriert seit: 7. Jun 2016
76 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

AW: Auf den letzten char in einer Datei zugreifen

  Alt 18. Feb 2020, 13:27
Sorry, Bbommel hat recht, das war ein Copy/Paste Fehler.

So wäre es richtig bzw. Luckie hat ja auch schon die Anwendung von Delete gepostet.
Delete(sl.Strings[sl.Count-1], length(sl.Strings[sl.Count-1]) - 1, 1);
Ich bekomme aber folgenden Fehler bei dieser Zeile...

[Fehler] FRMMAIN.pas(3782): Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden
Einfach den Zwischenschritt über eine Variable gehen.

Delphi-Quellcode:
var
  s: string;
begin
  s := sl.Strings[sl.Count-1];
  s := Trim(s);
  Delete(s, length(s), 1);
  sl.Strings[sl.Count-1] := s;
end;

Geändert von DasWolf (18. Feb 2020 um 13:37 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Auf den letzten char in einer Datei zugreifen

  Alt 18. Feb 2020, 13:39
Das trim ist eine gute Idee.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: Auf den letzten char in einer Datei zugreifen

  Alt 18. Feb 2020, 13:54
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.

Code:
procedure exportToCSV(Eintrag : string);
var
  strm : TFileStream;
  n : longint;
begin
  strm := TFileStream.Create('file.csv',fmCreate);
  n := Length(Eintrag);
  try
    strm.Position := 0;
    strm.Write(Eintrag[1], n);
    strm.Size := strm.Size - 1;
  finally
    strm.Free();
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Auf den letzten char in einer Datei zugreifen

  Alt 18. Feb 2020, 14:06
Warum einfach, wenn es kompliziert geht. Berücksichtigst du auch, ob es ANSI oder Unicode ist, wenn du ein Byte abschheidest?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

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

AW: Auf den letzten char in einer Datei zugreifen

  Alt 18. Feb 2020, 14:14
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.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (18. Feb 2020 um 14:17 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.517 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Auf den letzten char in einer Datei zugreifen

  Alt 18. Feb 2020, 14:11
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"?
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: Auf den letzten char in einer Datei zugreifen

  Alt 18. Feb 2020, 14:14
Wie kommst Du drauf, dass es sonst bei 0 anfängt? Was ist bei dir "sonst"?
Arrays?
  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 11:20 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