Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   TService Execute (https://www.delphipraxis.net/156563-tservice-execute.html)

value is NULL 7. Dez 2010 10:59

TService Execute
 
Hi Delphianer..

beschäftige mich seit neuestem mit Services und verstehe so ziemlich das prinzip habe jedoch jetzt folgendes problem:

in meiner execute procedure frage ich alle 2 minuten einen ordner ab, ob sich dateien in diesem befinden.

ich habe das jetzt mal so versucht:

Delphi-Quellcode:
begin
  cache := 0;
  while not terminated do begin
        sleep(4000);
        if cache = 1 then begin
              GetLocaleFormatSettings(GetUserDefaultLCID,mysettings);
              mysettings.ShortTimeFormat := 'hh:mm:ss';
              zeit := TimeToStr(Now,mysettings);
              value := StrtoTime(zeit) + StrToTime('00:01:00');
              cache := 0;
        end;
        while CompareTime(StrToTime(zeit), value) = 0 do begin
                cache := 1;
                sleep(4000);
                logfilest.add(1, 'Cheking Queue...');
                files := Countfilesinfolder('C:\queue', '*.*');
                if files = 0 then begin
                    logfilest.add(1, 'Nothing to do');
                    end
                else
                    logfilest.add(1, 'Something found');
                end;
        end;
  end;
jedoch beendet sich mein Service und schreibt folgende Fehlermeldung in die ereignisanzeige....

"Service fehlgeschlagen bei execute: " ist keine gültige Uhrzeit"
hä?

bzw. hat jemand eine idee wie ich das schöner lösen könnte?!

Danke im Voraus!

DeddyH 7. Dez 2010 11:06

AW: TService Execute
 
Wird zeit denn vorbelegt? Ansonsten ist die Variable wohl leer und kann somit nicht per StrToTime umgewandelt werden. Wobei ich mich eh frage, wozu das ganze String-Gehampel gut sein soll.

himitsu 7. Dez 2010 11:11

AW: TService Execute
 
Die alles entscheidende Frage:
Warum nutzt du überhaupt Strings?

- aktuelle Zeit (TDateTime) in einen String
- diesen String dann wieder in einen TDateTime
- die Minute von einem Sring nach TDateTime
- und dann zusammenrechnen

Warum bleibst du also nicht bei TDateTime?

1 Minute = 6.94444 oder 1/24/60 oder 1/MinsPerDay


PS: Warum Pullen (ständig alles abfragen), wärend man sich auch über die Änderungen direkt informieren lassen kann?
MSDN-Library durchsuchenReadDirectoryChangesW / Hier im Forum suchenReadDirectoryChangesW

DeddyH 7. Dez 2010 11:12

AW: TService Execute
 
Oder mit DateUtils erhöhen, dann muss man nicht einmal selber rechnen (wobei das ja auch keine unlösbare Aufgabe wäre).

Sir Rufo 7. Dez 2010 11:19

AW: TService Execute
 
Und warum pollst du da ständig rum?

Windows bietet dir die Möglichkeit Ordner zu überwachen ...

value is NULL 7. Dez 2010 11:21

AW: TService Execute
 
naja ich habe eine console app die mit 2 parametern diverse einträge in eine datenbank übergibt und dazugehörige files auf einen networkshare schiebt....

jetzt muss ich dieses "modul" Service technisch realisieren.
und deswegen mach ich mir eine art queue welche ich abfrage und dann abarbeite...

Sir Rufo 7. Dez 2010 11:25

AW: TService Execute
 
aber deswegen kannst du ja trotzdem (oder gerade deshalb) die Ordner-Überwachung benutzen

Der Service wird dann nur aktiv, wenn da was ist ... ansonsten schläft der brav vor sich hin und verbraucht (fast) keine Ressourcen.

[DP]Ordner Überwachung[/DP]

value is NULL 7. Dez 2010 11:27

AW: TService Execute
 
also wenn ich ganz ehrlich bin wußte ich nicht das es das gibt ....
wie gesagt... neuland ... und noch nie benötigt :(

Sir Rufo 7. Dez 2010 11:27

AW: TService Execute
 
Zitat:

Zitat von value is NULL (Beitrag 1066821)
also wenn ich ganz ehrlich bin wußte ich nicht das es das gibt ....
wie gesagt... neuland ... und noch nie benötigt :(

Dafür sind wir ja da :mrgreen:

value is NULL 7. Dez 2010 12:02

AW: TService Execute
 
das is lieb ;)
aber ich versteh das irgendwie nicht...
es gibt da so ein tool welches, wenn sich etwas in einem ordner ändert, ein anders programm aufruft...

aber wie hilft mir sowas?!

danke im voraus!


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:41 Uhr.
Seite 1 von 2  1 2      

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