Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#699

AW: Was nervt euch so, wärend der Programmierung oder so allgemein

  Alt 3. Dez 2011, 23:07
Nein, CONST übergibt, bei Typen über 64 Bit und bei dieser typlosen Variante (genauso wie VAR) eine Referenz.



Delphi-Quellcode:
procedure Test(const Buffer; X: Boolean = False);
type
  TArr = array[0..9] of Char;
begin
  if X then
    ShowMessage('$' + IntToHex(NativeInt(@Buffer), 8) + ' "' + TArr(Buffer)[5] + '"')
  else
    ShowMessage('$' + IntToHex(NativeInt(@Buffer), 8));
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  B: array[0..0] of Byte;
  S: String;
begin
  ShowMessage('$' + IntToHex(NativeInt(@B), 8));
  Test(B);

  S := '123456789';
  ShowMessage('$' + IntToHex(NativeInt(@S[3]), 8));
  Test(S[3], True);

Und es ist nicht einfach nur Kosmetik/Schönheit, sondern auch Symetrie ... ich übergebe eine Zeile weiter vorne diese Variable auch als CONST (Stream.WriteBuffer, wo dieses übrigens funktioniert) und würde es hier gerne genauso aufrufen = einheitlicher Code
$2B or not $2B