AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Änderungen an Textdatei speichern

Ein Thema von Sugar · begonnen am 31. Jan 2016 · letzter Beitrag vom 1. Feb 2016
Antwort Antwort
Seite 1 von 2  1 2      
Sugar

Registriert seit: 23. Jul 2012
83 Beiträge
 
#1

Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 13:36
Delphi-Version: 7
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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#2

AW: Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 13:39
Moin...
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... Die Frage lautet eher, warum willst du das selbst machen?

Geändert von haentschman (31. Jan 2016 um 13:43 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 13:51
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#4

AW: Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 13:55
...schon richtig. Aber warum das Rad nochmal erfinden. Mir ist nur das "muss ... schreiben" aufgestoßen.
  Mit Zitat antworten Zitat
Sugar

Registriert seit: 23. Jul 2012
83 Beiträge
 
#5

AW: Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 14:56
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.
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#6

AW: Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 15:06
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
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#7

AW: Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 15:07
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.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Sugar

Registriert seit: 23. Jul 2012
83 Beiträge
 
#8

AW: Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 15:41

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.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#9

AW: Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 15:45

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

SL[i] := string;
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Sugar

Registriert seit: 23. Jul 2012
83 Beiträge
 
#10

AW: Änderungen an Textdatei speichern

  Alt 31. Jan 2016, 15:48

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

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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:20 Uhr.
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