Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Änderungen an Textdatei speichern (https://www.delphipraxis.net/188101-aenderungen-textdatei-speichern.html)

Sugar 31. Jan 2016 13:36

Delphi-Version: 7

Änderungen an Textdatei speichern
 
Hallo Forum,

ich muss ein kleines Tool schreiben, dass eine CSV Datei mit vielen Feldern in einem Grid darstellt. Dazu lese ich die jede einzelne Textzeile in die Tabellen (mehre Tabellen da es unterschiedliche Satzarten gibt die ich in unterschiedlichen Grids drstelle)und schreibe zustätzlich zum Inhalt die Zeilennummer in die Tabellen.

Die Daten können in den Grids bearbeitet werden. Ich möchte nun, die geänderten Datensätze speichern und zwar so, dass ich beim post des Datensatzes nur die geändterte Zeile in der Original Textdatei ersetze. Ich muss also irgendwie über die Zeilennummer aus der Tabelle die Zeile finden. Ich hbe nur keine Idee wie ich über eine Zahl auf eine Textzeile in einer Textdatei zugreifen kann.

haentschman 31. Jan 2016 13:39

AW: Änderungen an Textdatei speichern
 
Moin...:P
Zitat:

ich muss ein kleines Tool schreiben, dass eine CSV Datei mit vielen Feldern in einem Grid darstellt
Das hat schon jemand gemacht und heißt EXCEL oder OpenOfficeCalc...:thumb: Die Frage lautet eher, warum willst du das selbst machen?

mkinzler 31. Jan 2016 13:51

AW: Änderungen an Textdatei speichern
 
Wenn man nur das entwickeln würde/dürfte, was es noch nicht gibt, gäbe es nicht mehr viel zu tun ;)
Es gibt verschiedene Lösungen eine CSV datei als dataset zu betrachten, diese könnte man dann in einen DBGrid darstellen und bearbeiten lassen.

haentschman 31. Jan 2016 13:55

AW: Änderungen an Textdatei speichern
 
:P ...schon richtig. Aber warum das Rad nochmal erfinden. :wink: Mir ist nur das "muss ... schreiben" aufgestoßen.

Sugar 31. Jan 2016 14:56

AW: Änderungen an Textdatei speichern
 
Rein technisch geht das natürlich auch mit Excel oder einem Editor. In der Datei sind technische und buchhalterische Daten nicht zusammenhängend aufgezeichnet. Während des Imports markiere ich logische wie buchhalterische Fehler und schlage fehlende Daten zur Korrektur vor die ich mir aus zwei anderen vorgelagerten Systemen hole. Außerderm muss mit einem Tool der Benutzer nicht zwingend alle Felder der Datensätze ansehen, er kann tpischerweise für ihn irrelevante Felder ausblenden.

Ich habe keinen anderen Weg gefunden als selbst etwas zu bauen und möchte nun vermeiden, dass einmalig die komplette Datei geschrieben wird, sondern jeder korrigierte Datensatz aktualisiert wird und der Benutzer diesen Datensatz als "bearbeitet" auch erkennen kann.

Wenn jemand eine bessere idee hat, gern! So würde ich eben nur gern einen Hinweis erhalten, wie ich eine bestimmte Zeile in der CSV Tabelle neu schreiben kann. Dabei ist es wichtig, die Datensatzreihenfolge in der CSV Datei unbedingt beizubehalten.

Ganz davon abgesehen bietet sich Excel oder ein Editor nicht an, da die Datei durchaus 50MB groß werden kann.

frankyboy1974 31. Jan 2016 15:06

AW: Änderungen an Textdatei speichern
 
hallo,

Zitat:

und möchte nun vermeiden, dass einmalig die komplette Datei geschrieben wird, sondern jeder korrigierte Datensatz aktualisiert wird
Das wird mit einer CSV-Datei aber schwierig werden. Da innerhalb einer CSV-Datei die einzelnen Zeilen keine feste Länge haben, kann man auch nicht eine einzelne Zeile ändern, und nur diese neu auf die Platte schreiben.

mfg

zeras 31. Jan 2016 15:07

AW: Änderungen an Textdatei speichern
 
Zitat:

Zitat von Sugar (Beitrag 1328866)
Ich habe nur keine Idee wie ich über eine Zahl auf eine Textzeile in einer Textdatei zugreifen kann.

Geht das vielleicht mit einer Stringlist?
Dort hast du einen Index auf eine bestimmte "Zeile". Diese musst du dann natürlich am Ende speichern.
Nur so eine Idee.

Sugar 31. Jan 2016 15:41

AW: Änderungen an Textdatei speichern
 
Zitat:

Zitat von zeras (Beitrag 1328880)

Geht das vielleicht mit einer Stringlist?

Daran habe ich auch schon gedacht und probiere damit gerade rum. Aber scheinbar kann man so ohne Weiteres nicht einfach nur eine Zeile ersetzen. Es wird mit nichts anderes übrig bleiben als:

- entweder alle meine Datensätze aus den Tabellen auf einmal in eine neue Datei zu schreiben, oder
- bei jedem POST die Stringlist durchlaufen, die Zeile identifizieren die bearbeitet wurde, diese neu schreiben.

zeras 31. Jan 2016 15:45

AW: Änderungen an Textdatei speichern
 
Zitat:

Zitat von Sugar (Beitrag 1328883)
Zitat:

Zitat von zeras (Beitrag 1328880)

Geht das vielleicht mit einer Stringlist?

Daran habe ich auch schon gedacht und probiere damit gerade rum. Aber scheinbar kann man so ohne Weiteres nicht einfach nur eine Zeile ersetzen.

Warum sollte das nicht gehen

Delphi-Quellcode:
SL[i] := string;

Sugar 31. Jan 2016 15:48

AW: Änderungen an Textdatei speichern
 
Zitat:

Zitat von zeras (Beitrag 1328885)
Zitat:

Zitat von Sugar (Beitrag 1328883)
Zitat:

Zitat von zeras (Beitrag 1328880)

Geht das vielleicht mit einer Stringlist?

Daran habe ich auch schon gedacht und probiere damit gerade rum. Aber scheinbar kann man so ohne Weiteres nicht einfach nur eine Zeile ersetzen.

Warum sollte das nicht gehen

Delphi-Quellcode:
SL[i] := string;

Oh mann... manchmal hat man sich echt so in einen falschen Weg verbissen, das man das Naheligenste nicht sieht. Ich probier das gleich mal aus...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.
Seite 1 von 2  1 2      

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