TFont konnte nicht zu TFont zugewiesen werden...
-
Hallo,
ich rufe in einer Dll-Datei den folgenden Codeblock auf:
void create_user_form(TWinControl* parent) { TFrame1 *Frame1 = new TFrame1(NULL); Frame1 -> Left = 0; Frame1 -> Top = 0; Frame1 -> Parent = parent; }
Als Parameter für paren übergebe ich aus der EXE-Datei Form1...
void __fastcall TForm1::Button1Click(TObject *Sender) { create_user_form(Form1); }
Als Ergebnis bekomme ich eine Exception der Klasse EConvertError mit der Aussage
TFont konnte nicht zu TFont zugewiesen werden
Was mache ich falsch???
Danke
Handyman
-
Hi,
ich habe das gleiche Problem wie handyman, nur ich exportiere aus der dll eine Klasse
Auszug aus dem DLL-Code /--------------------------------------------------------------------------- #ifdef __DLL__ #define EXP_CLASS __declspec(dllexport) #endif // __DLL__ #ifndef __DLL__ #define EXP_CLASS __declspec(dllimport) #endif // NOT __DLL__ class EXP_CLASS TDrucker_tools : public TControl { public: ... void SetFont(TFont *Schrift, float groesse); ... }; //--------------------------------------------------------------------------- void TDrucker_tools::SetFont(TFont *Schrift, float groesse) { if (Schrift != NULL) { Ausgabe->Font->Assign(Schrift); // <<<<<<===== FEHLER ????? Ausgabe->Font->PixelsPerInch = GetDruckerInfo(di_hoehe_dpi,false); // muss noch die Größe von mm in px umrechnen Ausgabe->Font->Size = (int) groesse; } }
und im Programm rufe ich dann so auf
TFont *Ueberschrift = new TFont; TDrucker_tools *Druck = new TDrucker_tools(NULL); AnsiString TextT = "HgQ᎙ "; Ueberschrift->Name = "Arial Black"; Ueberschrift->Size = 10; Ueberschrift->Color = clBlack; Druck->BeginDoc(); Druck->SetMM(true); Druck->SetFont(Ueberschrift, 10.0); Druck->TextLeft(20, 20 ,TextT); Druck->Linie(20, 20, 80, 20, clBlack, psSolid, 0.1); Druck->Linie(20, 20, 80, 20 + Druck->FontHeight(TextT), clBlack, psSolid, 0.1); } Druck->EndDoc(); Druck->ShowPreview(); delete Ueberschrift; delete Druck;
Was soll die Fehlermeldung ??
... Ach noch etwas, baue ich das ganze in eine Funktion innerhalb der DLL funktioniert es ohne Fehlermeldung !!
Gruß Mario