@Pseudo-Dingsbums. Ist so üblich. Aber ohne bekommst du den Cast
PNamen(Namen)^.vName
nicht hin.
@Giantics: Pseudo-Dingbums hat es genau getroffen. Und da sich eine Recordgröße nicht ändert, wäre New und Dispose besser.
So geht es:
Delphi-Quellcode:
type
TNamen = Record
vName: string[255];
nName: string[255];
end;
PNamen = ^TNamen;
procedure TForm1.Button1Click(Sender: TObject);
var
Namen: PNamen;
begin
GetMem(Namen, SizeOf(TNamen));
try
PNamen(Namen)^.vName := 'Mario';
PNamen(Namen)^.nName := 'Kellner';
ShowMessage(Namen.vName + ' ' + Namen.nName);
finally
FreeMem(Namen, SizeOf(TNamen));
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Namen: ^TNamen;
begin
New(Namen);
try
Namen.vName := 'Mario';
Namen.nName := 'Keller';
ShowMessage(Namen.vName + Namen.nName);
finally
Dispose(Namen);
end;
end;
Man muss nicht explizit mit "^" dereferenzieren.