![]() |
Re: Wieder ein Variablen Problem - komme nicht weiter.
Hi!
Zitat:
Bei
Delphi-Quellcode:
wird die komplette Variable "bar" auf den Stack gepackt. Änderungen an "bar" sind innerhalb der Prozedur möglich, wirken aber nur auf die lokale Kopie. Beim Aufruf von "foo" können auch Konstanten (const-Deklarierte Werte) und Literale (Werte im Quelltext wie 1 oder 'foobar') übergeben werden.
procedure foo (bar: tbar);
Braucht bei komplexen Typen, z.B. Records, viel Stackspeicher. Bei
Delphi-Quellcode:
wird eine Referenz (Pointer) auf die Variable übergeben. Änderungen von "bar" innerhalb der Prozedur verändern die beim Aufruf angegebene Variable. Die Übergabe von Konstanten und Literalen ist natürlich nicht möglich.
procedure foo (var bar: tbar);
Braucht nur einen Pointer auf dem Stack. Bei
Delphi-Quellcode:
wird ebenfalls eine Referenz (Pointer) auf die Variable übergeben. Änderungen von "bar" innerhalb der Prozedur werden vom Compiler verhindert. Die Übergabe von Konstanten und Literalen ist möglich.
procedure foo (const bar: tbar);
Braucht nur einen Pointer auf dem Stack und spart deshalb bei komplexen Typen gegenüber der ersten Variante viel Speicherplatz. Bei Integer besteht kein Unterschied. Werte, die in einer Prozedur/Funktion nicht geändert werden (das ist bei Deinen Werten FiCountCorrect, jkeins, jkzwei der Fall) übergebe ich immer als const - eine versehentliche Zuweisung läßt sich dann gar nicht compilieren. das "const" könnte hier auch weggelassen werden. Gruß Eos-PVU |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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