Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#5

AW: Wann is Class von TObject abgeleitet (FreeAndNil)

  Alt 29. Mär 2020, 18:50
Hoi, in so kurzer Zeit so viele Antworten. Corona machts möglich

Bisher bin ich auch davon ausgegangen, dass bei keiner Angabe automatisch von TObject abgeleitet wird. Der explizite Hinweis in der Hilfe hat mich dann aber verunsichert. Wie könnte man denn dann eine Klasse erstellen, die nicht von TObject abgeleitet ist?

Hier mein vereinfachtes Konstrukt
Delphi-Quellcode:
unit uTestClass;

interface

type
  TTestClass= class
  private
  public
    constructor Create;
    destructor Destroy; override;
  end;

var
  TestClass: TTestClass;

implementation
...
end.

unit Test;
interface

type
  TTestForm = class(TForm);
   published
    procedure FormCreate(Sender: TObject);
 
  private
  public
    constructor Create;
    destructor Destroy; override;

    procedure TuWas;
  end;

var
  TestClass: TTestClass;

implementation

procedure TTestForm.TuWas;
// Wird bei bestimmtem ProzessStand von Timer immer wieder aufgerufen
begin
  ...

  if not TestForm.TestClassReady then // Wenn noch nicht gestartet oder noch nicht fertig
  begin
    if TestClass = nil then
      TestClass := TTestClass.Create;

    if not TestClass.TuWasAnderesReady then
    begin
      TestClass.TuWasAnderes;
      Exit;
    end
    else
    begin
      TestForm.TestClassReady := true;
      FreeAndNil(TestClass);
    end;
  end;
  ...
end.
Ich hoffe das stellt das Konstrukt verständlich da

Wenn ich nun TTestForm beende und für einen zweiten Lauf TTestForm.Create neu erzeuge ist beim zweiten Durchlauf TestClass.TuWasAnderesReady = True
Das wird bei TTestClass.Create auf false gesetzt
Beim zweiten Aufruf wird TTestClass.Create aber gar nbicht aufgerufen weil nicht Nil

Ich prüfe aber noch mal, ob der Fehler sich anderst einschleicht
  Mit Zitat antworten Zitat