Forum: Programmieren allgemein
by w4rheart,
22. Dez 2010
hello again!
Mir ist aufgefalle, dass der Memory Leak erst dann so extrem wird, wenn ein Spieler (Raumschiff) stirbt.
-> d.h. es liegt sehr wahrscheinlich doch nicht an den Netzwerkklassen, sondern daran, wie dieses Raumschiff gelöscht wird.
Ich poste mal eben wie es created und destructed wird, evtl. ist dort ein Fehler den ich nicht sehe:
TRaumschiffSprite = class( TMySprite )
...
Forum: Programmieren allgemein
by w4rheart,
21. Dez 2010
Hallo nochmal!
Ich lese geradefolgendes Tutorial über Multithreading:
http://wiki.delphigl.com/index.php/Tutorial_Multithreading
Kann man mit Threads MemLeaks beheben, in dem man die kritischen Stellen einfach in einen Thread packt, welcher später freigegeben wird?
Diese Stelle hat mich auf den Gedanken gebracht:
Wahrscheinlich funktioniert das nicht, das wäre ja auch zu schön... ?
Forum: Programmieren allgemein
by w4rheart,
19. Dez 2010
Na gut, dann aber schon mal vielen Dank für Eure Hilfe!!!
Ich werd mich mal mit den Tutorials von Delphi-Treff befassen.
Noch ein schönes Restwochenende ;)
Forum: Programmieren allgemein
by w4rheart,
19. Dez 2010
Nun gut :D
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:
procedure Tclientverbindung.ClientSocketRead( Sender: TObject; Socket:
TCustomWinSocket );
var
lNachricht: Zeichenkette;
Forum: Programmieren allgemein
by w4rheart,
19. Dez 2010
hier:
procedure Verbindung.ClientSocketRead( Sender: TObject; Socket: TCustomWinSocket );
var
lNachricht, lEineNachricht: Zeichenkette;
begin
lNachricht := Socket.receiveText;
hatTextwerkzeug.setzeTrennung( NTrenner );
repeat
lEineNachricht := hatTextwerkzeug.wortAn( lNachricht, 1 );
Forum: Programmieren allgemein
by w4rheart,
19. Dez 2010
hatTextwerkzeug wird in
constructor Verbindung.init( pIPAdresse: Zeichenkette; pPortNr: GanzeZahl;
pMitProtokollieren: Wahrheitswert );
begin
hatTextwerkzeug := Textwerkzeug.init;
..
end;
initialisiert.
Forum: Programmieren allgemein
by w4rheart,
19. Dez 2010
Danke für all Eure Tips, die haben mir schonmal weiter geholfen.
@igel457 Du hast Recht, die Imagelist wurde nicht freigegeben. VOn Andorra2d aus treten jetzt keine Memory Leaks mehr auf.
Ich konnte den Leak auf folgende Prozedur zurückführen:
function Textwerkzeug.wortAn( pText: string; wortNummer: integer ): string;
var
lText: string;
Forum: Programmieren allgemein
by w4rheart,
19. Dez 2010
Hallo nochmal.
Habe jetzt ein Programm welches mir anzeigt, in welcher Zeile des Codes die Leaks auftreten..
Es sind so einige Leaks :D direkt nach dem Start sogar 221 :(
Davon kommen die meisten aber nur 1x vor, im Anhang befindet sich ein Ausschnitt von denen, die am Häufigstens vorkommen.
Allerdings sehen die meisten Zeilen die mir das Programm liefert dann so aus:
...
Forum: Programmieren allgemein
by w4rheart,
18. Dez 2010
hab delphi 7
wenn ich System enbinden will kommt Bezeichner redefiniert.
und nu?
Forum: Programmieren allgemein
by w4rheart,
18. Dez 2010
Hallo zusammen!
Bei meinem Programm treten andauernd memory leaks auf, und das nicht zu knapp :D
Hatte schon eine Auslastung von >500mb.
Das heisst also, dass irgendwo ziemlich schlecht programmiert wurde :roll:
Allerdings weiss ich nicht genau wo bzw. was das Problem ist.
Das Programm ist auch nich gerade klein (über 15 Units) und benutzt unter anderem auch noch Andorra 2d.
Wie...