Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   EAbstractError bei TCustomTaskDialog.Create (https://www.delphipraxis.net/199803-eabstracterror-bei-tcustomtaskdialog-create.html)

freimatz 21. Feb 2019 07:19

EAbstractError bei TCustomTaskDialog.Create
 
Hallo,
ein Anwender schickt mir einen BugReport über madexcept:

Code:
exception class : EAbstractError
exception message : Abstrakter Fehler.

main thread ($1928):
0045c3ea mfbo2a32.exe System.SysUtils AbstractErrorHandler
004052b4 mfbo2a32.exe System 414 @AbstractError
00490237 mfbo2a32.exe System.Classes TComponent.InsertComponent
0049001f mfbo2a32.exe System.Classes TComponent.Create
005c729e mfbo2a32.exe Vcl.Dialogs TCustomTaskDialog.Create
00c1ad83 mfbo2a32.exe p_TaskDialoge 51 TMyTaskDialog.Create
Noch ein bischen Code:

Delphi-Quellcode:
type
  TMyTaskDialog = class(TTaskDialog)
  strict private
    procedure TaskDialogHyperLinkClicked(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
    function CreateButton(const ACaption, AHint: String; AResult: Integer): TTaskDialogButtonItem;
  end;

constructor TMyTaskDialog.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  OnHyperlinkClicked := TaskDialogHyperLinkClicked;
  Flags := [tfUseCommandLinks, tfEnableHyperlinks];
end;
Den Fehler kann ich selber so nicht reproduzieren. Ich sehe jetzt auch nicht wo man bei TTaskDialog eine abstrakte Methode überschreiben müsste. Was der Anwender besonderes gemacht hat weiß ich gerade auch nicht.
Irgendwelche Ideen?

peterbelow 21. Feb 2019 11:14

AW: EAbstractError bei TCustomTaskDialog.Create
 
Das Problem scheint nicht der taskdialog zu sein, sondern die Komponente, die Du als Owner an TMyTaskDialog.Create übergibts. Es ist dessen InsertComponent-Methode, die offenbar den Fehler verursacht.

freimatz 21. Feb 2019 16:31

AW: EAbstractError bei TCustomTaskDialog.Create
 
Ah, Danke. Habe es daraufhin herausgefunden. Da wird statt "Self" fälschlicherweise "@Self" übergeben.

Self ist dabei eine Ableitung von TForm. Der Parameter der das bekommt ist Own:TComponent.
Da wundere ich mich aber schon, warum Delpi da keinen Fehler ausgibt. @Self ist sicher kein TComponent.

Ah doch - {$T-} :oops: Zeit das zu ändern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 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