Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Pointer auf Record - Strings problematisch ?

  Alt 7. Okt 2009, 10:00
Moin !

Habe da eine Struktur:
Delphi-Quellcode:
type
  PClient = ^TClient;
  TClient = record
    PeerIP : string[15]; { Cleint IP address }
    HostName : String[40]; { Hostname }
    Connected : TDateTime; { Time of connect }
    RestString : String;
  end;
Diese Struktur verwende ich bei einem TCP Server um Infos über die Clients abzulegen:
Delphi-Quellcode:
procedure TMainFormServer.TCPServerConnect(AContext: TIdContext);
var NewClient: PClient;
begin
  GetMem(NewClient, SizeOf(TClient));

  NewClient.PeerIP := AContext.Connection.Socket.Binding.PeerIP;
  NewClient.Connected := Now;
  NewClient.RestString := '';

  AContext.Data := TObject(NewClient);
end;
Wenn sich der erste Client connected klappt das ganz gut. Kommt aber ein zweite Client, dann erhalte ich einen Fehler:
Zitat:
Zugriffsverletzung bei Adresse 004051C0 in Modul 'XYZ.exe'. Lesen von Adresse 30345F4C.
Das Problem liegt hier:
NewClient.RestString := '';

Gibt es da generelle Probleme wenn ich in dem Record Strings ohne Längenangabe verwende?
Wird nicht für jeden String auch die Länge mitgespeichert? Dann sollte das doch kein Problem sein !?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat