![]() |
Re: Meine Komponente wirft Exceptions zur Designtime. Warum?
So.
Hab den Fehler gefunden: Ich hatte das "read" nach der published property Code vergessen. Jetzt stimmts aber so weit... Und mal ehrlich: Dass hättet ihr doch sehen müssen? Ihr seid doch sonst so gut drauf ;) {Ist jetzt echt ernst gemeint, also nichts falsches reininterpretieren bitte :)} Euer LDer PS: Wenn man einer property den Typ TFileName gibt, kann man im OI ja per Doppelklick/Dialog eine Datei wählen. Gibt es da auch eine Möglichkeit, Ordner auswählbar zu machen? |
Re: Meine Komponente wirft Exceptions zur Designtime. Warum?
Hi,
bin ja nicht so :wink: nachdem ich einige Sachen (Win7 SDK, WAIK usw. runtergeladen habe) habe ich den Code mal durch D7 und D2K9 gejagt. Ergebnis: Der Destructor von THandle ist nicht sauber! Es sind zwei unterschiedliche Ergebnisse zu erwarten: 1) So wie schon geschreiben, neue App, Unit mTHandler einbinden, Variable deklarieren, zwei Buttons (ein Create, ein Destroy) drauf, F9, Create drücken, App beenden: -> läuft! 2) F9, Create drücken, Destroy drücken, App beeenden: -> läuft nicht. Her der geänderte destructor:
Delphi-Quellcode:
Und hier die TestApp:
destructor THandler.Destroy;
var I:integer; begin vRawCode.Free; vParsedCode.Free; for I:= (High(vPlugins))downto 0 do FreeLibrary(vPlugins[I]); inherited Destroy; end;
Delphi-Quellcode:
So LDericher, nun quäl dich mal selber ein wenig, bis zur Lösung.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, mTHandler, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } TH : THandler; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin TH := THandler.Create(Self); end; procedure TForm1.FormDestroy(Sender: TObject); begin Button2Click(Sender); end; procedure TForm1.Button2Click(Sender: TObject); begin if (TH <> nil) then FreeAndNil(TH); // ein TH.Free geht garnicht, warum?! end; end. An deinem 'vergessenen' read liegt es wohl nicht. Gruß |
Re: Meine Komponente wirft Exceptions zur Designtime. Warum?
Also bei mir läufts... ich hab natürlich auch den Destruktor geändert, hatte ich das nicht erwähnt? sorry :wall: bin etwas verplant heute ;)
Wie gesagt, bei mir gibts keine Probleme; wenn ich die Komponente installiere, kann ich sie so benutzen, wie ich will ;) LDericher |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz