Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Einen Code optimieren (https://www.delphipraxis.net/84228-einen-code-optimieren.html)

LingNeu 13. Jan 2007 15:42


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;

MrKnogge 13. Jan 2007 15:52

Re: Einen Code optimieren
 
Case geht nur bei Rdinal-Typen, man könnte es nur sehr geringfügig optimieren:
Delphi-Quellcode:
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;
Gruß

Hawkeye219 13. Jan 2007 15:55

Re: Einen Code optimieren
 
Hallo,

wenn es dir nur um den Tag geht, nicht aber um die Uhrzeit, dann kannst du den Vorkommaanteil des Delphi-Referenz durchsuchenTDateTime-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

LingNeu 13. Jan 2007 15:58

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

SubData 13. Jan 2007 17:13

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

LingNeu 13. Jan 2007 17:23

Re: Einen Code optimieren
 
@SubData

das ist ja echt cool !
Danke für diesen Tipp - kann man immer mal gebrauchen.
gruss
LingNeu

SubData 13. Jan 2007 18:09

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 13. Jan 2007 18:22

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