Exception im Designmodus anzeigen, wie?

Rund um die LCL und andere Komponenten

Exception im Designmodus anzeigen, wie?

Beitragvon dl5eu » 10. Mai 2018, 10:20 Exception im Designmodus anzeigen, wie?

Hallo an alle,

ich benötige mal wieder einen kleinen Schubs in die richtige Richtung :-)

Ich habe ein Package mit eigenen Komponenten erstellt und in die Lazarus-IDE eingebunden. Wenn beim Ändern von Eigenschaften der Komponenten Fehler auftreten, wird eine von EInOutError abgeleitete Exception ausgelöst, die ich um eine Fehlermeldung in Textform ergänzt habe. EInOutError habe ich gewählt, weil es sich um Komponenten zur Ein- und Ausgabe von Daten handelt.

Beim normalen Programmablauf funktioniert das auch korrekt. Soll heißen, die Fehlermeldung wird korrekt gesetzt und ich kann sie mit ShowMessage() anzeigen. Ändere ich jedoch im Designmodus im Objektinspektor eine Eigenschaft und es tritt ein Fehler auf, wird zwar eine Exception ausgelöst aber lediglich ein leeres Fenster ohne Fehlermeldung angezeigt. Was muss ich tun, damit auch im Objektinspektor die Meldung angezeigt wird? Muss ich evtl. meine Exception von einer anderen Klasse ableiten? Wenn ja, von welcher?

Vielen Dank für Eure Hilfe!

Ralf
dl5eu
 
Beiträge: 22
Registriert: 12. Sep 2013, 11:40

Beitragvon Warf » 11. Mai 2018, 15:15 Re: Exception im Designmodus anzeigen, wie?

Also nur damit ich das richtig verstehe, du hast ein Package mit einer Komponente, welche mit den Falschen Properties eine Exception feuert.

Lazarus kümmert sich um das Handeln von Exceptions zur design zeit selbst. Du musst kein eigenes error management mit ShowMessage vornehemen


Ich hab mal eben getestet mit dieser simplen Komponente:
Code: Alles auswählen
 
type
  TTestComp = class(TComponent)
  private
    FTest: Integer;
    procedure SetTest(AValue: Integer);
  published
    property Test: Integer read FTest write SetTest;
 
  end;
 
procedure Register;
 
implementation
 
procedure Register;
begin
  RegisterComponents('Additional',[TTestComp]);
end;
 
{ TTestComp }
 
procedure TTestComp.SetTest(AValue: Integer);
begin
  raise Exception.Create('abc');
end


Sobald ich Test einstellen will zeigt mir Lazarus wunderbar eine Fehlermeldung mit dem Text abc.

Wenn du den fehler selbst abfängst (und ihn dann mit ShowMessage zeigen willst) tu das nicht innerhalb der Komponente, sondern innerhalb der Software die die Komponenten verwendet (so wie Lazarus die Komponenten Fehler abfängt).

Leider ist mir nach wie vor nicht genau klar was du eigentlich für ein Problem hast, denn exceptions funktionieren (wie oben das beispiel) in Lazarus zur Designzeit wunderbar
Warf
 
Beiträge: 913
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

Beitragvon dl5eu » 11. Mai 2018, 18:15 Re: Exception im Designmodus anzeigen, wie?

Hallo Warf,

mir gelingt es leider immer wieder, mich unverständlich auszudrücken. Trotzdem hat mir Deine Antwort geholfen, das Problem zu lösen :-)

Mein Problem waren eigentlich zwei. Hätte ich mir den Vorfahren von EInOutError (also die Klasse Exception) richtig angesehen wäre mir gleich aufgefallen, dass ich mit meiner Klasse, so wie ich sie erstellt habe, das warme Wasser neu erfunden habe. Das war aber nicht weiter schlimm, sondern nur überflüssig. Das eigentliche Problem lag darin, dass ich am Ende des Konstruktors meiner Exception-Klasse das "inherited Create" mit der Fehlermeldung vergessen hatte. :oops:

Jedenfalls danke ich Dir für Deine Hilfe!

Herzliche Grüße,

Ralf
dl5eu
 
Beiträge: 22
Registriert: 12. Sep 2013, 11:40

Beitragvon Warf » 11. Mai 2018, 19:03 Re: Exception im Designmodus anzeigen, wie?

Versuchs mal mit:
Code: Alles auswählen
type
  EInOutError = class(Exception);


Der Exception Typ ist nunmal hilfreich für Try-Except
Warf
 
Beiträge: 913
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: Mac OSX 10.11 | Win 10 | FPC 3.0.0 | L trunk | 
CPU-Target: x86_64, i368, ARM
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried