AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Wieder ein Variablen Problem - komme nicht weiter.
Thema durchsuchen
Ansicht
Themen-Optionen

Wieder ein Variablen Problem - komme nicht weiter.

Ein Thema von AlexII · begonnen am 30. Sep 2008 · letzter Beitrag vom 30. Sep 2008
Antwort Antwort
Seite 4 von 4   « Erste     234   
Eos-PVU

Registriert seit: 18. Dez 2006
2 Beiträge
 
#31

Re: Wieder ein Variablen Problem - komme nicht weiter.

  Alt 30. Sep 2008, 16:49
Hi!

Zitat von AlexII:
Aber FiCountCorrect, jkeins, jkzwei sind doch nicht constant oder wie meinst du das?
Es geht dabei um die Art, wie Werte an eine Prozedur übergeben werden. Die Werte werden nämlich auf den Stack gepackt:

Bei
procedure foo (bar: tbar); 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.
Braucht bei komplexen Typen, z.B. Records, viel Stackspeicher.

Bei
procedure foo (var bar: tbar); 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.
Braucht nur einen Pointer auf dem Stack.

Bei
procedure foo (const bar: tbar); 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.
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 22:44 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