Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 1.823 pregleda

Najnovija ↓

Da li delphi baguje? 22.12.2023. u 06:05 · pre 34 meseca #1
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?
Re: Da li delphi baguje? 22.12.2023. u 18:31 · pre 34 meseca #2
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.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Da li delphi baguje? 22.12.2023. u 19:06 · pre 34 meseca #3
Const je pointer na Tmem, njega ne možeš da promeniš.
Nisu const članovi niza na koje pokazuje tm
Re: Da li delphi baguje? 23.12.2023. u 14:25 · pre 34 meseca #4
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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme