[ Milan Milosevic @ 22.12.2023. 05:05 ] @
U ovom primeru mi memo ispisuje 55 umesto 22?
Code:

procedure TForm1.Button6Click(Sender: TObject);
  Procedure Test(const tm:TMem);
  begin
     tm[0]:=55;
  end;
var m:TMem;
begin
   SetLength(m,1);
   m[0]:= 22;
   Test(m);
   Memo1.Lines.Add(m[0].ToString)
end;


Da li to nove verzije Delphija više ne vode računa o tipu paramatara funkcije?
[ savkic @ 22.12.2023. 17:31 ] @
Mislim da se const argumenti prenose kao pointeri, dakle ne pravi se kopija TMem, vec se original prenese i zato promeni vrednost, pretpostavljam da ti je TMem neki array.

E sad, zasto const ne spreci promenu vrednosti ne znam, verovatno ima neko podesavanje za to.
[ djoka_l @ 22.12.2023. 18:06 ] @
Const je pointer na Tmem, njega ne možeš da promeniš.
Nisu const članovi niza na koje pokazuje tm
[ Milan Milosevic @ 23.12.2023. 13:25 ] @
Da, sakapirao sam to. Što je po meni bezveze.
Ako nešto odrediš kao konstantno, svi njegovi delovi bi trebali biti konstantni.
Ovo u stvari dokazuje da se ne pravi nova kopija elemenata kad se definišu kao parametri neke funkcije osim ako nisu tipa integer i sl.