Keby sa skopíroval iba pointer potom by S1 aj S2 ukazovali na to isté miesto v pameti? To ale znmená že ak zmením hodnotu S1 := '', mal by sa rovnako zmeniť aj obsah S2, čo sa ale nedeje.
- Kód: Vybrat vše
var
S1, S2: string;
begin
S1 := 'Obsah reťazca';
Move(S1, S2, 4);
S1 := '';
ShowMessage(S2); // Vypíše to 'Obsah reťazca'
end;[/co
ako dereferencovať pointer, ktorý ukazuje na reťazec S1?
Nie takto?
PString(S1)^;
Potreboval by som vytvoriť duplikát obsahu celého reťazca do dynamicky alokovanej pamäte, na ktorú ukazuje pointer.
- Kód: Vybrat vše
var
S1: string;
Mem: Pointer;
begin
S1:='Obsah reťazca';
GetMem(Mem, Length(S1));
Move(S1, Mem^, 4);
ShowMessage(PString(Mem)^);
end;[
Ale ak procedúra Move naozaj kopíruje iba pointer na reťazec tak je to prúser.