AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi (const Param:Integer)oder(Param:Integer)-Unterschied?
Thema durchsuchen
Ansicht
Themen-Optionen

(const Param:Integer)oder(Param:Integer)-Unterschied?

Ein Thema von sniper_w · begonnen am 6. Jul 2005 · letzter Beitrag vom 7. Jul 2005
 
jbg

Registriert seit: 12. Jun 2002
3.485 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: (const Param:Integer)oder(Param:Integer)-Unterschied?

  Alt 6. Jul 2005, 22:35
Zitat von SirThornberry:
ich kenn den unterschied
Womöglich doch nicht, oder du beziehst dich auf einen anderen Datentyp als Integer.
Zitat:
ich wollte damit nur die wirkungsweise von const demonstrieren, nämlich das eine referenz übergeben wird und keine kopie
Das hängt vom Datentyp des Parameters ab. Bei Integern wird bei const trotzdem eine Kopie auf den Stack gelegt:
Code:
mov eax, [MyInteger] // Wert von MyInteger in eax (=1. Parameter bei register-Call)
call DoSomeWildThings
Bei einem CallByRef müsste der Code so aussehen:
Code:
mov eax, OFFSET MyInteger // Adresse von MyInteger in eax (=1. Parameter bei register-Call)
call DoSomeWildThings
Oder alternativ:
Code:
lea eax, MyInteger // Adresse von MyInteger in eax (=1. Parameter bei register-Call)
call DoSomeWildThings

Bei Arrays und Records stimmt deine Aussage. Eine Faustregel ist: Alles was sich in 4 Bytes reinquetschen lässt, wird bei const als Kopie auf den Stack übergeben. Alles andere geht als Zeiger auf den Stack.

Zitat:
und das konnte man wunderbar demonstrieren in dem man das const "ignoriert" und den wert innerhalb der funktion ändert.
Das funktioniert bei Integer aber nicht. Egal wierum man das Blatt wendet.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz