Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Da li delphi baguje?

[es] :: Pascal / Delphi / Kylix :: Da li delphi baguje?

[ Pregleda: 458 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milan Milosevic

Član broj: 67
Poruke: 932
*.dynamic.isp.telekom.rs.



+31 Profil

icon Da li delphi baguje?22.12.2023. u 05:05 - pre 4 meseca
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?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Da li delphi baguje?22.12.2023. u 17:31 - pre 4 meseca
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.
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Da li delphi baguje?22.12.2023. u 18:06 - pre 4 meseca
Const je pointer na Tmem, njega ne možeš da promeniš.
Nisu const članovi niza na koje pokazuje tm
 
Odgovor na temu

Milan Milosevic

Član broj: 67
Poruke: 932
2a06:63c5:8901:9200:6143:3c5..



+31 Profil

icon Re: Da li delphi baguje?23.12.2023. u 13:25 - pre 4 meseca
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.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Da li delphi baguje?

[ Pregleda: 458 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.