Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Dynamische,globale arrays...warum jehtn das nich???
JCD - So 09.02.03 22:17
Titel: Dynamische,globale arrays...warum jehtn das nich???
Hi q all,
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| var Form1: TForm1; Neuron: array of TNeuron; le: array of Integer; Canvas: TCanvas; e: integer;
procedure TForm1.Button3Click(Sender: TObject); begin le[1]:=3; le[2]:=3; le[3]:=1;
for e := 1 to 7 do begin Neuron[e] := TNeuron.Create; end;
end; |
So,ganz simpel,aber es funzt nicht-Fehlermeldung: Exception der Klasse EAccessViolation
Das verstehe wer will...
Thx schon,
Icke
Christian S. - So 09.02.03 22:30
Du verwendest hier ein dynamisches Array. Dort musst Du erst einmal "PLatz schaffen" für die Einträge, die Du dort unterbringen willst. Initial besitzt ein dynamisches Array keinerlei Einträge. Mit SetLength(array, anzahl) kannst Du festlegen, wieviele Einträge es besitzen soll. Das kannst Du zur Laufzeit beliebig oft ändern. Mit Length(array) bekommst Du die Anzahl der Einträge mit High(array) den höchsten zulässigen Index.
MfG,
Peter
JCD - So 09.02.03 22:36
aha hmm is mir echt neu irgendwann früher ging das mal...
find ich übrigens ziemlich schwachsinnig das das nich geht da es ja nich von anfang an und wirklich dynamisch ist...aber egal
Aber Danke
-----------
Rock n Roll,
Icke
Christian S. - So 09.02.03 22:58
| Zitat: |
| find ich übrigens ziemlich schwachsinnig das das nich geht da es ja nich von anfang an und wirklich dynamisch ist...aber egal |
Ich bin mir nicht ganz sicher, was Du meinst. Dynamische Arrays heißen ja gerade dynamische Arrays, weil Du erst zur Laufzeit festlegst, welche Größe sie haben sollen. So oft Du willst.
Aber Du must halt schon noch sagen, wieviele Elemente es haben soll. Beispiel:
Quelltext
1:
| VAR my_array : ARRAY OF Integer; |
Am Anfang hat dieses Array die Länge 0. Es passen folglich auch keine Elemente hinein. Der Befehl
Quelltext
1:
| SetLength(my_array,1); |
vergrößert das Array nun, sodass ein Element hineinpasst. Wenn Du ein dynamisches Array mit einer Schleife füllen möchtest, machst Du das so:
Quelltext
1: 2: 3: 4: 5:
| for e := 1 to 7 do begin SetLength(Neuron,Length(neuron)+1); Neuron[High(Neuron)] := TNeuron.Create; end; |
Mit High(array) erhälst Du immer den höchst zulässigen Index.
MfG,
Peter
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!