Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi dateien nacheinander einlesen (https://www.delphipraxis.net/70232-dateien-nacheinander-einlesen.html)

toredo 27. Mai 2006 11:14


dateien nacheinander einlesen
 
hay,

ich habe ja grade ein tagebuch gemacht, eine einzige funktion möchte ich da aber noch einbauen:
ich möchte machen, dass man, wenn man grade mal will, alle einträge in eine einzige txt speichern lassen kann.
die einträge werden so gespeichert:
dd.mm.yyyy.tb und dd.mm.yyyy.tb2

dann müsste das programm also zuerst die älteste dd.mm.yyyy.tb2 lesen um einige infos zu holen diese müssten dann in die txt geschrieben werden, dann sollte die dd.mm.yyyy.tb gelesen werden und der beitrag in die txt geschrieben werden.
dann wird die zweitälteste dd.mm.yyyy.tb2 gelsesen, die infos werden geschrieben, dann wird die dd.mm.yyyy.tb gelesen und wieder der eintrag geschrieben.
...
das passiert halt so lange bis alle einträge geschrieben sind.


um zu erkennen hab ich mir das so gedacht, aber ich weiss end wie ich das umsetzen kann:
das programm sucht nach ner datei die so aufgebaut ist: 01.01.2006
falls die datei existiert wird sie eingelesen ansonsten, sucht das programm ne datei die so heisst: 02.01.2006, und dann sucht es immer weiter ne datei halt bis das datum so ist wie das von heute+1tag.

kann mir bitte jemand helfen das ganze umzusetzen?



mfG toredo

Klaus01 27. Mai 2006 11:18

Re: dateien nacheinander einlesen
 
Schau Dir mal die Funktionen

FindFirst, FindNext und FindClose an

damit müßte sich das realisieren lassen.

Mußt halt noch etwas drumherum bauen.

Grüße
Klaus

himitsu 27. Mai 2006 11:41

Re: dateien nacheinander einlesen
 
Wie bereits gesagt, per FindFirst/FindNext die Dateien suchen (*.tb) und eine StringList, oder ein StringArray eintragen und dann die *.tb2 suchen und auch eintragen (wenn es zu jeder *.tb immer eine *.tb2 gibt, dann brauchste die *.tb2 nicht suchen, da du ja beim einlesen einfach nur die "2" dan den Dateinamen der *.tb anzuhängen brauchst).

Dann die Liste mit den Dateien sortieren.
Das würde sich aber einfacher machen, wenn du die Dateien yyyy.mm.dd.tb nennst, dann können einfach die Strings/Dateinamen per "<" und ">" verglichen werden ... so mußt du den Dateinamen ja zerlegen und Jahr/Monat/Tag einzeln vergleichen. (außerdem wären die Dateien dann auch im Explorer in 'ner "guten" Reinfolge :roll: )

und am Ende muß nur noch diese Liste abgegangen und die Dateien eingelesen werden. ^^

toredo 27. Mai 2006 11:45

Re: dateien nacheinander einlesen
 
thx für die antworten, dieses findfirst/next/close werd ich mir mal anschauen.

Zitat:

Das würde sich aber einfacher machen, wenn du die Dateien yyyy.mm.dd.tb nennst. dann können einfach die Strings per "<" und ">" verglichen werden ... so mußt du den Dateinamen ja zerlegen und Jahr/Monat/Tag einzeln vergleichen. (außerdem wären die Dateien dann auch im Explorer in 'ner "guten" Reinfolge Rolling Eyes )
das werde ich auch gleich mal machen.

mfG toredo


-edit-

ich hab mal gemacht, dass die eintrage die namen in dme format bekommen:yyyy.mm.dd.tb

aber mit findfirst/next/close habe ich ein problem:o
ich wollte mal ein kleines testprojekt machen um diese funktionen mal näher kennenzulernen, und da hab ich mal mit findfirst begonnen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SR: TSearchRec;
begin
FindFirst('D:\Benjamin\tagebuch2\mitpw\data\*.tb', faAnyFile, SR);
FindNext(SR);
FindClose(SR);
end;

end.
jetzt werden (hoffentlich^^) die dateinamen in SR gespeichert, aber weiter komm ich irgendwie ned...



mfG toredo

thkerkmann 27. Mai 2006 13:33

Re: dateien nacheinander einlesen
 
Hi,

nee so geht das auch nicht..... :-)

Delphi-Quellcode:
var
  error: integer;
  sr: tSearchrec;
  pfad: string;
  dateiname: string;
begin
  pfad := 'c:\meindateipfad\';
  error := FindFirst(pfad + '*.txt', faAnyfile, sr);
  while error = 0 do
  begin
    dateiname := pfad + sr.name;

    // tu was mit der datei

    error := FindNext(sr);
  end;
  FindClose(sr);
end;

toredo 27. Mai 2006 15:20

Re: dateien nacheinander einlesen
 
hay,

thx für den code, :-D
Zitat:

Zitat von thkerkmann
nee so geht das auch nicht..... :-)

hab ich mir irgendwie auch gedacht, weil das ganze hat ned so schön ausgesehen.

ich werde das gleich umsetzen, danke für die hilfe:)


mfG toredo


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 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