AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Memory Leak bei INDY 10 in der SMTP Komponente?
Thema durchsuchen
Ansicht
Themen-Optionen

Memory Leak bei INDY 10 in der SMTP Komponente?

Ein Thema von emsländer · begonnen am 29. Aug 2006 · letzter Beitrag vom 16. Okt 2006
Antwort Antwort
Seite 3 von 3     123   
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#21

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 29. Aug 2006, 19:16
Hallo,

folgende Änderungen in der Datei idStack.pas sind notwendig, sonst kann es knallen (was ja der Grund für den Leak ist):
Nach Implementation:
Delphi-Quellcode:
var
  GInstanceCount: Integer = 0;
  GStackCriticalSection: TIdCriticalSection;
wird zu
Delphi-Quellcode:
var
  GInstanceCount: Integer = 0;
  GStackCriticalSection: TIdCriticalSection;
  GDestroying: Boolean; // Neue Variable
Die Methode TIdStack.DecUsage muss erweitert werden:
Delphi-Quellcode:
...
  finally GStackCriticalSection.Release; end;

  // Auf Destroying reagieren
  if (GInstanceCount = 0) and GDestroying then
    Sys.FreeAndNil(GStackCriticalSection);
end;
und am Ende:
Delphi-Quellcode:
finalization
  GDestroying := True;
  if GInstanceCount = 0 then
    Sys.FreeAndNil(GStackCriticalSection);
//Edit: Meine Lösung gilt für Version Version 10, jbg's für Version 9.
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#22

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 29. Aug 2006, 19:40
Hi,

Wenn ich das versuche zu compilieren (D2006/Indy10) dann bekomme ich die Fehlermeldung:
[Pascal Fataler Fehler] IndySystem.dpk(29): E2202 Package 'Borland.Delphi' wird benötigt, konnte aber nicht gefunden werden. Wo soll das denn stecken?



Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#23

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 29. Aug 2006, 20:01
Hallo,
Zitat von emsländer:
Wenn ich das versuche zu compilieren (D2006/Indy10) dann bekomme ich die Fehlermeldung:
[Pascal Fataler Fehler] IndySystem.dpk(29): E2202 Package 'Borland.Delphi' wird benötigt, konnte aber nicht gefunden werden. Wo soll das denn stecken?
Den Fehler bekomme ich auch. Hört sich irgendwie nach .Net an . INDY 10 ist ja für beide Plattformen.
Lösung hab' ich leider keine. Ich habe einfach den Suchpfad meines Projekts angepasst und kompiliere die Units in meine Anwendung mit rein.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#24

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 29. Aug 2006, 20:15
Zitat von emsländer:
Wenn ich das versuche zu compilieren (D2006/Indy10) dann bekomme ich die Fehlermeldung:
Mir persönlich gefällt der Quellcode zu Indy 10 überhaupt nicht (deswegen keine Hilfe von mir). Anfangs habe ich da sogar mitentwickelt. Aber nachdem dann C# ohne die SysUtils, Classes, ... Units unterstützt werden sollte, und dafür dann der gesamte Code so umgemodelt wurde dass alles nur noch aus Zwichenschicht-Aufrufen bestand (die ausgetauscht werden können), wurde mir das ganze dann doch zu bunt. Und jetzt wo der gesamte Code (in meinen Augen) völlig unleserlich geworden ist, wurde dann doch ein Neustart für eine C# only Version (in C#) gestartet. So kann man auch ein Projekt kaputt machen.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#25

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 20. Sep 2006, 09:05
Zitat von xaromz:
Hallo,
Zitat von emsländer:
Wenn ich das versuche zu compilieren (D2006/Indy10) dann bekomme ich die Fehlermeldung:
[Pascal Fataler Fehler] IndySystem.dpk(29): E2202 Package 'Borland.Delphi' wird benötigt, konnte aber nicht gefunden werden. Wo soll das denn stecken?
Den Fehler bekomme ich auch. Hört sich irgendwie nach .Net an . INDY 10 ist ja für beide Plattformen.
Lösung hab' ich leider keine. Ich habe einfach den Suchpfad meines Projekts angepasst und kompiliere die Units in meine Anwendung mit rein.

Gruß
xaromz
Ich stell mich jetzt mal blöd

Wie?


Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#26

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 20. Sep 2006, 09:12
Zitat von xaromz:
und am Ende:
Delphi-Quellcode:
finalization
  GDestroying := True;
  if GInstanceCount = 0 then
    Sys.FreeAndNil(GStackCriticalSection);
