Dinamikus tömb öröklés letiltás?
Type
TValami = record
A,B,C: Integer;
end;
ArrayValami: Array of TValami;
Var MásikValami: ArrayValami;
procedure Másol( Valami: ArrayValami );
begin
MásikValami:= Valami;
end;
procedure Valamimódosítás;
begin
Másikvalami.A:= 123;
end;
Function ValamiértEgyenlőAKétTömb?( Valami,MásikValami: ArrayValami ): Boolean;
begin
If Valami=MásikValami then Result:= True else Result:= False;
//vagy
If Valami.A=MásikValami.A then Result:= True else Result:= False;
end;
ValamiértEgyenlőAKétTömb?= True
MegTudodMondaniMiért?= False;
ValakiMegTudjaMagyarázni?= True;
"MásikValami:= Valami; "
Nem tudom, Pascalban hogy működik, de szerintem itt a tömb mutatóját másoltad át, innentől mindkét változó ugyanoda "mutat".
Én is erre gondoltam, de én nem mutatót szeretnék csinálni.
Tehát:
Van három tömböm, és ezeket egy tömbbe szeretném rakni, mert ugyan azt a műveletet végzem el a tömb minden elemével, de úgy nem tetszik, hogy ugyan azt a műveletet 3x másolom és úgy végzem el a 3 tömbbel. Amúgy is szeretném, ha a 3 tömb értékei nem változnának.
A probléma, hogy megváltoznak az egybe rakott tömbök tömbjének az elemeinek az értékei a 3 tömb elemeinek az értékeivel együtt.
Igen, de tömböt így nem szoktunk másolni. Ez csak változóknál működik, a tömb egy struktúra, aminek a változója valójában az első elemére mutató pointer. Tényleg nem tudom, Delphiben van-e ilyen beépített megoldás, de nem hinném. Egyenként másold át az elemeket, ciklusban.
Így csinálom:
TKosár: Array of TElem;
T1,T2,T3: TKosár('Alma','Körte','Barack');
TEgybe: TKosár;
L:= Length(T1); I:= 0;
For a:=0 to L-1 do begin
SetLength( TEgybe, I+1 );
TEgybe[I]:= T1[a];
Inc(I);
end;
L:= Length(T2);
For a:=0 to L-1 do begin
SetLength( TEgybe, I+1 );
TEgybe[I]:= T2[a];
Inc(I);
end;
L:= Length(T3);
For a:=0 to L-1 do begin
SetLength( TEgybe, I+1 );
TEgybe[I]:= T3[a];
Inc(I);
end;
De próbáltam már úgy is hogy:
TEgybe[I].Tul:= T3[a].Tul;
Meg hogy:
TEgybe[I].Tul.Ért:= T3[a].Tul.Ért;
ja meg hogy const ... override; de nem értem annyira...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!