Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Add Funktion für Arrays
Yacoon - Di 18.02.03 22:02
Titel: Add Funktion für Arrays
Gibt es für Array bereits vorhandene Add Funktionen oder muss ich die selbst schreiben?
Wenn ich die selbst schreibe, ist es dann möglich einen neuen Typ vom Array abzuleiten um diesen um eine solche Funktion zu erweitern, oder muss ich das mit einer Funktion bzw Prozedur machen?
Fred Ferkel - Di 18.02.03 22:25
hi
ich wüsste nicht von so einer funktion aber das das nur mit dynamischen arrays geht is ja klar oder?
cya
Yacoon - Di 18.02.03 22:30
Ja das ist klar :wink:
Fred Ferkel - Di 18.02.03 22:44
hi
ich hab zwar nicht so die übung im umganag mit pointern und so und cih lass mich herne belehren wenn das hier schlechter stil sein sollte, also BITTE sagt wenn das mist ist...ich mein ich hab ncoh nie so kompliziert 1,2,3 ausgegeben aber naja es geht zumindest :D
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| type ARR=array of integer;
var Form1: TForm1;
implementation
{$R *.DFM}
procedure addtoarray(x,y:pointer); begin setlength(ARR(x^),length(ARR(x^))+1); ARR(x^)[high(ARR(x^))]:=integer(y^); end;
procedure TForm1.Button1Click(Sender: TObject); var i:integer; x:array of integer; begin for i:=1 to 3 do begin addtoarray(@x,@i); showmessage(inttostr(x[high(x)])); end; end; |
cya
HeLe - So 02.03.03 11:45
:lol: Ich will dir ja nicht den Spaß verderben (dein Code sieht echt toll aus :lol: ), aber das du dein Beispiel ohne Zeigeroverkill auch viel einfacher schreiben kannst, ist dir hoffentlich klar:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| type ARR=array of integer;
procedure addtoarray(var x: arr; y: integer); begin setlength(x, length(x)+1); x[high(x)]:=y; end;
procedure TForm1.Button1Click(Sender: TObject); var i: integer; x: arr; begin x:=nil; for i:=1 to 3 do begin addtoarray(x,i); showmessage(inttostr(x[high(x)])); end; end; |
im übrigen kann ich nur empfehlen sich die Containerklassen wie tlist, tobjectlist und konsorten mal genauer anzusehen, die sind nämlich für aufgaben, bei denen viel hinzugefügt/entfernt wird eindeutig die bessere Wahl (u.a. bieten manche auch Methoden zum suchen/sortieren usw.)
Fred Ferkel - So 02.03.03 12:00
ich dachte immer das wenn man mit
(var x:IrgendEinArraytyp) an ne funcktion/prozedur übergibt dies recht speicheraufwendig wäre...ist dem nicht so?
ansonsten hättest du natürlich recht...:)
AndyB - So 02.03.03 12:38
Dem ist nicht so. Ein als var gekennzeichneter Parameter wird automatisch vom Compiler als Zeiger (call by reference) übergeben.
Fred Ferkel - So 02.03.03 12:50
cool :D
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!