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 !?