Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zufälliges Datum generieren (https://www.delphipraxis.net/83586-zufaelliges-datum-generieren.html)

Hagen23 4. Jan 2007 22:01


Zufälliges Datum generieren
 
Hallo,
ich bin noch blutiger Anfänger in Sachen Delphi und habe folgende Frage. Wie kann ich ein zufälliges Datum generieren (und dann als String speichern)?
Wollte es zuerst man randomize angehen, aber es gibt da ja so viele Bedingungen, wegen der Anzahl der Monate im Jahr (Februar!). Wäre sehr kompliziert und ich denke es geht auch einfacher?
Ich hoffe ihr könnt mir helfen. Der komplette Code wär am hilfreichsten.

VIELEN, VIELEN DANK IM VORAUS

Grüße
Jan

Christian Seehase 4. Jan 2007 22:16

Re: Zufälliges Datum generieren
 
Moin Jan,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Doch, das geht auch mit Random.

Ein Datumswert (TDateTime) ist eigentlich nichts anderes als der Datentyp double.
Der Nachkommaanteil gibt hierbei die Uhrzeit an, der Vorkommateil das Datum.
Da Du ja nur das Datum haben willst, dies aber, im Prinzip, eine ganze Zahl ist, kannst Du Random verwenden.

Beispiel:

Delphi-Quellcode:
  ShowMessage(DateToStr(Random(10000)));
Vorher muss einmal im Programm Randomize aufgerufen werden (z.B. im OnCreate eines Formulares)
Es ist zwar nur eine Pseudo-Zufallszahl, wird aber in vielen Fällen genügen.

Ob Du jetzt noch einen Wert fest dazuaddieren, oder vielleicht auch abziehen musst, hängt natürlich davon ab, in welchem Bereich sich das Datum bewegen soll.

Mr_G 4. Jan 2007 22:29

Re: Zufälliges Datum generieren
 
Dazu wäre noch zu erwähnen, dass der Ausgangspunkt bei dieser Rechnung der 30.12.1899 ist. Der Ganzzahlige Anteil stellt also sozusagen die Anzahl der Tage vom 30.12.1899 bis zum jeweiligen Datum dar.

Und da ich ein netter Mensch bin hab ich sogar einen kleinen Codeschnippsel parat:
Delphi-Quellcode:
var Datum1, Datum2: TDate;
    Bereich, Zahl: Integer;
    Ergebnis: String;
...
  Randomize; //Zufallsgenerator initialisieren
...

  Datum1 := StrToDate('01.01.2007'); //Startdatum
  Datum2 := StrToDate('31.12.2007'); //Enddatum

  Bereich := Trunc(Datum2-Datum1); //Bereich durch Subtraktion
  Zahl := Random(Bereich); //Zufallszahl generieren

  Ergebnis := DateToStr(Datum1 + Zahl); //Ergebnis durch Addition
Ich hoffe du kannst was damit anfangen.
Gruß
Mr_G

Hawkeye219 4. Jan 2007 22:55

Re: Zufälliges Datum generieren
 
Schade, die Silvesterfeier fällt in diesem Jahr wohl aus...

Gruß Hawkeye

Christian Seehase 4. Jan 2007 22:56

Re: Zufälliges Datum generieren
 
Moin Mr_G,

Zitat:

Zitat von Mr_G
Der Ganzzahlige Anteil stellt also sozusagen die Anzahl der Tage vom 30.12.1899 bis zum jeweiligen Datum dar.

wobei noch darauf hinzuweisen wäre, dass sich dies auch auf negative Werte bezieht. -1 entspräche dann also dem 29.12.1899.

Hagen23 5. Jan 2007 10:24

Re: Zufälliges Datum generieren
 
Wow, das ging ja richtig schnell. Und dann auch noch gleich das was ich gebraucht habe. Ihr seid echt spitze hier.

:) :) Danke :) :)


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