Autor Beitrag
heusspower
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mo 06.10.08 23:34 
Hallo,

also mal ganz im Voraus: ich hab keine Ahnung von Informatik, das heißt, wenn ich mal was nicht korrekt beschreibe - bitte nich sauer sein. Ich will aber so ne Aufgabe lösen...

Dazu musste ich in einem Programm mehrdimensionale Arrays verwenden, wobei die Größe des Arrays in der ersten Dimension eingegeben wird (durch ein Edit-Fenster) und in der zweiten Dimension die Größe noch unbekannt wird und während eines Durchlaufs einer for-schleife das Array immer vergrößert werden muss (geht das überhaupt?)

naja der quelltext sieht für mich funktionierend aus (ich poste ihn jetzt nicht, begründung kommt später) aber dann kommt so ein fehler:
Zugriffsverletzungbei Adresse 0045D090 in Modul 'Project1.exe'. Schreiben von Adresse 00000026.

Dann dachte ich dass mein Fehler wahrscheinlich an der Benutzung des dynamischen Arrays liegt (mach ich zum ersten mal ^^)
Deshalb habe ich ein einfacheres Programm was ein mehrdimensionales dynamisches Array verwendet geschrieben, und bekomme den gleichen Fehler. Also liegt die Vermutung nahe, dass ich was mit den dynamischen Arrays falsch mache.
Hier mal der Quellcode:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
var
  Form1: TForm1;
  lol: array of array of integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
SetLength(lol,1,1);
lol[0,0]:=2;
lol[1,1]:=3;
Form1.Label1.Caption:=inttostr(lol[0,0]*lol[1,1]);
end;


Hoffe dass mir jemand helfen kann... vielen Dank im Voraus =)

MFG andrei

Moderiert von user profile iconAXMD: Highlight- durch Delphi-Tags ersetzt
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Di 07.10.08 00:10 
Problem ist recht einfach zu lösen:

mit
ausblenden Delphi-Quelltext
1:
SetLength(lol,1,1);					


erzeugst du ein zweidimensionales array das 1 Feld lang und 1 Feld breit ist (quasi ein 1x1 Quadrat)


Mit

ausblenden Delphi-Quelltext
1:
lol[0,0]:=2;					


greifst du korrekt auf dieses eine existierende Feld zu = kein fehler



Mit
ausblenden Delphi-Quelltext
1:
lol[1,1]:=3;					


versuchst du auf einen Bereich deines arrays zuzugreifen der noch gar nicht existiert, also kommt die Zugriffsverletzung.

Damit es funktioniert musst du also
ausblenden Delphi-Quelltext
1:
setlength(lol,2,2)					

aufrufen.