Results 1 to 11 of 11

Thread: Undeclared Identifier in eigen component

  1. #1
    Senior Porrelaar
    Join Date
    Nov 2002
    Location
    Goes
    Posts
    445

    Undeclared Identifier in eigen component

    Beste,

    Ik heb zelf een component in elkaar geknutseld (TDisplaypanel) en deze via of met een package in mn XE8 IDE geïnstalleerd.
    Als ik nu een VCL Form application maak met daarin het component krijg ik foutmelding Undeclared Identifier.
    De unit staat in de uses en ik het ook het pad naar de unit in de Library gezet?
    Waar kan het nog meer fout gaan?

    Alvast bedankt.
    Greetzz Jacco

  2. #2
    Vaak is het toch een library path dat niet goed staat op één of andere maier. Het wil mij weleens gebeuren dat ik het path in de debug config toevoeg en mijn applicatie in release draai. De name van de undeclared indentifier kan ook een clue geven. Dus check check dubbel check

  3. #3
    Senior Porrelaar
    Join Date
    Nov 2002
    Location
    Goes
    Posts
    445
    Dank voor je reactie.
    Ik snap nu het euvel, nu de oplossing nog.
    Als je op control + Displaypanel (in de uses) klikt kom je bij de verwijzing van de unit. Die is in mijn geval leeg (alleen wat standaard al ingevuld is bij een nieuwe unit). Hoe kom ik achter de bestandslocatie van die unit, dan kan ik hem vervangen voor de goede versie, of een verwijzing naar de goede versie maken.
    Greetzz Jacco

  4. #4
    Waarschijnlijk heb je twee units met dezelfde naam op je pc en verwijs je in je library path naar de verkeerde folder, die met een lege unit. Je kunt even op je pc zoeken of er meerdere versie van je unit in omloop zijn. Je kunt ook het component project openen in de IDE, controleren of het goed is. Als je in de project explorer op het project gaat staan kun je rechter muis - show in explorer doen.

    p.s. vergeet niet die foute verwijzing in je library path te verwijderen

  5. #5
    En niet te vergeten, je package gebruikt de gecompileerde versie. Als je dus in je applicatie aanpassingen doet, dan moet je je component package opnieuw compilen voordat het design time beschikbaar is. Dat kan meestal makkelijk door een project group te maken met het package en een test-applicatietje, maar soms raakt de IDE dan overstuur. Meestal maak ik een runtime component voor m'n aanpassingen, en als alles lijkt te werken build ik pas het package opnieuw en verifieer ik het design time-gedrag.
    1+1=b

  6. #6
    Senior Porrelaar
    Join Date
    Nov 2002
    Location
    Goes
    Posts
    445
    Dank jullie heren,

    Nu staat alles goed en compileerd een test projectje.
    Ik krijg nu alleen een exception: EClassNotFound in module project1.exe at 000A36AA Class TLabel not found.
    Wat ik me kan bedenken is: het componentje is een afgeleide van een TPanel, met daarop wat custom labels en images e.d. moet je ook nog op een bepaalde manier naar die klasse verwijzen ?
    Greetzz Jacco

  7. #7
    Kan je dat test projectje eens posten, zodat we kunnen zien hoe het in je dfm staat? Als het label daar expliciet in is vermeld, dan zal het streaming mechanisme van Delphi proberen om het label te laden (i.p.v. door je component).
    1+1=b

  8. #8
    Senior Porrelaar
    Join Date
    Nov 2002
    Location
    Goes
    Posts
    445
    Ik heb alles er maar bij gedaan.....

    Bedankt voor je reactie.
    Attached Files Attached Files
    Greetzz Jacco

  9. #9
    Senior Porrelaar
    Join Date
    Nov 2002
    Location
    Goes
    Posts
    445
    net even getest, en als ik er @runtime 1 aanmaak krijg ik die exception niet. Ik moet wel nog een parent toewijzen.

    Code:
    Displaypanel := TDisplaypanel.create;
    Displaypanel.parent := Form1;
    Ander zie ik hem niet.
    Greetzz Jacco

  10. #10
    Quote Originally Posted by Bolus View Post
    Ik krijg nu alleen een exception: EClassNotFound in module project1.exe at 000A36AA Class TLabel not found.
    Ik kan het genereren.

    Volgens mij komt het omdat je in je project verder helemaal geen TLabel en TImage hebt staan.
    Als je bijvoorbeeld in je project1 een dummy TLabal en TImage plaatst, dan zal de foutmelding verdwijnen.

    Ik denk dat je dus op een of andere manier moet "registreren" dat je gebruik maakt van een TLabel en TImage zodat deze bij compilatie ook daadwerkelijk meegecompileerd worden.

    Misschien zoiets ergens:
    Delphi Code:
    1. initialization  
    2.   RegisterClass(TLabel);
    3.   RegisterClass(TImage);

    (Dit kun je onderin Displaypanel.pas zetten)
    Last edited by rvk; 26-Aug-19 at 15:05.

  11. #11
    Senior Porrelaar
    Join Date
    Nov 2002
    Location
    Goes
    Posts
    445
    Ja dat heeft geholpen, dank je wel!
    Greetzz Jacco

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •