Pienso que mi singleton no funciona porque puedo declarar más de una variable de mi clase singleton:
Unit1:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
Clase2: TClase2;
Clase2b: TClase2;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Clase2 := TClase2.Create;
Clase2b := TClase2.Create; end;
end.
Unit2:
Código Delphi
[-]
unit Unit2;
interface
type
TClase2 = class
private
Contenido: String;
function ObtenerContenido: String;
procedure EstablecerContenido(Contenido: String);
public
class function NewInstance: TObject; override;
procedure FreeInstance; override;
property PropContenido: String read ObtenerContenido
write EstablecerContenido;
end;
implementation
var Clase2: TClase2;
function TClase2.ObtenerContenido: String;
begin
Result := Contenido;
end;
procedure TClase2.EstablecerContenido(Contenido: String);
begin
Self.Contenido := Contenido;
end;
class function TClase2.NewInstance: TObject;
begin
if (NOT Assigned(Clase2))
then begin
Clase2 := TClase2 (inherited NewInstance);
end;
result := Clase2;
end;
procedure TClase2.FreeInstance;
begin
Clase2 := nil;
inherited FreeInstance;
end;
end.