Entwickler-Ecke

Dateizugriff - in .log speichern


tha_blaze - Di 18.01.05 14:54
Titel: in .log speichern
Mahlzeit :D

ich hab ein prog geschrieben was dateien aus einem ordner ausliest das wird durch einen timer verursacht. die dateien werden in einem memo aufgelistet und sollen in einer .log gespeichert werden. der timer soll das alle 5 sek tun und das ganze 5mal also soll am ende in der log datei alle dateien 5mal aufgelistet sein bisher kriege ich das bloß so hin das alle dateien 1mal drinstehen.

hier noch ein wenig source zum verstehen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if zaehler=5 then
  begin
   close;
  end
  else
  begin
    zaehler:= zaehler+1;
    s:=TStringlist.Create;
    ListFileDir('c:\medlinq\easy\*.*',s);
    memo1.Clear;
    memo1.Lines.AddStrings(s);
    s.Free;
    memo1.Lines.SaveToFile('test.log');
    end;
end;


thx


AXMD - Di 18.01.05 15:01
Titel: Re: in .log speichern

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if zaehler=5 then
  begin
   close;
  end
  else
  begin
    zaehler:= zaehler+1;
    s:=TStringlist.Create;
    ListFileDir('c:\medlinq\easy\*.*',s);
    memo1.Clear;
    Memo1.Lines.LoadFromFile('test.log');
    memo1.Lines.AddStrings(s);
    s.Free;
    memo1.Lines.SaveToFile('test.log');
    end;
end;


Hätt ich so gelöst

AXMD


jasocul - Di 18.01.05 15:03

SaveToFile überschreibt immer die angegebene Datei.
Du musst dir eine zweite StringList anlegen, in der alle Daten gesammelt werden. Diese speicherst du dann zum Schluss mit SaveToFile.


AXMD - Di 18.01.05 15:06

Wobei mein Vorschlag mit LoadFromFile sicher auch funktionieren würde ;)

AXMD


jasocul - Di 18.01.05 15:07

AXMD hat folgendes geschrieben:
Wobei mein Vorschlag mit LoadFromFile sicher auch funktionieren würde ;)

Logisch. Du warst nur schneller als ich beim posten.


tha_blaze - Di 18.01.05 15:18

kann es sein das man die log datei am ende auch freigeben muss weil ich hab das programm jetzt 2mal gestartet (also den timer 10mal durchlaufen lassen) und in der log waren dann alle diese dateien aber er soll ja bloß 5mal die dateien anzeigen. also muss die datei doch am ende wieder freigegeben werden oder irre ich mich da...

thx


jasocul - Di 18.01.05 15:32

Du musst beim ersten Durchlauf die Datei erstmal löschen, wenn sie schon existiert. Am einfachsten mit einem SaveToFile, wenn im Memo noch nichts drin steht.


tha_blaze - Di 18.01.05 15:34

kann ich dann nich savetofile vor dem:

Delphi-Quelltext
1:
   memo1.Clear;                    

ja das klappt alles klar habt dank meine kompetenten retter... :rofl:


jasocul - Di 18.01.05 15:42

Nein. Dann würde dir das Sammeln aus den 5 Durchläufen fehlen.
Du kannst auch im Create der Form mit der Funktion FileExists feststellen, ob die Datei existiert. Mit DeleteFile löscht du dann die Datei, falls sie existiert.
Die Funktionsaufrufe sind nicht schwierig und stehen gut dokumentiert in der OH.


tha_blaze - Mi 19.01.05 11:16

doch es hat im groben geklappt aber mein chef wollte das irgendwie anders gemacht haben aber es funktioniert trotzdem :D jetzt soll ich das erst alles in einer tmp.log speichern und wenn das programm fretig is wird die datei umbenannt und die tmp.log wird gelöscht. da soll auch wieder am ende 5mal alle dateien drinstehen aber bisher stehen sie bloß einmal drinn. :puke:

thx 4 help 8)


AXMD - Mi 19.01.05 13:34

Hat dein Chef kein Kurzzeitgedächtnis, dass er das ganze gleich in fünffacher Ausführung braucht?

AXMD