//Edit: Meine Lösung gilt für Version Version 10, jbg's für Version 9.
Gruß
xaromz
muss ich den Teil:
Delphi-Quellcode:
  {$IFDEF IDFREEONFINAL}
  Sys.FreeAndNil(GStackCriticalSection);
  {$ENDIF}
behalten, oder ersetzen?


Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#27

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 20. Sep 2006, 09:40
Hallo,
Zitat von emsländer:
muss ich den Teil:
Delphi-Quellcode:
  {$IFDEF IDFREEONFINAL}
  Sys.FreeAndNil(GStackCriticalSection);
  {$ENDIF}
behalten, oder ersetzen?
Ersetzen:
Delphi-Quellcode:
initialization
  GDestroying := False;
  GStackClass :=
   {$IFDEF LINUX}     TIdStackLinux; {$ENDIF}
   {$IFDEF MSWINDOWS} TIdStackWindows; {$ENDIF}
   {$IFDEF DOTNET}    TIdStackDotNet; {$ENDIF}
  GStackCriticalSection := TIdCriticalSection.Create;

finalization
  GDestroying := True;
  if GInstanceCount = 0 then
    Sys.FreeAndNil(GStackCriticalSection);
end.
Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#28

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 20. Sep 2006, 09:45
Zitat von xaromz:
Hallo,
Zitat von emsländer:
muss ich den Teil:
Delphi-Quellcode:
  {$IFDEF IDFREEONFINAL}
  Sys.FreeAndNil(GStackCriticalSection);
  {$ENDIF}
behalten, oder ersetzen?
Ersetzen:
Delphi-Quellcode:
initialization
  GDestroying := False;
  GStackClass :=
   {$IFDEF LINUX}     TIdStackLinux; {$ENDIF}
   {$IFDEF MSWINDOWS} TIdStackWindows; {$ENDIF}
   {$IFDEF DOTNET}    TIdStackDotNet; {$ENDIF}
  GStackCriticalSection := TIdCriticalSection.Create;

finalization
  GDestroying := True;
  if GInstanceCount = 0 then
    Sys.FreeAndNil(GStackCriticalSection);
end.
Gruß
xaromz
tx

und wie nun compilieren?

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#29

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 20. Sep 2006, 13:17
Zitat von emsländer:
Zitat von xaromz:
Hallo,
Zitat von emsländer:
muss ich den Teil:
Delphi-Quellcode:
  {$IFDEF IDFREEONFINAL}
  Sys.FreeAndNil(GStackCriticalSection);
  {$ENDIF}
behalten, oder ersetzen?
Ersetzen:
Delphi-Quellcode:
initialization
  GDestroying := False;
  GStackClass :=
   {$IFDEF LINUX}     TIdStackLinux; {$ENDIF}
   {$IFDEF MSWINDOWS} TIdStackWindows; {$ENDIF}
   {$IFDEF DOTNET}    TIdStackDotNet; {$ENDIF}
  GStackCriticalSection := TIdCriticalSection.Create;

finalization
  GDestroying := True;
  if GInstanceCount = 0 then
    Sys.FreeAndNil(GStackCriticalSection);
end.
Gruß
xaromz
tx

und wie nun compilieren?

Gruss

EL
- push -

Wie muss ich nun verfahren, um die Indylib neu zu bauen?

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#30

Re: Memory Leak bei INDY 10 in der SMTP Komponente?

  Alt 16. Okt 2006, 16:04
- ich pushe dieses Thema noch einmal, weil Borland einer Anfrage nicht nachkommt und auf den kostenpflichtigen Support verweist. -

Zitat von emsländer:
Zitat von emsländer:
Zitat von xaromz:
Hallo,
Zitat von emsländer:
muss ich den Teil:
Delphi-Quellcode:
  {$IFDEF IDFREEONFINAL}
  Sys.FreeAndNil(GStackCriticalSection);
  {$ENDIF}
behalten, oder ersetzen?
Ersetzen:
Delphi-Quellcode:
initialization
  GDestroying := False;
  GStackClass :=
   {$IFDEF LINUX}     TIdStackLinux; {$ENDIF}
   {$IFDEF MSWINDOWS} TIdStackWindows; {$ENDIF}
   {$IFDEF DOTNET}    TIdStackDotNet; {$ENDIF}
  GStackCriticalSection := TIdCriticalSection.Create;

finalization
  GDestroying := True;
  if GInstanceCount = 0 then
    Sys.FreeAndNil(GStackCriticalSection);
end.
Gruß
xaromz
tx

und wie nun compilieren?

Gruss

EL

Wie muss ich nun verfahren, um die Indylib neu zu bauen?

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 02:31 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