Einzelnen Beitrag anzeigen

w4rheart

Registriert seit: 16. Mär 2010
53 Beiträge
 
#31

AW: Memory Leaks beheben

  Alt 19. Dez 2010, 16:46
Nun gut
wir halten also fest: Die Units sind vermurkst.
Trotzdem muss man doch den MemoryLeak da raus bekommen können oder?

Zeichnkette Objekt wird hier freigegeben:
Delphi-Quellcode:
procedure Tclientverbindung.ClientSocketRead( Sender: TObject; Socket:
  TCustomWinSocket );
var
  lNachricht: Zeichenkette;
begin
  inherited ClientSocketRead( Sender, Socket );
  while not hatListe.istLeer do begin
    hatListe.zumAnfang;
    lNachricht := ZeichenketteObjekt( hatListe.aktuelles ).inhalt;
    hatListe.entferneAktuelles; //Hier denke ich zumindest
    bearbeiteNachricht( lNachricht );
  end;
end;
entferneAktuelles macht folgendes:
Delphi-Quellcode:
procedure Liste.entferneAktuelles;
var
  lZeiger: Knoten;
begin
  if not ( istDavor or istDahinter ) then begin
    if hatAktuelles = hatAnfang then
      hatAnfang := hatAnfang.nachfolger
    else begin
      hatAktuelles.vorgaenger.setzeNachfolger( hatAktuelles.nachfolger );
      hatAktuelles.nachfolger.setzeVorgaenger( hatAktuelles.vorgaenger );
    end;
    lZeiger := hatAktuelles;
    hatAktuelles := hatAktuelles.nachfolger;
    lZeiger.free; //Hier wird es freigebgen
    dec( zLaenge );
  end
end;
Tut mir Leid, wenn ich euch mit diesem ganzen Kram "belästige"
Wie schon richtig vermutet, habe ich diese Units aus der Schule...
Das dieses ganze Eingedeutsche nicht so schön ist, dem würde ich ebenfalls zustimmen.

Was gibt es denn für Alternativen?
Die Units werden dafür gebraucht eine Netzwerkverbindung aufzubauen und zwischen einem Server und Clients Daten auszutauschen.
Gibt es evtl. andere Projekte/BibliothekenProgramme die "schöner" sind?

MfG
  Mit Zitat antworten Zitat