AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Item aus verketteter liste löschen

Ein Thema von Pseudemys Nelsoni · begonnen am 19. Sep 2004 · letzter Beitrag vom 19. Sep 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Item aus verketteter liste löschen

  Alt 19. Sep 2004, 13:44
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?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von atreju2oo0
atreju2oo0

Registriert seit: 5. Dez 2003
Ort: Berlin
289 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Item aus verketteter liste löschen

  Alt 19. Sep 2004, 13:49
Das sieht eigentlich genau richtig aus.

8)
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: Item aus verketteter liste löschen

  Alt 19. Sep 2004, 13:53
hab das:

Delphi-Quellcode:
    if CurCon.next <> nil then
    begin
      CurCon.next.prev := nil;
      AnkerCon := CurCon.next;
    end;
nochmal in:

Delphi-Quellcode:
    if CurCon.next <> nil then
      CurCon.next.prev := nil;
    AnkerCon := CurCon.next;
geändert.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Item aus verketteter liste löschen

  Alt 19. Sep 2004, 15:04
warum benutzt du nicht einfach "TList" und rufst dann die methode "delete" davon auf?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Item aus verketteter liste löschen

  Alt 19. Sep 2004, 15:42
Zitat von SirThornberry:
warum benutzt du nicht einfach "TList" und rufst dann die methode "delete" davon auf?
Das gleiche Frage ich mich eigentlich auch. Da es sich aber offensichtlich um eine Serveranwendung sollte es auch ThreadSafe sein. Deshalb schlage ich anstatt TList TThreadList vor.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Item aus verketteter liste löschen

  Alt 19. Sep 2004, 17:10
TList ist aber keine verkettete Liste, sondern eine sequenzielle!
Delphi bringt von Haus aus aber keine Klassen für allgemeine verkettete Listen mit, sondern nur für Stacks und Queues. Vielleicht tuts das für dich auch.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz