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


Anmelden zum Antworten