Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Von einem Array den höchsten und niedrigsten Wert ermitteln (https://www.delphipraxis.net/122052-von-einem-array-den-hoechsten-und-niedrigsten-wert-ermitteln.html)

Thomas F 8. Okt 2008 19:36


Von einem Array den höchsten und niedrigsten Wert ermitteln
 
Wie kann ich von einem Array den höchsten und niedrigsten Wert ermitteln ?
Problem ist, dass die Variable vom Typ TDatetime ist.

Delphi-Quellcode:
..
.
var X: Integer; Daten : Array[0..99] of
high_Value, high_Value:TDatetime;
.
.
.


low_Value := Daten[x];
high_Value := Daten[x];

Dax 8. Okt 2008 19:37

Re: Von einem Array den höchsten und niedrigsten Wert ermitt
 
TDateTime ist ein Double, entsprechend kannst du es auch wie/mit Doubles vergleichen. Niedriger ist früher.

3_of_8 8. Okt 2008 19:38

Re: Von einem Array den höchsten und niedrigsten Wert ermitt
 
TDateTime ist intern nichts anderes als ein Float - lässt sich also problemlos vergleichen. Geh einfach das array durch und speicher in zwei Variablen den bisher höchsten und niedrigsten Wert und wenn du einen höheren bzw. niedrigeren findest, dann setze diese Variablen auf den.

Luckie 8. Okt 2008 20:25

Re: Von einem Array den höchsten und niedrigsten Wert ermitt
 
Oder man sortiert es einfach. ;)

3_of_8 8. Okt 2008 21:06

Re: Von einem Array den höchsten und niedrigsten Wert ermitt
 
...was aber - zumindest bei einmaliger Suche - länger dauert. (Optimale Sortieralgorithmen: O(n log n), der Algorithmus oben: O(n))

Thomas F 8. Okt 2008 21:12

Re: Von einem Array den höchsten und niedrigsten Wert ermitt
 
Ich hab das Problem schon gelöst.
Das TDateTime ist tatsächlich ein Float

Delphi-Quellcode:
      low_value := Strtotime(tabelle.Form1.StringGrid1.Cells[1,1]);
   for j := 1 to X do
   begin
     if low_value > Strtotime(tabelle.Form1.StringGrid1.Cells[1,j])
       then low_value := Strtotime(tabelle.Form1.StringGrid1.Cells[1,j]);
      if high_Value < Strtotime(tabelle.Form1.StringGrid1.Cells[1,j])
          then high_Value := Strtotime(tabelle.Form1.StringGrid1.Cells[1,j]);
      end;


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