Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme mit DB und Schleife (https://www.delphipraxis.net/138278-probleme-mit-db-und-schleife.html)

mkinzler 6. Aug 2009 14:47

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

aaaaaaaaaa_10 6. Aug 2009 14:54

Re: Probleme mit DB und Schleife
 
Delphi-Quellcode:
if (StrToTime(WL.Strings[1])-StrToTime(Time)) > StrToTime('00:01:00') then
Also so, ja?

Da schreibt er jetzt gar nix mehr rein.

mkinzler 6. Aug 2009 14:57

Re: Probleme mit DB und Schleife
 
Delphi-Quellcode:
if (StrToTime(WL.Strings[1])-StrToTime(Time)) >= 600 then
sollte reichen

hazard999 6. Aug 2009 15:13

Re: Probleme mit DB und Schleife
 
nein.

600 wären 600 Tage.

10 / 24 / 60 wären dann 10 Minuten.

aaaaaaaaaa_10 7. Aug 2009 07:23

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?

alzaimar 7. Aug 2009 07:38

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;

divBy0 7. Aug 2009 08:07

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...

aaaaaaaaaa_10 10. Aug 2009 07:19

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:
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;
Das Problem dabei, dass er dann erst nach 2 Minuten den ersten Wert reinschreibt. Er soll aber sofort anfangen.

himitsu 10. Aug 2009 07:31

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.

aaaaaaaaaa_10 10. Aug 2009 07:54

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 10:59 Uhr.
Seite 2 von 3     12 3      

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