![]() |
Re: Nächstes Datum errechnen
Zitat:
|
Re: Nächstes Datum errechnen
Mein Vorschlag (ohne Sortieren): Du gehst die ganze Liste durch und betrachtest dabei ein Datum nur, wenn es größer oder gleich "heute" ist. Hast du so ein Datum gefunden, merkst du dir dessen ItemIndex und wie weit es von heute entfernt ist. Danach gehst du die Liste weiter durch und wenn du auf ein Datum triffst, dass zwar größer oder gleich "heute" ist, aber näher an heute als das bisher gemerkte, dann ersetzt du den bisher gemerkten ItemIndex durch den aktuellen und natürlich ebenfalls den Wert, in dem du dir merkst, wie weit das Ganze von heute entfernt ist. Den letzten Schritt wiederholst du bis zum Ende der Liste.
Die Laufzeit sollte linear sein und man muss die Items in der Liste nicht sortieren. Nur Programmieren musst du das kleine Schleifchen noch selbst. ;) Bis denn Bommel Hm, bin ich jetzt der Depp, der die Arbeit für ihn gemacht hat...? ;) |
Re: Nächstes Datum errechnen
Das wäre auch eine Möglichkeit, aber die muss auch erst einmal geschrieben werden ;)
|
Re: Nächstes Datum errechnen
Ok, dann habe ich nur noch zwei Fragen: Wie schaffe ich es nur Tag und Datum von so einem Datum: 01.01.1950 zu nehmen und wie kann ich daraus einen Integer machen oder kann man Objekte vom Date Typ auch einfach mit < und > vergleichen?
|
Re: Nächstes Datum errechnen
TDate = TDateTime = double. Und wenn alle Einträge im Format "dd.mm.yyyy" sind, kann man das Jahr ja mit dem Copy-Befehl abschneiden.
|
Re: Nächstes Datum errechnen
Was hast du bisher in delphi gemacht, dass du nicht einmal DecodeDate() kennst?
Welchen würde ein Datumstyp machen wenn man ihn vergleichen kann? Übrigens ist ein TDate(Time) ein Double |
Re: Nächstes Datum errechnen
Ich habe das Jahr jetzt erstmal außen vor gelassen und mich der Schleife gewidmet. Ich habe es so versucht wie Bbommel gesagt hatte:
Also mein Ansatz sieht so aus:
Delphi-Quellcode:
Ich weiß, das ist noch lange nicht alles aber ich habe das Gefühl, dass ich eine falsche Schleife benutze, oder? Wenn ich jetzt mit g weitermache und prüfe ob es einen noch kleineren Eintrag gibt muss ich ganz viele for Schleifen machen. Welche Schleife ist da besser?
var
i: Integer; g: integer; k: integer; begin for i := 0 to Listview1.Items.count - 1 do begin if StrToDate(DateToStr(Now)) < StrToDate(Listview1.Items.Item[i].SubItems.Strings[0]) then begin g := i; k := Listview1.items.count - g; end; |
Re: Nächstes Datum errechnen
Du brauchst doch nur das Minimum zu suchen. Übrigens:
Zitat:
|
Re: Nächstes Datum errechnen
Ich steht auf m Schlauch. Kann mir nicht bitte jemand sagen wie ich jetzt das Minimum hinkriege? Es ist bestimmt ganz einfach aber ich komm nicht drauf. Ich habs jetzt wirklich versucht so gut ich konnte. :(
|
Re: Nächstes Datum errechnen
Stichworte:
- BubbleSort - QuickSort An dem einen Ende ist das Minimum am anderen ist das Maximum. Minimum ist dann erreicht wenn alle anderen Werte größer sind. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 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