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

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
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.686 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Auf den letzten char in einer Datei zugreifen

  Alt 19. Feb 2020, 08:33
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:
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.
Thomas Mueller
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.371 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Auf den letzten char in einer Datei zugreifen

  Alt 19. Feb 2020, 09:42
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.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.373 Beiträge
 
Delphi 12 Athens
 
#3

AW: Auf den letzten char in einer Datei zugreifen

  Alt 19. Feb 2020, 11:28
In mobilen Anwendungen (NextGen-Compiler) und in den neuen StringHelpern werden die Chars in den String ab 0 gerechnet.
Bei PChar der Offset sowieso schon immer mit 0.

PS: Weil der alte ShortString als im ersten Byte (0) die stehen Länge hat, fingen die Chars nunmal erst bei 1 an
und daher wurde im Pascal/Delphi dann auch die neueren LongStrings mit 1 begonnen, auch wenn dort nun das erste Zeichen intern auf Position 0 seht. (und die Verwaltungsdaten mit negativem Offset vor den Chars)

Statische arrays dind frei, in der Definition, aber ja, ei dynamischen Arrays fängt es bei null an.
Aber variante Arrays gäbe es auch noch und die sind auch komplett frei. (Typ Variant)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Auf den letzten char in einer Datei zugreifen

  Alt 19. Feb 2020, 11:40
Und am Besten man verlässt sich auf nichts und verwendet dann z.B. Low() - geht das bei String überhaupt?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.373 Beiträge
 
Delphi 12 Athens
 
#5

AW: Auf den letzten char in einer Datei zugreifen

  Alt 19. Feb 2020, 16:35
Und am Besten man verlässt sich auf nichts und verwendet dann z.B. Low() - geht das bei String überhaupt?
Ja, aber im XE ging Low(string) noch nicht ... wollte ich vor Kurzem mal verwenden.

Und ja, verlassen besser nicht, denn wer seine geliebte 1 nicht verlieren will, der kann {$ZEROBASEDSTRINGS OFF} .
http://docwiki.embarcadero.com/RADSt...trings_(Delphi)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:47 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