[gelöst] Formularansicht Fehlermeldung
[gelöst] Formularansicht Fehlermeldung
Hallo,
eine Anfängerfrage: Eben habe ich ein Delphi-Programm XY.dpr in Lazarus konvertiert. Nun ist allerdings das Formular nicht sichtbar.
Wenn ich im Menüpunkt Ansicht | Formular/Unit-Ansicht umschalten (F12) wähle, kommt eine Fehlermeldung:
Unable to find the component class "TComm32".
It is not registered via RegisterClass and no lfm was found.
It is needed by unit: XYMain.pas
Im Verzeichnis gibt es neben XYMain.pas ebenso die Form-Datei XYMain.lfm
TComm32 ist in async32.pas definiert, einer uralten Datei, welche auch im Verzeichnis vorhanden ist.
Ich kann das Programm kompilieren und es läuft auch, aber ich komme nicht an die Formularansicht. Was ist der Fehler genau und wie kann man ihn beheben?
Danke für Hinweise, Theo.
eine Anfängerfrage: Eben habe ich ein Delphi-Programm XY.dpr in Lazarus konvertiert. Nun ist allerdings das Formular nicht sichtbar.
Wenn ich im Menüpunkt Ansicht | Formular/Unit-Ansicht umschalten (F12) wähle, kommt eine Fehlermeldung:
Unable to find the component class "TComm32".
It is not registered via RegisterClass and no lfm was found.
It is needed by unit: XYMain.pas
Im Verzeichnis gibt es neben XYMain.pas ebenso die Form-Datei XYMain.lfm
TComm32 ist in async32.pas definiert, einer uralten Datei, welche auch im Verzeichnis vorhanden ist.
Ich kann das Programm kompilieren und es läuft auch, aber ich komme nicht an die Formularansicht. Was ist der Fehler genau und wie kann man ihn beheben?
Danke für Hinweise, Theo.
Zuletzt geändert von Theozh am Fr 9. Mai 2014, 17:35, insgesamt 1-mal geändert.
Re: Formularansicht Fehlermeldung
Das hört sich so an, als würdest du eine Komponente TComm32 auf dem Formular haben, die aber nicht installiert ist. Wenn du im Formulardesigner auf die Formularansicht schaltest, hilft es nichts, wenn die Unit erreichbar ist, sondern sie muss in Lazarus einkompiliert sein. Das heißt, du musst das Package, zu dem TComm32 gehört, installieren. Oder, du entfernst den Hinweis auf TComm32 aus der zughörigen lfm-Datei und erzeugst die Komponente in der entsprechenden Formular-Unit zur Laufzeit "von Hand".
Re: Formularansicht Fehlermeldung
Die TComm32 aus der .lfm zu löschen hatte ich schon probiert. Dann sehe ich zwar das Formular, aber das Programm stürzt ab. Wie würde ich dann die Komponente zur Laufzeit "von Hand" erzeugen?
Vielleicht noch etwas anderes. In async32.pas gibt es die Zeilen:
Da müsste ich 'Extras' z.B. durch 'Standard' ersetzen können?
Ebenso hatte ich erfolglos versucht:
Ich habe kein Package sondern nur die Datei async32.pas
Wie kann ich die registrieren lassen? Laut Fehlermeldung müsste ich eine ja Class und nicht eine Component registieren...
Vielleicht noch etwas anderes. In async32.pas gibt es die Zeilen:
Code: Alles auswählen
procedure Register;
begin
RegisterComponents('Extras', [TComm32]);
end;
Ebenso hatte ich erfolglos versucht:
Code: Alles auswählen
RegisterNoIcon([TComm32]);
Wie kann ich die registrieren lassen? Laut Fehlermeldung müsste ich eine ja Class und nicht eine Component registieren...
Re: Formularansicht Fehlermeldung
Theozh hat geschrieben:Wie würde ich dann die Komponente zur Laufzeit "von Hand" erzeugen?
Code: Alles auswählen
uses async32.pas;
...
var MyComm32:TComm32;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
MyComm32:=TComm32.Create(self);
end;
Re: Formularansicht Fehlermeldung
Danke Theo.
Nachdem ich noch erfolglos versucht habe, ein Package zu erzeugen...
So tut's... so einfach ist's
Nachdem ich noch erfolglos versucht habe, ein Package zu erzeugen...
So tut's... so einfach ist's

Re: Formularansicht Fehlermeldung
Und dann müsstest du noch die Properties setzen, die in der lfm-Datei stehen, also etwa sotheo hat geschrieben:Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject); begin MyComm32:=TComm32.Create(self); end;
Code: Alles auswählen
MyComm32 := TComm32.Create(self);
MyComm32.Baudrate := br4800;
MyComm32.Parity := pNone;
// ...
Re: [gelöst] Formularansicht Fehlermeldung
Danke wp_xyz.
Ja, genauso wie Du gesagt hast: Object aus der der .tfm löschen und "von Hand" erzeugen.
Ja, genauso wie Du gesagt hast: Object aus der der .tfm löschen und "von Hand" erzeugen.