Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Mehrmeninsionales Array mit Extenden und Boolean werten

  Alt 24. Aug 2006, 12:03
Zitat von Karstadt:
Zitat von Amateurprofi:
Ich hielte es für eleganter die boolean-Werte wegzulassen und die extended-werte, die nicht belegt sind, mit NaN zu füllen.
NaN ist in der Unit Math definiert
Die Prüfung, ob ein Wert eine NaN ist, kann mit der Funktion IsNaN vorgenommen werden, die ebenfalls in Math steht.
was ist daran besser?


Delphi-Quellcode:
type
  rWert = record
            Wert : integer;
            Belegt : boolean;
          end;

var
  arWert : Array (0..7) of rWert;

begin
  arWert[1].Wert := 1;
  arWert[1].Belegt := true;
end.
verstehe ich das falsch, oder kann ich nur ein Datensatz pro Array(0..7) anlegen?

wenn ich den Wert 2,3,4,5, belegen will, wie würde ich dann vorgehen?
Besser ist (meiner Meinung nach), daß Du keinen zusätzlichen Boolean-Wert brauchst.

also so:

Delphi-Quellcode:
var arwert:Array[0..7] of extended; // oder double / single

begin
   // wenn wert belegt wird
   arWert[1] := 2001.99;
  
   // wenn wert nicht belegt ist
  arWert[1] :=NaN;
end;
Die spätere Auswertung geht dann so
Delphi-Quellcode:
   if not IsNaN(arWert[1]) then // ist belegt
      else // ist nicht belegt
Angenommen du hättest ein Array of Pointer oder ein Array of Strings, dann würdest Du leere Strings oder ungültige Pointer auch nicht durch einen zusätzlichen Boolean markieren sondern bei Strings auf '' prüfen bzw auf Nil bei Pointern.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat