Autor Beitrag
Yacoon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Di 18.02.03 23:02 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Di 18.02.03 23:25 
hi
ich wüsste nicht von so einer funktion aber das das nur mit dynamischen arrays geht is ja klar oder?

cya
Yacoon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Di 18.02.03 23:30 
Ja das ist klar :wink:
Fred Ferkel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Di 18.02.03 23: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
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: So 02.03.03 12: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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: So 02.03.03 13: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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: So 02.03.03 13:38 
Dem ist nicht so. Ein als var gekennzeichneter Parameter wird automatisch vom Compiler als Zeiger (call by reference) übergeben.

_________________
Ist Zeit wirklich Geld?
Fred Ferkel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: So 02.03.03 13:50 
cool :D