hi,
ich habe folgendes geschrieben um ein item aus einer verketten liste zu löschen:
Delphi-Quellcode:
procedure TServer.ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
var
CurCon: PCon;
begin
CurCon := AnkerCon;
while not (CurCon^.SockHandle = Socket.SocketHandle) do
CurCon := CurCon.next;
if CurCon = AnkerCon then
begin
if CurCon.next <> nil then
begin
CurCon.next.prev := nil;
AnkerCon := CurCon.next;
end;
end
else if CurCon.next = nil then
CurCon.prev.next := nil
else
begin
CurCon.prev.next := CurCon.next;
CurCon.next.prev := CurCon.prev;
end;
Dispose(CurCon);
end;
ich kann ihn leider nicht testen da es eine server anwendung ist und ich zum test n paar leute bräuchte die draufgehen unter wieder disconnecten usw...
deswegen wollt ich hier mal fragen ob es richtig aussieht?
Im ersten fall wird geprüft ob das aktuelle(CurCon) item das erste item (anker) ist im zweiten fall prüfe ich ob das aktuelle das letzte item ist und im letzten fall ist es ein item das in der mitte irgendwo ist. Kann das jemand so erkennen ob da irgendwo fehler sind?