![]() |
Mehrmeninsionales Array mit Extenden und Boolean werten
Hallo. Ich muss 16 Spaltiges Array füttern. 8 Spalten sind für Zahlen reserviert und weitere 8 spalten von Typ Boolean für Überprüfung ob der Wert in der in der X (1-8) Spalte belegt ist.
Spalte 1 = 2000,99 Wert ist nicht belegt Spalte 1 = 2001,99 WErt ist nicht belegt. und so muss ich mit 8 weiteren Zahlenspalten arbeiten. Wie kan ich so ein Aray reservieren und wie schreibe ich die werte in die jewalige Spalte rein. Dankeschön |
Re: Mehrmeninsionales Array mit Extenden und Boolean werten
Hallo,
vielleicht so in etwa:
Delphi-Quellcode:
Ist nicht getestet, nur einfach heruntergeschrieben. Sollte nur eine Idee aufzeigen.
type
rWert = record Wert : integer; Belegt : boolean; end; var arWert : Array (0..7) of rWert; begin arWert[1].Wert := 1; arWert[1].Belegt := true; usw. end. Gruß, Woto |
Re: Mehrmeninsionales Array mit Extenden und Boolean werten
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. |
Re: Mehrmeninsionales Array mit Extenden und Boolean werten
Zitat:
Delphi-Quellcode:
verstehe ich das falsch, oder kann ich nur ein Datensatz pro Array(0..7) anlegen?
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. wenn ich den Wert 2,3,4,5, belegen will, wie würde ich dann vorgehen? |
Re: Mehrmeninsionales Array mit Extenden und Boolean werten
Zitat:
Delphi-Quellcode:
Es wurde ein Array (0..7) angelegt, d.h. es beinhaltet 8 Elemente mit dem
arWert[0].Wert := 1;
arWert[0].Belegt := true; arWert[1].Wert := 12323; arWert[1].Belegt := true; arWert[2].Wert := 34564356; arWert[2].Belegt := true; ... Index 0 bis Index 7. Wenn dir oft of-by-one-Fehler passieren, kannst du dir auch ein Array (1..8) deklarieren, was auch 8 Elemente hat, aber bei dem Index 1 beginnt. |
Re: Mehrmeninsionales Array mit Extenden und Boolean werten
Zitat:
also so:
Delphi-Quellcode:
Die spätere Auswertung geht dann so
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;
Delphi-Quellcode:
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.
if not IsNaN(arWert[1]) then // ist belegt
else // ist nicht belegt |
Re: Mehrmeninsionales Array mit Extenden und Boolean werten
Kann ich diese Wer 0..7 zur laufzeit setzen?
Array (0..7) of rWert; |
Re: Mehrmeninsionales Array mit Extenden und Boolean werten
Ja, mit dynamischen Arrays. Da müsste die Deklaration zB:
Delphi-Quellcode:
lauten.
var
myArray : array of Extended; Um die Länge festzulegen:
Delphi-Quellcode:
Die aktuelle Länge kannst du so abfragen:
SetLength(myArray, 4)
Delphi-Quellcode:
Den Index des letzten Wertes bekommst du so:
length(myArray)
Delphi-Quellcode:
Index des ersten Wertes:
high(myArray)
Delphi-Quellcode:
Ansonsten schau mal in die OH unter dynamische Arrays, da steht auch einiges ;-)
low(myArray)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 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