Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Größe von "Array of Array of integer" ermitteln (https://www.delphipraxis.net/155952-groesse-von-array-array-integer-ermitteln.html)

funky 14. Nov 2010 19:04

Delphi-Version: 2010

Größe von "Array of Array of integer" ermitteln
 
Hi,

Mein nächstes Problem ist, dass ich ein "array of array of integer" habe und nun versuche die Länge des Arrays auszulesen.
Beispiel:

Code:
Felder: array of array of integer;
wenn ich jetzt das hier mache:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var text:string;
begin
text:= IntToStr(Length(Felder));
ShowMessage(text);
end;
bekomme ich nur die eine Seite des Arrays raus.

Also z.B. nur diese Stelle des Arrays:
Felder[ausgelesen,fehlt]

Ich brauche aber beide Stellen des Arrays. Wie mache ich das nun?

mkinzler 14. Nov 2010 19:06

AW: Größe von "Array of Array of integer" ermitteln
 
Was meint du mit einet Seite?

BTW: Verwende bitte für Delphi-Code den Delphi-Tag

funky 14. Nov 2010 19:10

AW: Größe von "Array of Array of integer" ermitteln
 
Also

Ich habe ein zwei dimensionales Array "Felder[x,y]"
Und ich will die max.Werte aus x und y auslesen bekomme aber nur x raus und y fehlt mir.

mkinzler 14. Nov 2010 19:14

AW: Größe von "Array of Array of integer" ermitteln
 
Eigentlich sollte dir die gesammte Größe zurückgeliefert werden

Assarbad 14. Nov 2010 19:16

AW: Größe von "Array of Array of integer" ermitteln
 
Zitat:

Zitat von funky (Beitrag 1061480)
Und ich will die max.Werte aus x und y auslesen bekomme aber nur x raus und y fehlt mir.

Das geht prinzipiell nicht, es sei denn diese Daten werden mitgeliefert oder mitgespeichert.

Es ist beispielsweise nicht ohne weiteres ersichtlich ob das Array korrekt per a[x][y] oder per a[y][x] angesprochen werden würde. Entsprechend ist eine Aussage über das was du willst ohne die genannten Rahmenbedingungen nicht machbar.

funky 14. Nov 2010 19:26

AW: Größe von "Array of Array of integer" ermitteln
 
Also

Das Array wird so "gefüllt":

Zitat:

AssignFile(Datei, 'Level1.txt');
Reset(Datei);

Read(Datei, Text);
Länge := Text;

Read(Datei, Text);
Breite := Text;

SetLength(Felder, Länge, Breite);

Danach wird in jedem "Feld" etwas gespeichert.
Z.B. nur mit lauter einsen und zweien

Ich will jetzt das Array "Felder" überprüfen ob das Array komplett mit zweien gefüllt.
Wenn ja mache xxxxx...

mkinzler 14. Nov 2010 19:29

AW: Größe von "Array of Array of integer" ermitteln
 
Wie Olli geschrieben hat, müsstest du dir Länge und Breite irgendwo merken.

Bummi 14. Nov 2010 19:30

AW: Größe von "Array of Array of integer" ermitteln
 
Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
type
TFelder= array of array of integer;
var
  f:TFelder;
  i, sum:Integer;
begin
  SetLength(f,100,100);
  SetLength(f[10],1);
  sum := 0;
  for I := low(f) to High(f) do
     sum := sum + High(f[i]) +  1;
  Caption := intToStr(sum);
end;

funky 14. Nov 2010 19:35

AW: Größe von "Array of Array of integer" ermitteln
 
Ich brauche die Länge und Breite aber nicht in der Prozedur wo sie übergeben wird sondern in einer externen, wo das Array überprüft wird.
Muss ich das mit einer public-variable machen oder geht das auch anders?

Fussball-Robby 14. Nov 2010 20:44

AW: Größe von "Array of Array of integer" ermitteln
 
Delphi-Quellcode:
  X := Length(Felder);
  Y := Length(Felder[0]);
Das funktioniert, wenn das Feld quadratisch ist, da alle Spalten so lang sind wie die 0te Spalte. Hoffe, das war gemeint.

Viele Grüße

funky 14. Nov 2010 20:48

AW: Größe von "Array of Array of integer" ermitteln
 
OK jetzt habe ich Länge und Breite rausgefunden aber wie überprüfe ich zum Beispiel ob es mit zweien gefüllt ist?

Zur Zeit habe ich folgenden Code aber der funktioniert nicht:

Delphi-Quellcode:
procedure TForm1.CheckField;
var i,j:integer; gewonnen:boolean;
begin

gewonnen:= true;

for i := 0 to Länge-1 do
begin

    for j := 0 to Breite - 1 do
    begin

         if (arFelder[i,j] = 1 or 2 or 4 ) then
         begin
         gewonnen := true;
         end

         else
         begin
         gewonnen := false;
         end;


         end;
    end;

if (gewonnen = true) then ShowMessage('Gewonnen');
end;
Die Prozedur habe ich nach jeder Bewegung reingemacht.
Also wenn w,a,s oder d gedrückt wird.

Edit:
1 steht für Blau (Nicht begehbares Feld)
2 für Rot (Ziel)
4 für gelb (Felder auf denen man war)

Fussball-Robby 14. Nov 2010 20:51

AW: Größe von "Array of Array of integer" ermitteln
 
Gehört zwar nicht mehr zum Thema... Aber wie genau ist die Bedingung zum Gewinnen? Muss das gesamte Feld mit Zweien gefüllt sein?

Generell: Eine Abfrage, ob eine Zahl 1, 2 oder 4 ist, sieht so aus:
Delphi-Quellcode:
if (Zahl = 1) or (Zahl = 2) or (Zahl = 4) then ...
//oder:
if Zahl in [1, 2, 4] then ...

funky 14. Nov 2010 20:53

AW: Größe von "Array of Array of integer" ermitteln
 
Ja das gesamte Feld muss entweder mit 1,2 oder 4 gefüllt sein.

Bummi 14. Nov 2010 20:56

AW: Größe von "Array of Array of integer" ermitteln
 
Zitat:

Ich brauche die Länge und Breite aber nicht in der Prozedur wo sie übergeben wird sondern in einer externen, wo das Array überprüft wird.
war in dem Beispiel #8 alles drin, generierung, Berücksichtigung von nicht "quadratischen" Arrays

der auswertende Teil was
Delphi-Quellcode:
  sum := 0;
  for I := low(f) to High(f) do
     sum := sum + High(f[i]) + 1;

mkinzler 14. Nov 2010 20:58

AW: Größe von "Array of Array of integer" ermitteln
 
Das mit der Verwendung ders Delphi-Tags war ernst gemeint!

funky 14. Nov 2010 21:04

AW: Größe von "Array of Array of integer" ermitteln
 
Was denn für Delphi tags? oO

Assarbad 14. Nov 2010 21:11

AW: Größe von "Array of Array of integer" ermitteln
 
Zitat:

Zitat von funky (Beitrag 1061504)
Was denn für Delphi tags? oO

Die hier:
Code:
[DELPHI][/DELPHI]

funky 14. Nov 2010 21:18

AW: Größe von "Array of Array of integer" ermitteln
 
Zitat:

Zitat von Bummi (Beitrag 1061502)
Zitat:

Ich brauche die Länge und Breite aber nicht in der Prozedur wo sie übergeben wird sondern in einer externen, wo das Array überprüft wird.
war in dem Beispiel #8 alles drin, generierung, Berücksichtigung von nicht "quadratischen" Arrays

der auswertende Teil was
Delphi-Quellcode:
  sum := 0;
  for I := low(f) to High(f) do
     sum := sum + High(f[i]) + 1;

Das problem habe ich schon gelöst.
Habe weiter oben ein neues Problem gepostet.

mkinzler 14. Nov 2010 21:20

AW: Größe von "Array of Array of integer" ermitteln
 
Eigentlich gilt ja: "Neue Frage, neuer Thread"


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