Komponente erweitern spuckt Fehler aus



  • Hallo.

    Ich habe eine (Pascal) Komponente und möchte diese um eine Text Eigenschaft erweitern

    private
    FMyText: WideString;
    published
    property MyText: WideString read FMyText write FMyText;

    Kann die Anwendung auch compilieren, aber exe sagt ntdll.dll error.
    Was mach ich denn falsch?

    System:
    win2k
    cbuilder5



  • Soweit ich weiß musst du dem read-statement eine Funktion zuweisen und nicht die Variable direkt (war zumindest bei Variablen im VCL-Stiel so)...



  • Danke, das habe ich probiert. Jedoch bekomme ich jetzt einen external Fehler :(:(:(

    private
        FCName: WideString;
    public
        function GetCName: WideString;
        procedure SetCName(Value: WideString);
        property CName: WideString read GetCName write SetCName;
    
    procedure Kompo.SetCName(Value: WideString);
    begin
      FCName := Value;
    end;
    
    function Kompo.GetCName;
    begin
        Result := FCName;
    end;
    

    Ergebnis
    [Linker Fehler] Unresolved external '__fastcall Kompo::SetCName(System::AnsiString)' referenced from ..\UNIT1.OBJ

    So erstelle ich aus der Pascal Komponente eine CBuilder Komponente:
    Ich ändere Pascal Datei und mache dann mittels bpr2mak und make(batchdatei) daraus hpp und obj Dateien. In der .hpp sind die Funktionköpfe auch aufgelistet. Erzeuge alle Projektdateien neu.. aber dann kommt der Fehler

    😞



  • Richtig muss es natürlich so heissen

    private
        FCName: WideString;
        function GetCName: WideString;
        procedure SetCName(Value: WideString);
    public
        property CName: WideString read GetCName write SetCName;
    
    procedure Kompo.SetCName(Value: WideString);
    begin
      FCName := Value;
    end;
    
    function Kompo.GetCName;
    begin
        Result := FCName;
    end;
    
    Kompo->CName = "TestString";
    

    Leider immer der external Fehler 😞



  • Auch wenn mir wohl keiner helfen kann 😞 erwähne ich mal noch, das der Code 100% in Ordnung ist!

    Denn

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    kompo.CName := 'test';
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    Caption := kompo.CName;
    end;
    

    funktioniert prima.

    Mit diesen Befehlen compiliere ich das Ganze.

    C:\Programme\Borland\CBuilder5\Bin\bpr2mak.exe -t kompo.bpk
    C:\Programme\Borland\CBuilder5\Bin\make.exe -B -f kompo.mak
    C:\Programme\Borland\CBuilder5\Bin\make.exe -B -f dsgn_kompo.mak

    Erstellen tut er wie erwähnt dann eine .hpp und .obj und da muss irgendwo der Fehler liegen. In der .hpp ist SetCName enthalten. Warum geht es aber nicht?



  • Ich habs gefunden *juhu* 😉


  • Mod

    Hallo

    zum guten Ton gehoert es seine Loesung allen mitzuteilen !

    MfG
    Klaus


Anmelden zum Antworten