Kezdőoldal » Számítástechnika » Programozás » Dinamikus tömb öröklés letiltás?

Dinamikus tömb öröklés letiltás?

Figyelt kérdé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;



2015. máj. 26. 05:07
 1/4 anonim ***** válasza:

"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".

2015. máj. 26. 05:36
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

É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.

2015. máj. 26. 05:44
 3/4 anonim ***** válasza:

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.

[link]

2015. máj. 26. 18:03
Hasznos számodra ez a válasz?
 4/4 A kérdező kommentje:

Í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...

2015. jún. 6. 13:21

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!