![]() |
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 :) |
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!
|
Re: Programm, das Datumsliste mit dazugehörigem Wert erstell
Zitat:
Delphi-Quellcode:
Wobei Datum1 und Datum2 vom Typ TDateTimePicker sind.
if Datum1.date < Datum2.Date then ...
Zitat:
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] |
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?
|
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:
Die Prüfungen kann man dann in einer kapselnden Funktion unterbringen:
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;
Delphi-Quellcode:
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.
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; Grüße vom marabu |
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 09:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz