AGB  ·  Datenschutz  ·  Impressum  







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

Memory Leaks beheben

Ein Thema von w4rheart · begonnen am 18. Dez 2010 · letzter Beitrag vom 22. Dez 2010
Antwort Antwort
w4rheart

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

AW: Memory Leaks beheben

  Alt 19. Dez 2010, 15:12
hier:
Delphi-Quellcode:
procedure Verbindung.ClientSocketRead( Sender: TObject; Socket: TCustomWinSocket );
var
  lNachricht, lEineNachricht: Zeichenkette;
begin
  lNachricht := Socket.receiveText;
  hatTextwerkzeug.setzeTrennung( NTrenner );
  repeat
    lEineNachricht := hatTextwerkzeug.wortAn( lNachricht, 1 );
    if
      hatTextwerkzeug.laenge( lEineNachricht ) = hatTextwerkzeug.laenge( lNachricht ) then
      lNachricht := ''
    else

      lNachricht := hatTextwerkzeug.textOhne( lNachricht, 1, hatTextwerkzeug.laenge( lEineNachricht ) + hatTextwerkzeug.laenge( NTrenner ) );
    if lEineNachricht <> 'then
      hatListe.haengeAn( ZeichenketteObjekt.init( lEineNachricht ) ); //HIER
    if zMitProtokoll then
      hatClientKontrollfenster.memo1.lines.add( 'Verbindung liest ' + lEineNachricht );
  until lNachricht = '';
end;
Allerdings kann ich nicht auf gibfrei, free oder sonst was zugreifen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#2

AW: Memory Leaks beheben

  Alt 19. Dez 2010, 15:18
ReceiveText gibt einen String zurück. Ich wundere mich eigentlich, dass der Code überhaupt kompiliert wird. Nochmal: wozu diese komische Klasse, wenn man genausogut den Datentyp String verwenden kann?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Memory Leaks beheben

  Alt 19. Dez 2010, 15:20
ReceiveText gibt einen String zurück. Ich wundere mich eigentlich, dass der Code überhaupt kompiliert wird. Nochmal: wozu diese komische Klasse, wenn man genausogut den Datentyp String verwenden kann?
Da hab ich mich auch erst verhauen.

lNachricht ist vom Typ Zeichenkette und das ist String
ZeichenketteObject ist ein Object
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#4

AW: Memory Leaks beheben

  Alt 19. Dez 2010, 15:22
Wo liegt eigentlich der Sinn darin, Bezeichner für bereits existierende Datentypen unbedingt eindeutschen zu wollen? Da muss man ja durcheinanderkommen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Memory Leaks beheben

  Alt 19. Dez 2010, 15:27
Wo liegt eigentlich der Sinn darin, Bezeichner für bereits existierende Datentypen unbedingt eindeutschen zu wollen? Da muss man ja durcheinanderkommen.
Hatte ich ja schon so eine Vermutung http://www.delphipraxis.net/1068099-post15.html
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#6

AW: Memory Leaks beheben

  Alt 19. Dez 2010, 15:31
[OT] Man müsste denjenigen, der diese Units verbrochen hat, dazu zwingen, "Jehova" zu sagen [/OT]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Memory Leaks beheben

  Alt 19. Dez 2010, 15:40
Wenigstens sollte ein CompilerSchalter drin sein:
Delphi-Quellcode:
{$IFDEF Lehrer}
...
{$ELSE}
ShowMessage( 'Merkst du es noch?' );
{$ENDIF}
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
w4rheart

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

AW: Memory Leaks beheben

  Alt 19. Dez 2010, 15: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
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 04:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz