AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein länge eines 2-Dimensionalen und Dynamischen Array

länge eines 2-Dimensionalen und Dynamischen Array

Ein Thema von Teekeks · begonnen am 17. Jun 2009 · letzter Beitrag vom 17. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2   
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 10:34
Hallo!
Kann mir jemand sagen wie ich bei einem 2-Dimensionalen und Dynamischen Array die längen feststellen kann?

gruß Teekeks
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#2

Re: länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 10:40
wie sieht denn der array aus?

also wenn so:

Delphi-Quellcode:
var
  myArray : array of array of Integer;
dann so:

Delphi-Quellcode:
  Length (myArray);
  Length (myArray[0]);
also damit bekommste afaik die länge in x und y richtung (wenn mich nicht alles täuscht).

Wenn du Length mit High ersetzt, bekommst du jeweils den höchsten index.

MfG
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#3

Re: länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 10:50
und wie spreche ich das dann konkret an? also auch so:
thearray[x,y]:={irgentwas}; oder wie?
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#4

Re: länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 10:55
wenn du mir deine deklaration zeigen würdest könnt ich es dir sagen, meine variante die ich gepostet hab spricht man mit

myArray[x][y] := 12356 an, man muss aber auch für alle arrays über setlength die länge setzen mit:

Delphi-Quellcode:
const
  X = 10;
  Y = 15;
var
  I : Integer;
begin
  SetLength (myArray,X);
  for I := 0 to High (myArray) do
    SetLength (myArray[I],Y);
end;
Das würde den dynamischen array auf 10x15 felder setzen, aber obs andere möglichkeiten gibt, ka...
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#5

Re: länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 10:59
hi Danke für deine hilfe.
Mein Array sieht genauso aus wie deins (ich hab nur ´n Record als Type dahinter).
Ich hatte in erinnerung das Setlength so geht: setlength(thearray,x,y); Aber da hat der Debugger gemeckert.
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#6

Re: länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 11:03
Zitat:
For dynamic arrays, SetLength may take more than one length parameter (up to the number of array dimensions). Each parameter specifies the number of elements along a particular dimension.
  SetLength (myArray,10,10); funzt bei mir mit meinen integer array wunderbar (wieder was gelernt ).

Haste ma die genaue meldung?

MfG
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.949 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 11:03
@Hybrid666: deine Variante kann man auch mit myArray[x, y] ansprechen

und eigentlich ging das mit dem SetLength auch so ... ansonten geht auch jede Ebene einzeln (praktisch wie in "dann so:" aus der #2, nur halt mit Set davor)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#8

Re: länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 11:19
ich hab gerade festgestellt das die 3 SEHHR hübschen Meldungen die ich gektigt habe mit was anderem zusammenhängen, ich hab einfach das hier gemacht: dynarray1:=dynarray2; und das geht ja erfahrungsweise nicht ^^.
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Hybrid666

Registriert seit: 15. Jul 2006
Ort: Erster Stock
250 Beiträge
 
Delphi 7 Personal
 
#9

Re: länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 11:24
ne, ist eher schlecht das
  Mit Zitat antworten Zitat
Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#10

Re: länge eines 2-Dimensionalen und Dynamischen Array

  Alt 17. Jun 2009, 11:32
Hm... hier krig ich nem Speicherzugrifsfehler:
Delphi-Quellcode:
procedure TGame.InsertMap(aMap: TMap);
var x:integer;
begin
  _Act_X:=0;
  _Act_Y:=0;
  _Map_X:=Length(aMap);
  _Map_Y:=Length(amap[0]);
  Setlength(_Map,_Map_X+1);
  for x:=0 to _Map_X do
    setlength(_map[x],_Map_Y+1);
  _Map:=copy(aMap);// hier krig ich den Fehler...
end;

// so wird aufgerufen:
procedure TForm1.Button1Click(Sender: TObject);
var amap:TMap;
    x,y:integer;
    afield:TField;
begin
  SetLength(amap,31);
  for x:=0 to 30 do
    Setlength(amap[x],31);
  afield.Field:='w';
  afield.Player:='0';
  for x:=0 to 30 do
    for y:=0 to 30 do
      amap[x][y]:=afield;
  amap[1][3].Field:='#';
  Map.InsertMap(amap);
  Map.SaveMap('test2');

end;

// TMap ist so deklariert:
  TField= record
      Field:char;
      Player:char;
    end;

  TMap= array of array of TField;
wisst ihr woran das liegen mag?
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf