Einen Code optimieren
Hallo Delphifans,
habe eine Datumsabfrage mit ca. 100 Datumswerten. Wie kann man sowas noch optimieren. Mit einer Case-Anweisung bring ich das einfach nicht zum Laufen. Dachte mit Case wäre es evtl. übersichtlicher. Vielen Dank für jeden Hinweis LingNeu
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin // if strtodate(edit1.Text) > strtodate('01.01.2007') then begin label2.Caption := '1.Zeitbereich'; end; if strtodate(edit1.Text) > strtodate('01.02.2007') then begin label2.Caption := '2.Zeitbereich'; end; if strtodate(edit1.Text) > strtodate('01.03.2007') then begin label2.Caption := '3.Zeitbereich'; end; end; |
Re: Einen Code optimieren
Case geht nur bei Rdinal-Typen, man könnte es nur sehr geringfügig optimieren:
Delphi-Quellcode:
Gruß
procedure TForm1.Button1Click(Sender: TObject);
var date: TDate; begin // date := strtodate(edit1.Text); if date > strtodate('01.01.2007') then label2.Caption := '1.Zeitbereich'; if date > strtodate('01.02.2007') then label2.Caption := '2.Zeitbereich'; if date > strtodate('01.03.2007') then label2.Caption := '3.Zeitbereich'; end; |
Re: Einen Code optimieren
Hallo,
wenn es dir nur um den Tag geht, nicht aber um die Uhrzeit, dann kannst du den Vorkommaanteil des TDateTime-Wertes benutzen - er enthält den Tag bezogen auf ein Basisdatum. Vielleicht kannst du auch durch eine Subtraktion (31. Dezember des Vorjahres) eine Tagesnummer errechnen. In jedem Fall erhältst du so einen ganzzahligen Wert, der auch mit einer CASE-Anweisung überprüft werden kann. Gruß Hawkeye |
Re: Einen Code optimieren
@MrKnogge
vielen Dank für Deine Hilfe, hab mir schon fast sowas gedacht. Vielleicht könnte ich eine Datenbank anlegen und da drin nach einem eingegebenen Datum suchen? Evtl. ist das dann optimaler. @Hawkeye219 ich weiß nicht wie sich die Sache dann über mehrere Jahre verhält. Muss ich mich erstmal schlau machen. Danke für den Hinweis. Gruss LingNeu |
Re: Einen Code optimieren
Hm...
Delphi-Quellcode:
var
x : Integer; begin x := Trunc(Datum); case x of 39095: Label1.Caption := '13. Januar 2007'; 39096: Label1.Caption := '14. Januar 2007'; 39097: Label1.Caption := '15. Januar 2007'; end; end; Alles vor dem Komma eines DateTime Wertes ist das Datum, alles danach ist die Uhrzeit. Wir schneiden also einfach die Uhrzeit ab und können ohne weiteres ein Case auf den Datumsanteil machen ;> |
Re: Einen Code optimieren
@SubData
das ist ja echt cool ! Danke für diesen Tipp - kann man immer mal gebrauchen. gruss LingNeu |
Re: Einen Code optimieren
Bitte.
Alternativ empfehle ich die Unit DateUtils mal genauer unter die Lupe zu nehmen. Da finden sich evtl Funktionen und Prozeduren, die dir die Arbeit erleichtern sollten. |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Hier gehts definitiv um Delphi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr. |
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