Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

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

  Alt 6. Jul 2005, 21:39
genau, out gibt es auch noch.
Einen Nachtrag noch zu dem Const.
Wenn du folgendes versuchst
Delphi-Quellcode:
function MyFunc(const Param:Integer):Boolean;
begin
  Param := 9;
end;
meckert der Compiler eben weil es ein Constanter Wert ist.

wenn du aber das ganze so machst
Delphi-Quellcode:
function MyFunc(const Param:Integer):Boolean;
begin
  PInteger(@Param)^ := 9;
end;
dann meckert kein Compiler und du siehst das der Übergabewert sich ändert.

wenn du also zweite variante wie folgt aufrufst
Delphi-Quellcode:
var test1: Integer;
begin
  test1 := SpinEdit1.Value;
  ShowThat(test1);
  showmessage(inttostr(test1));
und SpinEdit1.Value = 5 ist, dann
wirst du bei deinem ShowMessage dann sehen das test1 auf einmal 5 ist weil das const überlistet wurde. Und genau dafür ist Const eigentlich da, damit sowas nicht passiert.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat