![]() |
Re: Ausgliedern von Functionen in externe Unit
Moin,
ich hätte eine Funktion für die Klasse TForm1 geschrieben, die dir den Wert für den Timer holt. Und dann eine Funktion die den Unterschied misst (SetTimer1IntervalEMailStart). Ich weiß leider nicht wie die anderen SQL-Requests aussehen. Aber wenn sie ähnlich sind (z.B. nur die ID anders), dann geht das ganz gut. Alternativ machst du noch ein Klasse die selber die Datenbank ist, und ein paar Informationen „wrappt“. MfG Fabian |
Re: Ausgliedern von Functionen in externe Unit
Ich weiß allerdings nicht wie ich das mache. Deswegen fragte ich oben schon mal nach einem Tutorial
Ich will mal so sagen, wenn ich folgende function mit den entsprechenden Übergabe Werten in eine externe Unit/Klasse packen will, wo muss ic dann was, und vorallem damit ich es auch versteh wie und warum machen.
Delphi-Quellcode:
Gruß Jens
function TForm1.SetTimer1IntervalEMailStart : Boolean;
var TimeNow : String; TimeSend : String; const HalfDay = 43200000; begin SendEMailTimer1.Enabled := false; TimeNow := TimeToStr(Now);//Aktuelle Zeit TimeSend := '22:57:00';//Nächste Startzeit if TimeSend > TimeNow then //Prüfung ob Sendezeit für aktuellen Tag schon vorbei begin //Zeitpunkt für nächsten Step festlegen SendEMailTimer1.Interval := MilliSecondsBetween(frac(StrToTime(TimeNow)), frac(StrToTime(TimeSend))); end else begin //Zeitpunkt festlegen wenn Step für aktuellen Tag vorbei SendEMailTimer1.Interval := HalfDay - MilliSecondsBetween(frac(StrToTime(TimeNow)), frac(StrToTime(TimeSend)))+ HalfDay; end; SendEMailTimer1.Enabled := true; end; |
Re: Ausgliedern von Functionen in externe Unit
Wie du was machst?
MfG Fabian |
Re: Ausgliedern von Functionen in externe Unit
siehe oben, ich habe meinen letzten Beitrag geändert...
|
Re: Ausgliedern von Functionen in externe Unit
Wenn Du die gesamte DB-Funktionalität in eine oder mehrere Klassen packst, kannst Du die Oberfläche sauber von dieser Funktionalität trennen. Dazu müssten dann alle DB-Kompos wie die Query runter vom Formular und von der Klasse erzeugt und verwaltet werden. Das Formular ruft dann nur noch eine Methode der Klasse auf, welche sich um den Rest kümmert und die ermittelten Daten zurückgibt. Das ist zwar am Anfang eine Menge Arbeit, aber wenn man das gut durchdenkt hat man ein sauberes Design.
|
Re: Ausgliedern von Functionen in externe Unit
Moin,
wo ist da jetzt die DB Funktionalität? Trotzdem hätte ich ein paar Verbesserungsvorschläge:
Und ansonsten mach es so wie Detlef es vorschlägt: Du schreibst dir eine Klasse die alle Zugriffe kapselt und dann rufst du nur noch .GetTimer(....) oder so auf. MfG Fabian |
Re: Ausgliedern von Functionen in externe Unit
Zitat:
|
Re: Ausgliedern von Functionen in externe Unit
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:
Gruß Jens
//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; |
Re: Ausgliedern von Functionen in externe Unit
Zitat:
MfG Fabian |
Re: Ausgliedern von Functionen in externe Unit
Ich musste ein bisschen suchen, aber worauf ich eigentlich hinauswollte:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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