Seltsames Compilerverhalten ( Identifier not found )

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Seltsames Compilerverhalten ( Identifier not found )

Beitrag von charlytango »

Hi,

ich habe ein Projektverzeichnis etwas aufgeräumt .
Ist aus einem Testprojekt entstanden und war Kraut und Rüben.

habe für Units und Formulare zwei Verzeichnisse mit dem Explorer(Win10) angelegt:

Code: Alles auswählen

_units 
_forms
und danach mit dem Project Inspector die Files verschoben.
Beim anschließenden Clean up and Build kam eine Fehlermeldung:

uxmltunes.pas(354,15) Error: Identifier not found "URLDecode"

die auf eine Codezeile

Code: Alles auswählen

location:=URLDecode(Location);
zeigt.

Wohlgemerkt: das Kompilieren vor dem Verschieben der Files hat klaglos geklappt. Die Unit (utools.pas) ist korrekt in den uses eingebunden. Die IDE findet die Funktion und zeigt beim MouseOver den korrekten Pfad an. Mit STRG-Mausklick springt die IDE an die richtige Stelle.

Ein Remove der Unit aus dem Project Inspector und erneutes Einbinden brachte keine Änderung. Lazarus schließen und neu öffnen auch nicht.

Laz 2.0.13 fixies, FPC 3.2 fixies, Win10

Irgend eine Idee?

EDIT_1: nach 10 Minuten erneut probiert und die Fehlermeldung ist weg ... dafür eine andere da --ebenso unerklärlich

fmain.pas(520,22) Error: Incompatible types: got "TfrmMain" expected "IListener"

die zeigt auf:

Code: Alles auswählen

oTunes.Listener := self;
wobei das seit einem Jahr klaglos klappt, denn die Definition stimmt ja.
"self" ist das TfrmMain

Code: Alles auswählen

TfrmMain = class(TForm, IListener)
Hab mein damaliges Testprojekt neu mit der gleichen Lazarusversion neu erstellt und dort passt es.

maaahhhh -- jetzt starte ich den Rechner neu und mal sehen was dann kommt.

EDIT_2: Nach Neustart wieder der ursprüngliche Fehler... grrrr

EDIT_3: Die Sache mit dem Listener scheint etwas anderes zu sein, da mache ich einen neuen Thread auf.

mit

Code: Alles auswählen

location:=utools.URLDecode(Location);
läuft die Kompilierung durch -- nach wie vor keine Ahnung warum es ohne den Unit-Bezeichner nicht geht

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Seltsames Compilerverhalten ( Identifier not found )

Beitrag von Socke »

Hast du die Pfade auch in den Projekteigenschaften angepasst?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Seltsames Compilerverhalten ( Identifier not found )

Beitrag von af0815 »

charlytango hat geschrieben:
Mi 7. Apr 2021, 11:44

Code: Alles auswählen

location:=utools.URLDecode(Location);
läuft die Kompilierung durch -- nach wie vor keine Ahnung warum es ohne den Unit-Bezeichner nicht geht
Normalerweise passiert sowas, wenn der Bezeichner in mehreren Units vorkommt.

Generell, bei solchen Operationen am offenen Herzen, auch die Lib-Ordner mit den lfm und ppu's von Hand löschen. Weil gerade nach solchen Sachen manchmal das Clean nicht alle Zombies beseitigt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Seltsames Compilerverhalten ( Identifier not found )

Beitrag von charlytango »

Socke hat geschrieben:
Mi 7. Apr 2021, 13:20
Hast du die Pfade auch in den Projekteigenschaften angepasst?
Ja hab ich und war nötig -- mich wundert dass das Verschieben im Pojekt-Inspektor nicht auch gleich die Pfade angepasst hat.

Aber... es gibt schon so Tage da sind die Computergötter etwas verrückt.
nachdem ich das problem mit dem Listener-interface gelöst habe ließ sich das Projekt kompilieren -- und ich weiß immer noch nicht was der wahre Grund war warum es nicht geklappt hat -- grrrr

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Seltsames Compilerverhalten ( Identifier not found )

Beitrag von charlytango »

af0815 hat geschrieben:
Mi 7. Apr 2021, 13:52
Normalerweise passiert sowas, wenn der Bezeichner in mehreren Units vorkommt.
Der Bezeichner kommt nur einmal vor - und die IDE hat auch die richtige Stelle gefunden, nur der Kompiler wohl nicht
af0815 hat geschrieben:
Mi 7. Apr 2021, 13:52
Generell, bei solchen Operationen am offenen Herzen, auch die Lib-Ordner mit den lfm und ppu's von Hand löschen. Weil gerade nach solchen Sachen manchmal das Clean nicht alle Zombies beseitigt.
Bei solchen OP's kopiere ich das ganze Programm immer schnell mal in ein Tempverzeichnis und kontrolliere von Hand ob die alten Ordner auch leer sind.
Schon zuviel Lehrgeld bezahlt ;)
Also JA. alles sauber gelöscht.

Solche (größeren Projekte) bekommen bei mir ein eigenes Output-Directory.

C:\Laz_Lib\<projektname>\$(TargetCPU)-$(TargetOS)-$(LazVer)

die auch vor solchen OP's manuell gelöscht werden.
Also auch dort safe.

Ich vermute dass ein Problem mit zwei Corba-Interfaces zur Anzeige der Meldungen zwei Objekten auf dem Hauptfenster den Kompiler so durcheinander gebracht hat dass der Rest nur mehr geschätzt wurde.
Das konnte ich lösen und dann lief es durch. .... grübel

Antworten