[gelöst] Fehler bei der Installation des Package exCtrls

Rund um die LCL und andere Komponenten
dj_leinad
Beiträge: 13
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win8.1pro (Laz 2.2.4 / FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: CH

[gelöst] Fehler bei der Installation des Package exCtrls

Beitrag von dj_leinad »

Hallo Forum

Bei der Installation des Package exCtrls aus dem Repo( https://sourceforge.net/p/lazarus-ccr/s ... s/exctrls/) erhalte ich die folgenden Fehlermeldungen:

Code: Alles auswählen

Kompiliere Package ExCtrlsPkg 0.0: Exit code 1, Fehler: 3, Hinweise: 8
Hint: Start of reading config file C:\LazarusFixes\fpc\bin\x86_64-win64\fpc.cfg
Hint: End of reading config file C:\LazarusFixes\fpc\bin\x86_64-win64\fpc.cfg
Verbose: Free Pascal Compiler version 3.2.3-669-g47e90d7dda [2022/09/24] for x86_64
Verbose: Copyright (c) 1993-2021 by Florian Klaempfl and others
Verbose: Target OS: Win64 for x64
Verbose: Compiling exctrlspkg.pas
Verbose: Compiling .\source\exeditctrls.pas
spinex.inc(271,17) Error: Can't determine which overloaded function to call
math.pp(2394,10) Hint: Found declaration: SameValue(const Single;const Single):Boolean;
math.pp(2376,10) Hint: Found declaration: SameValue(const Double;const Double):Boolean;
spinex.inc(216,17) Error: Can't determine which overloaded function to call
math.pp(2394,10) Hint: Found declaration: SameValue(const Single;const Single):Boolean;
math.pp(2376,10) Hint: Found declaration: SameValue(const Double;const Double):Boolean;
spinex.inc(221,17) Error: Can't determine which overloaded function to call
math.pp(2394,10) Hint: Found declaration: SameValue(const Single;const Single):Boolean;
math.pp(2376,10) Hint: Found declaration: SameValue(const Double;const Double):Boolean;
exeditctrls.pas(611,0) Verbose: There were 3 errors compiling module, stopping
Verbose: Compilation aborted
Verbose: C:\LazarusFixes\fpc\bin\x86_64-win64\ppcx64.exe returned an error exitcode
Dieser Fehler wird nur in Verbindung mit der Fixes-Version von FPC/Lazarus ausgegeben. Trunk und Stable sind Ok da läuft die Installation problemlos durch.

Installierte FPC/Lazarus Version:
Lazarus 2.2.5 (rev lazarus_2_2_4-1-g9145ab626f) FPC 3.2.3 x86_64-win64-win32/win64

mfg Daniel
Zuletzt geändert von dj_leinad am So 2. Okt 2022, 16:42, insgesamt 2-mal geändert.

Benutzeravatar
theo
Beiträge: 9580
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler bei der Installation des Package exCtrls

Beitrag von theo »

Die angemahnte "Error"-Datei "spinex.inc" kommt ja nicht vom Package exCtrls, sondern ist in lazarus/components/lazcontrols/ zu finden.
Anscheinend weiss er nicht, welches SameValue (aus Math) er aufrufen muss.
Keine Ahnung.
Wie hast du denn installiert? Mit FPCUPdeluxe?

dj_leinad
Beiträge: 13
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win8.1pro (Laz 2.2.4 / FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: CH

Re: Fehler bei der Installation des Package exCtrls

Beitrag von dj_leinad »

@Theo
Die Installationen von Trunk und Fixes habe ich mit FPCDELUXE durchgeführt, Beim abgleichen der spinex.inc von trunk und fixes ist mir aufgefallen, dass auf Zeile 527 in der spinex.inc der Fixes Installation der folgende Kommentar vorhanden ist;

Code: Alles auswählen

// Workaround for https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/39490
{$ifdef fpc_math_samevalue_bug}
function TCustomFloatSpinEditEx.SameValue(AValue1, AValue2: Double): Boolean;
begin
  Result := Math.SameValue(AValue1, AValue2);
end;
{$endif}
LG Daniel

Benutzeravatar
theo
Beiträge: 9580
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler bei der Installation des Package exCtrls

Beitrag von theo »

Ja gut, dann ist das ein bekanntes Problem. Vielleicht kann User PascalDragon noch etwas dazu sagen oder du hängst dich an den Bugtracker dran.

Nur kurz eine Anmerkung: Die beiden Versionen FPC / Lazarus hängen nicht direkt zusammen.
Du musst nicht beide "Fixes" kombinieren.
Ich habe z.B. meistens Lazarus Trunk mit FPC Stable kombiniert.
Nur falls das nicht klar sein sollte.

dj_leinad
Beiträge: 13
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win8.1pro (Laz 2.2.4 / FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: CH

Re: Fehler bei der Installation des Package exCtrls

Beitrag von dj_leinad »

Habe gerade eben noch festgestellt, dass in der spinex.pp Datei eine Abfrage der FPC Version durchgeführt wird, die für die Fixes Umgebung so nicht mehr stimmt.

Code: Alles auswählen

// Activates a workaround for issue #39490
{$if FPC_FullVersion=30202}{$ifdef Win64}
  {$define fpc_math_samevalue_bug}
{$endif}{$endif}

Benutzeravatar
theo
Beiträge: 9580
Registriert: Mo 11. Sep 2006, 19:01

Re: Fehler bei der Installation des Package exCtrls

Beitrag von theo »

Gut!
Dann würde ich sagen: Reparieren und Patch senden!
https://wiki.freepascal.org/Creating_A_Patch/de

Willkommen im Club! :D

wp_xyz
Beiträge: 4427
Registriert: Fr 8. Apr 2011, 09:01

Re: Fehler bei der Installation des Package exCtrls

Beitrag von wp_xyz »

Möglicherweise nicht nötig. Das ist vor allem ein Problem wie in ExCtrls mit dem SameValue-Fehler umgegangen wird. Es gibt dort in der Unit ExEditCtrls ein Define SAMEVALUE_BUG, das muss je nach Kombination von FPC-Version and Lazarus-Version aktiviert oder deaktiviert sein, und ich bin noch nicht 100% sicher, wie man das durch Versionschecks sicher berücksichtigen kann. Spiele mit dem SAMEVALUE_BUG Define herum, und melde, ob es eine Einstellung gibt, bei der du Erfolg hast (Ich habe zur Zeit keine Kombination Laz-Fixes/FPC-Fixes zur Verfügung). (Du musst evtl. auch das "override" in der TCustomCurrencySpinEditEx.SameValue entfernen).

dj_leinad
Beiträge: 13
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win8.1pro (Laz 2.2.4 / FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: CH

Re: Fehler bei der Installation des Package exCtrls

Beitrag von dj_leinad »

@wp_xyz
bei aktiviertem Define SAMEVALUE_BUG und vorhandenem override wird beim kompilieren der Fehler

Code: Alles auswählen

exeditctrls.pas(64,14) Error: There is no method in an ancestor class to be overridden: "SameValue(Currency;Currency):Boolean;"
ausgegeben (Da hat der Kompiler ja auch recht).
Beim 2 Versuch mit aktiviertem Define Statement und ohne override kommen dann wieder die im Post#1 aufgeführten Fehlermeldungen.
Probehalber habe ich die Files spinex.inc und spinex.pp temporär ins source verzeichnis der exCtrls Komponente kopiert, und dann in der kopierten spinex.pp das IF-Statement von 30202 nach 30203 geändert.

Code: Alles auswählen

// Activates a workaround for issue #39490
{$if FPC_FullVersion=30203}{$ifdef Win64}
  {$define fpc_math_samevalue_bug}
{$endif}{$endif}
Mit der Änderung der FPC-Fullversion konnte ich dann die Komponente kompilieren.

LG Daniel

wp_xyz
Beiträge: 4427
Registriert: Fr 8. Apr 2011, 09:01

Re: Fehler bei der Installation des Package exCtrls

Beitrag von wp_xyz »

Mit dieser Änderung der FPC_FullVersion fällt FPC 3.2.2 durch das Raster, und der Fehler wird dort auftreten...

Funktioniert, ohne deine Änderung, die Kompilierung der IDE ohne ExCtrls? Wenn nicht, müsste ich Bart, der diese Änderungen vorgenommen hat, informieren. Wenn doch, liegt es am ExCtrls-Package, und dafür halte ich den Kopf hin...

Ich habe eben auf CCR eine neue Version von ExCtrls hochgeladen, in der Versionsabfragen sowie eine Prüfung ob Win-64 vorliegt, vorgenommen sind. Das hat bei meinen Checks vielversprechend ausgesehen. Könntest du dir die mal holen und schauen, ob die Kombination laz-fixes/fpc-fixes auch funktioniert.

dj_leinad
Beiträge: 13
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win8.1pro (Laz 2.2.4 / FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: CH

Re: Fehler bei der Installation des Package exCtrls

Beitrag von dj_leinad »

Interessant ist auch, dass die Installation von exCtrls unter FPC/Lazarus Trunk keine Fehler hat, da dort keine IF FPC_Fullversion in der spinex.pp kodiert sind.
Trunk FPC-Version: 3.3.1

dj_leinad
Beiträge: 13
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win8.1pro (Laz 2.2.4 / FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: CH

Re: Fehler bei der Installation des Package exCtrls

Beitrag von dj_leinad »

@wp_xyz
Test mit R8505 des exCtrls Package gibt die gleichen Fehler wie bereits im Post#1 vorhanden. Mit meiner Änderung im spinex.pp kann ich die exCtrls-Komponente nicht installieren, da Lazarus ein Problem mit doppelten spinex.ppu files bekommt. Habe das nur temporär kompiliert um zu sehen ob das dann gehen würde. Mit der IDE selber habe ich keine Probleme, da bin ich vorsichtig.

wp_xyz
Beiträge: 4427
Registriert: Fr 8. Apr 2011, 09:01

Re: Fehler bei der Installation des Package exCtrls

Beitrag von wp_xyz »

So, jetzt habe ich mir ein Laz-fixes/fpc-fixes/64-bit gebaut auf Windows. Ich kann das ExCtrls Package damit ohne Probleme übersetzen, und auch ein schnell zusammengeklicktes Programm mit einem CurrencyEditEx kompiliert und läuft einwandfrei (hier würde evtl ein Zugriff auf eine abstrakte Klasse gemeldet). Und ich denke, so soll es sein, denn die Direktive in r8505 definiert beim 64-Bit-Windows auf jeden Fall immer das SAMEVALUE_BUG, wodurch die SameValue-Funktion immer verwendet werden sollte. Und nachdem die LCL-Version bei Fixes nicht >= 2.3 ist, wird das "overload" nicht eingesetzt, denn das braucht man erst bei Main.

Hast du nach dem Herunterladen der neuen Version die IDE "sauber" neukompiliert? Werkzeuge > Lazarus kompilieren einrichten > Häkchen setzen bei "Alle aufräumen" und "Nach Neukompierung zu Automatisch wechseln" > Neu kompilieren.
Zuletzt geändert von wp_xyz am Sa 1. Okt 2022, 20:01, insgesamt 1-mal geändert.

dj_leinad
Beiträge: 13
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win8.1pro (Laz 2.2.4 / FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: CH

Re: Fehler bei der Installation des Package exCtrls

Beitrag von dj_leinad »

@wp_xyz
Hast du nach dem Herunterladen der neuen Version die IDE "sauber" neukompiliert? Werkzeuge > Lazarus kompilieren einrichten > Häkchen setzen bei "Alle aufräumen" und "Nach Neukompierung zu Automatisch wechseln" > Neu kompilieren.
Ja, genau so hab ich das gemacht

FPC/Lazarus Version : Lazarus 2.2.5 (rev lazarus_2_2_4-1-g9145ab626f) FPC 3.2.3 x86_64-win64-win32/win64.

wp_xyz
Beiträge: 4427
Registriert: Fr 8. Apr 2011, 09:01

Re: Fehler bei der Installation des Package exCtrls

Beitrag von wp_xyz »

Hast recht - da habe ich mir Laz-main als Laz-fixes untergejubelt, und auch beim FPC hatte ich ein Problem. Nun zeigt mir die Aboutbox dasselbe an wie bei dir: Lazarus 2.2.5 (rev lazarus_2_2_4-1-g9145ab626f) FPC 3.2.3 x86_64-win64-win32/win64.

Und nun kann ich auch den von dir eingangs beschriebenen Fehler nachvollziehen. Ja, ich meine wie du, dass die FPC-Versionsprüfung zu eng ist, weil der SameValue-Fehler offenbar auch in FPC-Fixes nicht behoben ist. Daher habe ich die Direktive folgendermaßen aufgeweitet:

Code: Alles auswählen

{$if (FPC_FullVersion>=30202) and (FPC_FullVersion < 30300)}{$ifdef Win64}
  {$define fpc_math_samevalue_bug}
{$endif}{$endif}
und damit funktioniert es. Kannst du das bestätigen? Ich würde mich dann an Bart Broersma wenden, der das geschrieben hat, und ihm diese Änderung vorschlagen.

dj_leinad
Beiträge: 13
Registriert: Sa 1. Okt 2022, 05:27
OS, Lazarus, FPC: Win8.1pro (Laz 2.2.4 / FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: CH

Re: Fehler bei der Installation des Package exCtrls

Beitrag von dj_leinad »

:mrgreen:

Genau diese Änderung habe ich vor ein paar Minuten in einer temporären Fixes-Umgebung durchgeführt und getestet. Installation der exCtrls-Komponente war dann erfolgreich. Beim verwenden in einem kleinenTest-Projekt kam dann noch eine Meldung betreffend einer abstrakte Klasse.

Antworten