Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - aktuelle länge eines dyn. arrays feststellen?
liquid air - Mi 24.10.07 17:17
Titel: aktuelle länge eines dyn. arrays feststellen?
Hi alle,
tja, Frage steht oben ^^ wenn ich ein dynamisches Array hab, wie kann ich dann dessen Länge feststellen? ...Also, falls ich mich dumm ausdrück: ich hab ein dyn. Array of integer. Da will ich n paar integerzahlen reinschreiben. dafür müsst ich ja aber ungefähr so machen:
Delphi-Quelltext
1:
| myarray[arraylaenge+1]:=myint; |
und dazu müsste ich halt die momentane arraylaenge irgendwie bekommen...hab schon versucht über ne hilfsvariable und dann
hilfsvariable:=length(myarray) ...hat aber auch nich geklappt, das is also wohl was anderes ^^'
Wenn mir Jmd helfen kann, ich würd mich bedanken ^^
Gruss Matthias
Moderiert von
matze: Delphi-Tags hinzugefügt
mkinzler - Mi 24.10.07 17:21
Length() ist schon richtig, aber so wie du es einfügen willst geht es natürlich nicht! da der Index von 0 bis Länge - 1 geht!
liquid air - Mi 24.10.07 17:25
hmm, ich glaub ich versteh was du meinst...aber wie kann ichs dann machen?
...also, ich glaub ich schick dir einfahc ma den betreffenden teilcode, damit du weisst was ich mein...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| while s[i+1]<>'' do begin inc(i); opn:=length(operanden); case s[i] of '1'..'9': operanden[opn+1]:=strtoint(s[i]); end; end; |
operanden is das array of integer...s is mein string
die Funktion soll jetzt den String durchgehn und alle Zahlen, die darin vorkommen, in dieses Array operanden schreiben..
mkinzler - Mi 24.10.07 17:29
Nochmal der array geht von index 0 bis Länge - 1 als o bei länge 4 0 bis 3. Du versuchst aber auf Index 5 zuzugreifen und der existiert nicht!!!
liquid air - Mi 24.10.07 17:35
ja okay, das versteh ich ^^
aber es is ja ein dynamisches array, also nicht in seiner länge festgelegt. dann müsst ich doch das array um einen index "verlängern" können, und dann auf das neu entstandene element zugreifen können, oder?
wenn ich also hätte länge=4 mit array[0..3]=(3, 5, 1, 6), dass ich dann die länge:=5 setze und dann als array[4] meine aktuelle integer-zahl einsetzen kann
muss doch gehn oder? ^^
mkinzler - Mi 24.10.07 17:38
Nicht von alleine. Du musst ihn mit setLength() vergrößern.
alias5000 - Mi 24.10.07 17:39
Die Länge eines Array änderst du mit SetLength ;)
Gruß
alias5000
liquid air - Mi 24.10.07 17:45
jep weiss ich, ich dacht nur es geht simpler, weil so n paar zeilen code dazukommen, die auf den ersten blick unnötig kompliziert aussehn...habs aber jetzt auch auf die art hinbekommen ^^ sorry, bin manchmal bissl verwirrt mit den ganzen indizees...dass veim array das erste element index 0 hat, un bei z.b. memo-feld das erste den index 1 hat...is verwirrend fürn anfänger ^^ ich danke euch, und wens interessiert (ma kann ja nie wissen >.<) hier is der quellcode dann...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| while s[i+1]<>'' do begin inc(i); opn:=length(operanden); case s[i] of '1'..'9': begin setlength(operanden, opn+1); operanden[opn]:=strtoint(s[i]); end; end; end; |
Danke, Gruß Matthias
mexx2k - Fr 26.10.07 09:17
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| type Spielflaeche = array of TEinzelfeld;
begin
... setlength(Spielflaeche,iX); ... end; |
^^
'(' erwartet, aber ',' gefunden
^^
warum?
SvenAbeln - Fr 26.10.07 12:18
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| type TSpielflaeche = array of TEinzelfeld;
var Spielflaeche: TSpielflaeche;
begin ... setlength(Spielflaeche,iX); ... end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!