Einzelnen Beitrag anzeigen

Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#18

Re: Ausgliedern von Functionen in externe Unit

  Alt 20. Feb 2010, 10:54
Ich habe jetzt mal die Datenbankabfrage in eine andere Funktion gelegt. Da ich noch am Anfang dieser Verarbeitung bin und genau aus diesem Grund auch jetzt schon frage, ist das mit der vielen arbeit nicht so das Problem. Ich habe zum jetzigen Zeitpunkt lediglich die Funktion geprüft und dessen Inhalt getestet. Das was ich vorhabe, funktioniert und muss halt jetzt umgesetzt werden.

Ich habe zur Zeit nur eine Testprogramm geschrieben um die Timer Komponenten und die E-Mail funktion zu Simulieren und das mit Erfolg. Ich will nur der Übersichthalber nicht den Gesamten Code hier einstellen, weil sonst eh keiner mehr weiß was ich will.

Ich habe jetzt z.B. mal die Datenbankabfrage der Uhrzeit ausgegliedert und als Funkton ausgelagert. Damit sieht man vieleicht was ich vorhabe.

Zu der Umwandlung von Time nach String etc. das kommt nur weil ich noch in einem Testprogramm probiere und auch die gesamte Exception Behandlung und auch denn Rest des Programmteils noch gar nicht angepasst habe. Ich habe das ganze einfach mal schnell zusammen getippt, um überhaupt mal meinen Gedankengang zu prüfen.

Hier mal den Schritt den gerade veändert habe um die DB Abfrage Uhrzeit zu realisieren..

Delphi-Quellcode:
//die function SetTimerInterbalEMailStart wird durch das FormCreate ausgelößt
function TForm1.SetTimer1IntervalEMailStart : Boolean;
var
  TimeSend : TTime;
const
  HalfDay = 43200000;
begin
  SendEMailTimer1.Enabled := false;
  TimeSend := ReadTimerTime(1); //'22:57:00';//Nächste Startzeit
  if TimeSend > Time then //Prüfung ob Sendezeit für aktuellen Tag schon vorbei
    begin
      //Zeitpunkt für nächsten Step festlegen
      SendEMailTimer1.Interval := MilliSecondsBetween(frac(Time),
        frac(TimeSend));
...

function TForm1.ReadTimerTime(Timer : integer) : TTime;
begin
  Qry_TimerTime.SQL.Text := 'SELECT ZEIT FROM EMAILGRUPPEN WHERE ID = :Id';
  Qry_TimerTime.ParamByName('Id').AsInteger := Timer;
  Qry_TimerTime.Open;
  Result := Qry_TimerTime.FieldByName('ZEIT').Value;
end;
Gruß Jens
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat