Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie erkenne ich ob eine Zelle im array gefüllt ist? (https://www.delphipraxis.net/20540-wie-erkenne-ich-ob-eine-zelle-im-array-gefuellt-ist.html)

Michael Leyhe 19. Apr 2004 18:41


Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
HI

Ich habe bei einem Programm vollgendes Problem

Ich habe ein zweidimensionales statisches array of integer

Delphi-Quellcode:

beispiel :array [1..10,1..10] of integer;
Manche Zellen dieses Arrays werden nun befüllt und manche bleiben auch frei

Frage: Gibt es eine möglichkeit herauszufinden ob z.B. beispiel [7,7] eine Zahl enthällt oder ob ich dieser Zelle vorher noch nichts zugewiesen habe. :gruebel:

:dp: Danke schon im vorraus :-D

fauxx 19. Apr 2004 18:45

Re: Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
Delphi-Quellcode:
var a: array [1..2, 1..2] of Integer;
begin
 a[1,1] := 3;
 showmessage(inttostr(a[1,1])); //gibt 3 aus...
 showmessage(inttostr(a[2,1])); //gibt bei mir (wieso auch immer) 201654148 aus
end;

Michael Leyhe 19. Apr 2004 18:52

Re: Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
HI

Naja so richtig hilft mir das auch nicht weiter, weil das programm dies erkennen soll.

wenn ich eine zelle des arrays auslesen will was nicht gefüllt ist erhalte ich eine 0. Das problem ist nur das das programm diese 0 nicht von einer 0 entscheidet die es dort in das array eingetragen hat. :?

Aber danke flaux

Pseudemys Nelsoni 19. Apr 2004 18:56

Re: Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
wie soll das auch unterschieden werden? irgendein wert ist immer drin, also "Nix" gibts nicht (denk ich mal)

Michael Leyhe 19. Apr 2004 18:57

Re: Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
HI

Das ist ja gerade das dumme, deswegen werde ich mir wohl irgendeine andere sehr umständliche methode ausdenken müssen :cry:

himitsu 19. Apr 2004 19:03

Re: Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
wenn du z.B. nur Werte zuweißt, die größer 0 sind, dann kanst du ja ganz am Anfang überall -1 reinschreiben und wenn dann der Wert immernoch -1 ist, dann ist noch nichts zugewiesen.



oder du machst 2 Array's

Delphi-Quellcode:
Werte: array [1..10,1..10] of integer;
Kontrolle: array [1..10,1..10] of boolean;
weist ebenfalls am Anfang dem Kontrolle-Array überall False zu

und sobald du einen Wert im Werte-Array änderst, machst du einfach den entsprechenden Wert im Kontrolle-Array auf True


das Zweite es geht auch damit
Delphi-Quellcode:
xyz: array [1..10,1..10] of Record
  Wert: integer;
  Kontrolle: boolean;
end;

neolithos 19. Apr 2004 19:05

Re: Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
Überlege dir eine Zahl die du in dem Array nicht brauchst.
Und definiere alle Werte mit dieser Zahl als undefiniert.
Fülle das Array als ersten Schritt mit dieser speziellen Zahl. Und schon weist du immer welcher Wert noch nicht gesetzt wurde.

hboy 19. Apr 2004 19:08

Re: Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
Zitat:

Zitat von fauxx
Delphi-Quellcode:
var a: array [1..2, 1..2] of Integer;
begin
 a[1,1] := 3;
 showmessage(inttostr(a[1,1])); //gibt 3 aus...
 showmessage(inttostr(a[2,1])); //gibt bei mir (wieso auch immer) 201654148 aus
end;

1. der Typ ist ja integer. Wenn man die Variable nicht initialisiert ( null setzt) ist da müll drin
2. wenn du nach zellen suchst brauchst man 2 schleifen,

Delphi-Quellcode:
for i :=0 to 10 do
begin
  for j :=0 to 10 do
  begin
    if a[i,j] =0 then showmessage('da is was');
  end;
end;
dazu musst du allerdings erst alle Zellen mit 0 füllen

Delphi-Quellcode:
for i :=0 to 10 do
begin
  for j :=0 to 10 do
  begin
     a[i,j]:=0;
  end;
end;
einfach ist es jedoch einen neuen typ zu definieren

Delphi-Quellcode:
type cell = record
  value: integer;
  used: boolean;
end;
wenn dir das zu arg ist kannst du auch Array of string[16] machn und prüfen ob a[i,j] <> ''. Das ist allerdings wieder problematischer da du erst prüfen musst ob <> '' ansonsten von string zu integer wandeln musst

peace

hboy

Edit: formatiert
und schwupp war einer schneller :drunken:

fauxx 19. Apr 2004 19:15

Re: Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
kann NIL eigentlich nur einem Zeiger zugewiesen werden oder auch einem Integer?

neolithos 19. Apr 2004 19:16

Re: Wie erkenne ich ob eine Zelle im array gefüllt ist?
 
NIL kann nur Zeigern zugewiesen werden.

Intern:

NIL = 0 -> Null-Pointer


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz