AGB  ·  Datenschutz  ·  Impressum  







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

csv Datei bearbeiten

Ein Thema von ascotlx · begonnen am 4. Nov 2005 · letzter Beitrag vom 7. Nov 2005
Antwort Antwort
Benutzerbild von ascotlx
ascotlx

Registriert seit: 8. Mär 2005
Ort: Hamburg
97 Beiträge
 
Delphi 7 Professional
 
#1

csv Datei bearbeiten

  Alt 4. Nov 2005, 09:49
Hallo,

ich hab ein Problem und hoffe, dass mir jemand helfen kann - da ich mir mal wieder
selber im weg stehe.

Ich gebe in ein MaskEdit Feld eine Zahl ein, diese Zahl wird in einer csv Datei
gesucht und wenn diese gefunden wird, werden 9 weitere Edit und MaskEdit Felder mit
Werten gefüllt - bis dahin alles ok.
Nun wird in einem der Edit und/oder MaskEdit Felder ein Wert geändert. Jetzt soll die
Zeile, die in der cvs Datei steht mit den geänderten Werten angepasst werden.

Ich hatte schon diverse Ansätze, finde aber keinen funktionierenden Weg oder bleibe
auf der halben Strecke liegen.

Ich kann die geänderte Zeile an die Datei anfügen, damit habe ich aber noch die alte Zeile
in der Datei stehen.

Ich habe die Funktion EXPLOED aus diesem Forum benutzt, um mir die einzelnen Felder in ein
Array einzulesen ... aber ich weiss nicht weiter ...

Kann mir jemand helfen ??

Gruss

ascotlx
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#2

Re: csv Datei bearbeiten

  Alt 4. Nov 2005, 10:12
probier einfach was anderes, z.B.file of integer
So zu verwenden:
Delphi-Quellcode:
assignfile(f,filename); //Dateinamen zuweisen.
reset(f); //Datei öffnen.
seek(f,newpos); //An eine bestimmte Position springen.
filepos(f); //Gibt die Position in der Datei zurück.
read(f,v); //Liest ein Element der Datei (bei file of integer 4 Byte) in v ein.
write(f,v); //Schreibt v in die Datei. Das ursprüngliche Element wird überschrieben.
closefile(f); //Datei schliessen.
rewirte(f); //Datei wird erstellt/überschrieben und dann geöffnet.
erase(f); //Datei wird gelöscht. Nur möglich wenn nicht geöffnet.
filesize(f); //gibt die Anzahl der Blöcke in der Datei zurück.
eof(f); //gibt ein Bool zurück, ob das Dateiende erreicht wurde.
Michael Enßlin
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: csv Datei bearbeiten

  Alt 4. Nov 2005, 10:27
CSV Dateien haben keine feste Satzlänge.
Deshalb gibt es nur 2 Möglichkeiten eine CSV-Datei zu verändern.
  • die gesamte CSV-Datei wird in eine Stringliste eingelesen, verändert und dann wieder gespeichert
  • die CSV-Datei wird bis zum zu ändernden Record in eine hilfsdatei kopiert. Dann wird der geänderte Record an die Hilfsdatei angehängt. Der fehlende Rest wird von der CSV-Datei an die Hilfsdatei angehängt. CSV-Datei löschen und Hilfsdatei umbenennen
Schau dir mal meinen CSV Editor an. Man kann damit zwar noch nicht wirklich editieren,
aber es fehlt nicht mehr viel dazu.
http://www.delphipraxis.net/internal...ct.php?t=61227
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von ascotlx
ascotlx

Registriert seit: 8. Mär 2005
Ort: Hamburg
97 Beiträge
 
Delphi 7 Professional
 
#4

Re: csv Datei bearbeiten

  Alt 7. Nov 2005, 10:31
moin ,

danke für die Hilfe ...

falls es jedemanden interessiert, meine Lösung (bestimmt nicht schön .. funkioniert aber)
Ich arbeite nun mit einer Zwischendatei ...

Delphi-Quellcode:
procedure kddaten_schreiben(const Ergebnis: integer);
var
  zeile, file_in, file_out: string;
begin
  file_in:='c:\text.txt';
  file_out:='c:\text2.txt';

  if erg < 99 then // erg wird in einer anderen prozedur gesetzt
    begin
      // zwischendatei anlegen
      AssignFile(mc_filename2, 'c:\mc_liz_kd2.txt');
      {$I-}Rewrite(mc_filename2);{$I+}
      if IOResult>0 then
        ShowMessage('Fehler beim Anlegen der Zwischendatei');

      // kunden daten datei öffnen
      AssignFile(mc_filename, 'c:\mc_liz_kd.txt');
      {$I-}Reset(mc_filename);{$I+}
      if IOResult=0 then
      // bis zum ende der datei zeileweise lesen
      while not Eof(mc_filename) do
        begin
          Readln(mc_filename,zeile);
          if Pos(hdl,zeile) <> 1 then
            writeln(mc_filename2,zeile);
        end;
      // geänderte Zeile schreiben
      writeln(mc_filename2,frm_liz_mgr.MaskEdit4.Text+';'+frm_liz_mgr.MaskEdit5.Text+';'+frm_liz_mgr.Edit6.Text+';'+frm_liz_mgr.Edit7.Text+';'+frm_liz_mgr.MaskEdit1.Text+';'+frm_liz_mgr.Edit8.Text+';'+frm_liz_mgr.Edit9.Text+';'+frm_liz_mgr.Edit10.Text+';'+Trim(frm_liz_mgr.MaskEdit2.Text)+';'+Trim(frm_liz_mgr.MaskEdit3.Text)+';');
      CloseFile(mc_filename);
      CloseFile(mc_filename2);
      // Alte Datei löschen, Zwischendatei umkopieren
      deleteFile(file_in);
      RenameFile(file_out,file_in);
    end;

   // kunden daten datei öffnen
   AssignFile(mc_filename, 'c:\mc_liz_kd.txt');
   {$I-}Append(mc_filename);{$I+}
   if IOResult=0 then
     begin
       if erg = 100 then
         writeln(mc_filename,frm_liz_mgr.MaskEdit4.Text+';'+frm_liz_mgr.MaskEdit5.Text+';'+frm_liz_mgr.Edit6.Text+';'+frm_liz_mgr.Edit7.Text+';'+frm_liz_mgr.MaskEdit1.Text+';'+frm_liz_mgr.Edit8.Text+';'+frm_liz_mgr.Edit9.Text+';'+frm_liz_mgr.Edit10.Text+';'+Trim(frm_liz_mgr.MaskEdit2.Text)+';'+Trim(frm_liz_mgr.MaskEdit3.Text)+';');
     end;

   CloseFile(mc_filename);
end;
Gruss
ascotlx
  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 22:52 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