Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datum als variable mit Wechsel (https://www.delphipraxis.net/120681-datum-als-variable-mit-wechsel.html)

v.dali 15. Sep 2008 10:22


Datum als variable mit Wechsel
 
Hallo zusammen,
ich brauche eine Variable die sich aus dem Datum bildet :-). Das heißt bis zum Datum 15.09.2008 heißt die Variable dann "FSK09",
ab einem späteren Datum heißt diese dann "HWK10", wieder ab einem bestimmten Datum dann "FSK10" usw. Das heutige Datum auslesen ist
kein Problem, nur wie ich dann die benötigte Variable bekomme, damit steh ich augenblicklich auf dem Schlauch.
Vielleicht weiß jemand von Euch wie ich das anpacken kann.
Danke
Volker 8)

jfheins 15. Sep 2008 10:29

Re: Datum als variable mit Wechsel
 
Falls du einen String hast, und gerne den Wert der Variablen haben möchtest, die so heißt: Das geht nicht.

Du kannst dir aber natürlich eine Funktion schreiben, die ein Datum bekommt, und einen Wert zurückgibt ;)

Edit: Oder suchst du vll. das Delphi-Referenz durchsuchencase Statement ?

:glaskugel:

Luckie 15. Sep 2008 11:24

Re: Datum als variable mit Wechsel
 
Das geht sicher. Nur können wir dir bei der Umsetzung nicht helfen, weil wir da bisher keine Zuweisungsvorschrift erkenn können, ausser, dass der Tag wohl als Zahl übernommen wird. aber wie sich die Buchstabenkombination ableitet, ist mir noch ein Rätsel.

v.dali 15. Sep 2008 12:52

Re: Datum als variable mit Wechsel
 
Hallo,
es sollte etwa so aussehen aussehen: im Zeitraum vom 01.05.2008 bis 30.11.2008 brauche ich einen string der FSK09 heißen soll.
im Zeitraum vom 01.12.2008 bis 30.04.2009 heißt der string dann HWK10,
im Zeitraum vom 01.05.2009 bis 30.11.2009 heißt dieser dann FSK10 usw.
den string deklariere ich als globale Variable und habe diese in allen units zur Verfügung.
Dies alles baue ich in das Startformular ein und gehe damit sicher das die jeweils zutreffende Kollektion eingetragen wird.
Nur wie ich das anstelle damit der jeweilige Zeitraum die jeweilige Variable erstellt weiß ich nicht.
Mein Ansatz war ein Editfeld mit "heutigem" Datumseintrag. Dieser wird verglichen mit dem Zeitraum und bekommt entsprechend
die Variable, z.B. FSK09 zugewiesen. Wenn ich in case off nehme, wie baue ich meinen Zeitraum zusammen damit das jeweilige Datum erkannt wird?

Ich hoffe dies war deutlicher als beim ersten posting.
Vielen Dank
Volker

DeddyH 15. Sep 2008 13:16

Re: Datum als variable mit Wechsel
 
Die (in meinen Augen) einfachste Möglichkeit:
Delphi-Quellcode:
var heute: TDate;
begin
  heute := date;
  if heute > StrToDate('01.05.2009') then
    Variable := FSK10
  else if heute > StrToDate('01.12.2008') then
    Variable := HWK10
  else if heute > StrToDate('01.09.2008') then
    Variable := Schiessmichtot
  ...
end;
Man muss dabei nur darauf achten, dass man die Vergleichswerte absteigend sortiert.

Tyrael Y. 15. Sep 2008 13:28

Re: Datum als variable mit Wechsel
 
Er will es doch dynamisch haben und soweit ich verstanden habe läuft es folgendermassen.

wenn 01.12.xxxx < jetztiger Monat und Tag < 30.04.xxxx
dann Konstante ist gleich HWK

wenn 01.05.xxxx < jetztiger Monat und Tag < 30.11.xxxx
dann Konstante ist gleich FSK


Ergebnis := Konstante + letzten beiden Ziffern des Jahres


Da hast den Pseudocode.
Wenn du die Hilfe öffnest und zb. DateTimeToStr eingibst, wirst du sehen, daß es
da einen Link gibt der "Datumsfunktionen" oder so heisst.

Klcik mal darauf. Da sind ganz viele Funktionen wie du dir die Teile aus den Datumsangaben
extrahieren und wie du damit rechnen kannst. Braucht im Prinzip meinen Pseudocode
nur noch umsetzen.

v.dali 15. Sep 2008 14:22

Re: Datum als variable mit Wechsel
 
Hallo zusammen,
Danke, es hat funktioniert. Ich hatte mich zu stark am Zeitraum festgebissen. :-)
Grüße
Volker


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 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