Re: (const Param:Integer)oder(Param:Integer)-Unterschied?
Delphi's Code Optimierung ändert nicht die Symantik.
Zitat:
MyFunc und ShowThat sind aber schon gleich deklarariert? |
Re: (const Param:Integer)oder(Param:Integer)-Unterschied?
Delphi-Quellcode:
Da kommt bei mir für SpinEdit1.Value=1 in der MessageBox ein "1" heraus.
function EBP: Cardinal; asm mov eax, ebp end;
// {$O-} function ShowThat(const Param: Integer): Boolean; begin PInteger(@Param)^ := 9; if Cardinal(@Param) <= EBP then // Stack wird von der größeren zur kleineren Adresse hin aufgebaut ShowMessage('Param liegt im Stackframe von ShowThat'); end; procedure TForm1.Button1Click(Sender: TObject); var V: Integer; begin V := SpinEdit1.Value; ShowThat(V); ShowMessage(IntToStr(V)); end; Das kann man auch noch anders Beweisen, indem man @Param mit dem EBP-Register vergleicht. Ist @Param kleiner gleich EBP, dann liegt @Param im Stackframe von ShowThat und nicht im Stackframe von Button1Click. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz