Thema: Delphi GetMem, FreeMem

Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: GetMem, FreeMem

  Alt 8. Feb 2004, 17:43
@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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat