![]() |
Daten aus String Grid an Logdatei anfügen
'loha Folks,
ich speichere Daten folgendermassen aus einem StringGrid in eine Datei ab.
Delphi-Quellcode:
Nun möchte ich aber, dass Diese Prozedur, welche alle Paar Minuten die Werte des StringGrids abspeichert, die alten Werde im File nicht überschreibt, sondern auf einer neuen Zeile und zusätzlich durch einen Zeitstempel abgetrennt alle neu eintreffenden Werte hinzufügt. Lediglich an einem neuen Tag soll auch ein neues Textfile erstellt werden.
procedure TFCDPS_Observer.LogFileTimerTimer(Sender: TObject);
var iRow: integer; DateStr: string; sl: TStringList; begin sl := TStringList.Create; DateStr := FormatDateTime('YYYY_MM_DD', Date); for iRow := 0 to sg_data_ld.RowCount - 1 do sl.Add(sg_data_ld.Rows[iRow].CommaText); sl.SaveToFile('C:\' + DateStr +'_DSC_Observer.log'); sl.Free; end; thx |
Re: Daten aus String Grid an Logdatei anfügen
Hai hinrstroem,
ich würde einfach prüfen ob es das Logfile schon gibt, wenn ja dieses erst in die StingList laden.
Delphi-Quellcode:
procedure WriteLogFile(aDataGrid: TStringGrid);
var iRow: integer; DateStr: string; sl: TStringList; filename: string; begin DateStr := FormatDateTime('YYYY_MM_DD', Date); filename := 'C:\' + DateStr + '_DSC_Observer.log'; sl := TStringList.Create; try if FileExists(filename) then begin sl.LoadFromFile(filename); end; for iRow := 0 to Pred(aDataGrid.RowCount) do begin sl.Add(aDataGrid.Rows[iRow].CommaText); end; sl.SaveToFile(filename); finally sl.Free; end; end; procedure TDemoForm.btn_LogClick(Sender: TObject); begin WriteLogFile(StringGrid1); end; |
Re: Daten aus String Grid an Logdatei anfügen
Hallo Leute.
Der Speichervorgang lässt sich noch "vereinfachen". Hier ein Beispiel ohne safety code:
Delphi-Quellcode:
Zur Timer-Routine: Der Timer sollte für die Dauer der Speicheraktivität deaktiviert werden. Wenn es eine Überschriftszeile im Grid gibt, dann muss die Laufvariable bei StringGrid.FixedRows starten.
procedure TFCDPS_Observer.SaveToLog(s: TStrings; fileName: string);
var fs: TFileStream; fm: word; begin if FileExists(fileName) then fm := fmOpenReadWrite else fm := fmCreate; fs := TFileStream.Create(fileName, fm, fmShareDenyWrite); fs.Seek(0, soFromEnd); s.SaveToStream(fs); fs.Free; end; Grüße vom marabu Noch 39 Tage bis Weihnachten. |
Re: Daten aus String Grid an Logdatei anfügen
Alles klar, vielen Dank euch beiden, jetzt funzt das ganze tadellos.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz