Besten Dank für die Antworten.
Leider blicke ich immer noch nicht durch bei den Konstruktoren/Destruktoren.
Z.b
Delphi-Quellcode:
type
TMail =
Class
smtp: TIdSMTP;
sslIOHandler: TIdSSLIOHandlerSocketOpenSSL;
private
// Private
public
// Public
constructor Create(param1, param2 :
String);
destructor Destroy;
end;
var
Mail : TMail;
implementation
constructor TMail.Create(param1, param2 :
String);
begin
smtp := TIdSMTP.Create(
nil);
sslIOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(
nil);
end;
destructor TMail.Destroy;
begin
if Assigned(
smtp)
then
FreeAndNil(
smtp);
if Assigned(sslIOHandler)
then
FreeAndNil(sslIOHandler);
end;
4) Wann ist ein "Inherited" notwenig im Konstruktor/Dekonstruktor ? Sobald von einer Klasse geerbt wird, richtig ?
TMail = Class(TComponent) // Hier währe ein Inherited dann notwendig, richtig ?
.
5) Wie bei meinem Beispiel zu sehen habe ich keinen "Standard-Konstruktor" erstellt.
Meine Klasse soll nur mit diesem Konstruktor mit Parameter instanziert werden können.
Bei C# ist ein Standardkonstruktor notwendig, ist das bei Delphi auch der Fall ?
6) Das Beispiel oben lässt sich kompillieren und instanzieren.
Leider verstehe ich aber nicht warum bei
Mail.Free
der Destruktor nicht abgehandelt wird.
Ich erzeuge Memory-Leaks, was mache ich falsch ?
Lösung zu 6)
destructor Destroy; override;
Gruss Int3g3r
PS: Um Memory-Leaks zu Prüfen folgende Zeile beim Projekt->Quelltext einfügen
ReportMemoryLeaksOnShutdown := True;