![]() |
Re: Probleme mit DB und Schleife
Wenn die Abarbeitung länger dauert, könnte es passieren (und passiert scheinbar auch), dass es 11 Minuten sind. Dann greift der Vergleich auf Gleichheit nicht mehr. Auf Größer aber schon. Dann kannst du dir auch das SameTime() sparen
|
Re: Probleme mit DB und Schleife
Delphi-Quellcode:
Also so, ja?
if (StrToTime(WL.Strings[1])-StrToTime(Time)) > StrToTime('00:01:00') then
Da schreibt er jetzt gar nix mehr rein. |
Re: Probleme mit DB und Schleife
Delphi-Quellcode:
sollte reichen
if (StrToTime(WL.Strings[1])-StrToTime(Time)) >= 600 then
|
Re: Probleme mit DB und Schleife
nein.
600 wären 600 Tage. 10 / 24 / 60 wären dann 10 Minuten. |
Re: Probleme mit DB und Schleife
An sich schreibt er jetzt wenigstens etwa alle z.B. 2 Minuten einen Wert in die Datenbank,aber die sind ja nun nicht genau 2 Minuten auseinander. Bsp :
07:21:35 07:23:40 07:25:40 07:27:45 usw. Ist natürlich nicht so gut. Und nun? |
Re: Probleme mit DB und Schleife
Rechne die Zeit in Sekunden um und vergleiche dann:
Delphi-Quellcode:
Function TimeToSeconds (aTime : TDateTime) : Integer;
Begin Result := Trunc (0.5 + Fract(aTime)*86400); End; Function TimeToMinutes (aTime : TDateTime) : Integer; Begin Result := Trunc (0.5 + Fract(aTime)*1440); End; ... If TimeToSeconds(Now) - TimeToSeconds(LastTime) >= 120 Then Begin // 120 Sekunden = 2 Minuten LastTime := Now; DoSomething; End; // Oder If TimeToMnutes(Now) - TimeToMinutes(LastTime) >= 2 Then Begin LastTime := Now; DoSomething; End; |
Re: Probleme mit DB und Schleife
Ich kapiere das nicht...
Was spricht denn hier gegen den Einsatz von TTimer? Ein Intervall auf 2 Minuten und fertig... |
Re: Probleme mit DB und Schleife
Hallo,
hab das jetzt mit Timer probiert.
Delphi-Quellcode:
//Timer für Datenbank zur Laufzeit erstellen
MyTimer3 := TTimer.Create(nil); MyTimer3.Enabled := True; MyTimer3.Interval := 120000; // alle 2 Minuten die Datenbank aktualisieren MyTimer3.OnTimer := DatenbankFuellen;
Delphi-Quellcode:
Das Problem dabei, dass er dann erst nach 2 Minuten den ersten Wert reinschreibt. Er soll aber sofort anfangen.
procedure TFiles.DatenbankFuellen(Sender: TObject);
var Werte, Datei : string; i : integer; WerteList, WL : TStringList; begin Datei := extractfilepath(application.exename)+'Mom10min_'+Kennung+'.txt'; WerteList := TStringList.Create; WL := TStringList.Create; try WerteList.LoadFromFile(Datei); if WerteList.Count >=2 then begin Werte := WerteList.Strings[WerteList.count-1]; WL.Delimiter := #9; WL.DelimitedText := Werte; if count = WL.Count then begin with t do begin t.Open; t.Append; for i := 0 to WL.Count - 1 do begin t.Fields[i].Value := WL.Strings[i]; end; t.Post; t.Close; end; end; WerteList.SaveToFile(Datei); end; finally Free; WerteList.Free; WL.Free; end; end; |
Re: Probleme mit DB und Schleife
du kannst DatenbankFuellen auch z.B. auch noch über OnCreate der Form aufrufen, dann fängt er sofort an.
|
Re: Probleme mit DB und Schleife
Was muss denn bei dem TimerEreignis in Datenbankfuellen(?). Da steht ja Sender:TObject drin,aber beim Aufruf? t für die Datenbank?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 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