AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FileStream von CSV-Datei um erste Zeile kürzen
Thema durchsuchen
Ansicht
Themen-Optionen

FileStream von CSV-Datei um erste Zeile kürzen

Ein Thema von PASST · begonnen am 8. Feb 2006 · letzter Beitrag vom 9. Feb 2006
Antwort Antwort
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#1

FileStream von CSV-Datei um erste Zeile kürzen

  Alt 8. Feb 2006, 11:24
Hi NG.

Delphi 4 (update 3)

Hintergrund:
Ich speichere von einer Webseite eine CSV-Datei per FileStream in eine Textdatei. Diese Textdatei lese ich anschließend mittels ASCIIDRV der BDE als Datentabelle ein.
Dabei muss ich zwei Dinge beachten:
a) Enthält die runtergeladene Datei den Text 'Keine Daten vorhanden', so kann und soll nichts ausgewertet werden.
b) Sind Daten vorhanden, so enthält die CSV-Datei in der ersten Zeile die Header-Daten/Feldnamen der Tabelle. Diese Zeile soll nicht in die Textdatei gespeichert werden.

Wie kann ich bereits beim Download Fall a) oder b) erkennen und darauf entsprechend beim Abspeichern in die Textdatei reagieren?

Mein Code:
Delphi-Quellcode:
  f := tfilestream.Create(sUhrkauf, fmOpenReadWrite);
  try
    HTTP.Get(sUrl, f);
    f.Seek(soFromBeginning, 0)
    if (fRead( .... = 'Keine Daten vorhanden.')
    then
      KEIN SPEICHERN IN TEXTFILE
    else
      SPEICHERE BIS AUF DIE ERSTE ZEILE IN TEXTFILE
  finally
    f.Free;
  end;
Wenn ich aber TFileStream richtig verstehe, speichert der bereits beim HTTP.Get alles in die Textdatei.

Kann mir jemand helfen?

gruß,
Peter

P.S.: Ich möchte nicht den Umweg gehen und die gesichter Textdatei als Textfile öffnen und dann bearbeiten.
  Mit Zitat antworten Zitat
PASST

Registriert seit: 30. Mär 2005
Ort: Krefeld
325 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: FileStream von CSV-Datei um erste Zeile kürzen

  Alt 8. Feb 2006, 13:55
Ich habe jetzt mal in diversen Foren geblättert und mir dünkt es, dass ich bzgl. Streams und Dateien etwas falsch verstanden habe.

Wenn ich das richtig verstehe, kann ich aus bestehenden Streams bzw. Dateien nichts herauslöschen. Stattdessen muss ich einen zweiten Stream oder eine zweite Datei anlegen, in die ich alles vor dem zu löschenden Teil liegende reinkopiere und dahinter alles dem zu löschenden Teil folgende hereinkopiere. Dh. bildlich dargestellt, ich habe nicht die Möglichkeit aus einem aufeinanderliegenden Stapel Bücher eines herauszunehmen und die Schwerkraft sorgt dafür, dass die restlichen Bücher nachrutschen.

Ist dieser Grundgedanke richtig?

Gruß
Peter
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#3

Re: FileStream von CSV-Datei um erste Zeile kürzen

  Alt 9. Feb 2006, 14:48
Zitat von PASST:
[...]Ist dieser Grundgedanke richtig?
Ich denk schon =)

Tipp:
Lade die Datei doch erstmal in einen TMemoryStream herunter
(falls sie die Dateigröße in Grenzen hält).

Dann kannst du erst einmal mit dem MemoryStream arbeiten,
bevor überhaupt irgendetwas auf der Festplatte passiert.

Tipp #2:
Um die erste Zeile abzuschneiden könntest du bis zum ersten Vorkommen von
#13#10 (Hex: $DA, "CR/LF" Windows Zeilenumbruch) suchen und dann erst nach
dieser Position anfangen den Inhalt des MemoryStreams per f.CopyFromStream()
in die Datei zu laden.

Hoffe das hilft etwas =)
Manuel
  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 06:18 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