AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mehrmeninsionales Array mit Extenden und Boolean werten
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrmeninsionales Array mit Extenden und Boolean werten

Ein Thema von Karstadt · begonnen am 23. Aug 2006 · letzter Beitrag vom 24. Aug 2006
Antwort Antwort
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#1

Mehrmeninsionales Array mit Extenden und Boolean werten

  Alt 23. Aug 2006, 09:01
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
  Mit Zitat antworten Zitat
WoTo

Registriert seit: 28. Jun 2004
Ort: Rotenburg (Wümme)
102 Beiträge
 
Delphi 2005 Enterprise
 
#2

Re: Mehrmeninsionales Array mit Extenden und Boolean werten

  Alt 23. Aug 2006, 09:21
Hallo,

vielleicht so in etwa:

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;
usw.
end.
Ist nicht getestet, nur einfach heruntergeschrieben. Sollte nur eine Idee aufzeigen.

Gruß,
Woto
  Mit Zitat antworten Zitat
Amateurprofi

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

Re: Mehrmeninsionales Array mit Extenden und Boolean werten

  Alt 23. Aug 2006, 12:56
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.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#4

Re: Mehrmeninsionales Array mit Extenden und Boolean werten

  Alt 24. Aug 2006, 10:50
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?
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#5

Re: Mehrmeninsionales Array mit Extenden und Boolean werten

  Alt 24. Aug 2006, 11:48
Zitat von Karstadt:
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?
Ganz einfach: Indem du auf die anderen Elemente zugreifst ;)
Delphi-Quellcode:
arWert[0].Wert := 1;
arWert[0].Belegt := true;

arWert[1].Wert := 12323;
arWert[1].Belegt := true;

arWert[2].Wert := 34564356;
arWert[2].Belegt := true;
...
Es wurde ein Array (0..7) angelegt, d.h. es beinhaltet 8 Elemente mit dem
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.
Manuel
  Mit Zitat antworten Zitat
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
Karstadt

Registriert seit: 8. Nov 2005
788 Beiträge
 
#7

Re: Mehrmeninsionales Array mit Extenden und Boolean werten

  Alt 24. Aug 2006, 14:25
Kann ich diese Wer 0..7 zur laufzeit setzen?

Array (0..7) of rWert;
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#8

Re: Mehrmeninsionales Array mit Extenden und Boolean werten

  Alt 24. Aug 2006, 15:15
Ja, mit dynamischen Arrays. Da müsste die Deklaration zB:
Delphi-Quellcode:
var
  myArray : array of Extended;
lauten.
Um die Länge festzulegen:
SetLength(myArray, 4) Die aktuelle Länge kannst du so abfragen:
length(myArray) Den Index des letzten Wertes bekommst du so:
high(myArray) Index des ersten Wertes:
low(myArray) Ansonsten schau mal in die OH unter dynamische Arrays, da steht auch einiges
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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