Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Programm, das Datumsliste mit dazugehörigem Wert erstellt. (https://www.delphipraxis.net/60942-programm-das-datumsliste-mit-dazugehoerigem-wert-erstellt.html)

bogomip 14. Jan 2006 16:14


Programm, das Datumsliste mit dazugehörigem Wert erstellt.
 
Hallo liebe Community,

ich brauche ein Programm, das folgende Liste (z.b. als TXT) erstellt:

Es soll in der ersten Spalte ein Datum stehen (Anfangs- und Enddatum beliebig einstellbar) und in der zweiten ein zugeordneter Zufallswert zwischen a und b. In der nächsten Zeile soll das Datum um einen Tag weitergerückt sein und ein neuer Zufallswert zugeordnet werden.
Also so:

23.2.2004 45
24.2.2004 21
25.2.2004 57
... ...

Dazu habe ich schon ein Formular, auf dem ich zwei TDateTimePicker habe, einen Button zum Speicherpfad auswählen und einen Generieren-Knopf.

Jetzt muss ich:
- abfragen, ob das erste Datum vom Zeitpunkt her früher war, als das zweit-ausgewählte.
- die Dateioperationen integrieren
- Jeweils das Datum und den Zufallswert (Ober und Untergrenze sollen im Programm festgelegt werden) in die Liste schreiben

Leider bin ich in Delphi noch absolut neu und unerfahren, brauche aber dringend dieses Programm. Da ich als Community-Neuling natürlich nicht erwarten kann, dass mir das jemand schreibt, möchte ich euch vielleicht nur bitten, mir etwas in die Spur zu helfen. Vielleicht wird dieses Programm, wenn mir Delphi gefällt, ja das Sprungbrett für eine neue Leidenschaft ;)

Vielen Dank!

MfG bogomip :)

mr.unbekannt 14. Jan 2006 16:37

Re: Programm, das Datumsliste mit dazugehörigem Wert erstell
 
be dem datum kann man leicht gucken, ob das zweite größer is als das erste, nimm doch mal die integrwerte von zum beispiel "jahr" und von "monat" und dem tag und gucke was größer is mit den if bedingungen!

mkinzler 14. Jan 2006 16:38

Re: Programm, das Datumsliste mit dazugehörigem Wert erstell
 
Zitat:

Zitat von bogomip
H
Jetzt muss ich:
- abfragen, ob das erste Datum vom Zeitpunkt her früher war, als das zweit-ausgewählte.

Delphi-Quellcode:
if Datum1.date < Datum2.Date then ...
Wobei Datum1 und Datum2 vom Typ TDateTimePicker sind.

Zitat:

- die Dateioperationen integrieren
- Jeweils das Datum und den Zufallswert (Ober und Untergrenze sollen im Programm festgelegt werden) in die Liste schreiben
[delph]
var
...
tf: TextFile;
Datum: string;
anz: integer;
j,m,t: Word;
--
AssignFile( tf, 'datei.txt');
Reset( tf);
Decodedate( datum1, j, m, t);
anz := Trunc(Datum2-Datum1); // Anzahl Tage
for i := 0 to anz -1 do
begin
rnd := Random( b-a)+a; // a: Untergrenze b: Obergrenze;
datum := DateToStr(EncodeDate( j, m, t+i));
WriteLn( datum, rnd);
inc( t);
if( t > ... // Hier überprüfung auf Monatsende, dann Monat(m) erhöhen usw.
..
end;
...
[/delphi]

tomsel 14. Jan 2006 16:49

Re: Programm, das Datumsliste mit dazugehörigem Wert erstell
 
Also, bei Variablen vom Typ TDate oder TDateTime kann man doch eine beliebige Anzahl von Tagen einfach addieren. Werte diesen Typs sind ja nichts Anderes als die Anzahl von Tagen seit dem, ich glaube, 01.01.1980 (schlagt mich nicht, wenn's falsch ist). Aber was ist TDateTimePicker?

marabu 14. Jan 2006 16:53

Re: Programm, das Datumsliste mit dazugehörigem Wert erstell
 
Hallo.

Es ist bei einer solchen Aufgabe immer vorteilhaft, wenn man Darstellung und Funktionalität weitgehend voneinander entkoppelt:

Delphi-Quellcode:
function CreateRandomList(dtLow, dtHigh: TDate;
  rndLow, rndHigh: Integer): TStringList;
var
  i: Integer;
begin
  Result := TStringList.Create;
  for i := Trunc(dtLow) to Trunc(dtHigh) do
    Result.Add(Format('%s %d', [DateToStr(i), rndLow + Random(rndHigh - rndLow)]));
end;
Die Prüfungen kann man dann in einer kapselnden Funktion unterbringen:

Delphi-Quellcode:
function CheckCreateRandomList(dtLow, dtHigh: TDate;
  rndLow, rndHigh: Integer): TStringList;
var
  dt: TDateTime;
  i: integer;
begin
  if dtLow > dtHigh then
  begin
    dt := dtLow;
    dtLow := dtHigh;
    dtHigh := dt;
  end;
  if rndLow > rndHigh then
  begin
    i := rndLow;
    rndLow := rndHigh;
    rndHigh := i;
  end;
  Result := CreateRandomList(dtLow, dtHigh, rndLow, rndHigh);
end;
Die gezeigte Kapsel soll aber nur das Prinzip verdeutlichen. Im konkreten Beispiel gehört der Prüf-Code wohl eher zur Benutzerschnittstelle. Eine so enge Kopplung zwischen dem Prüfen der Argumente und dem Ausführen der Funktion ist nicht immer gewünscht. Fehlt eigentlich nur noch der Test-Code.

Grüße vom marabu

bogomip 14. Jan 2006 17:27

Re: Programm, das Datumsliste mit dazugehörigem Wert erstell
 
Danke soweit, dann werd ich mal versuchen, was ich da zusammengecoded bekomme ;)

bogomip


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