[BUG in RC2 nicht gelöst] Lazarus V3.0 RC1 Fehler bei Programmstart der kompillierten EXE

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
MmVisual
Beiträge: 1470
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: [nicht gelöst in RC2] Lazarus V3.0 RC1 Fehler bei Programmstart der kompillierten EXE

Beitrag von MmVisual »

Leider ist das Problem in Lazarus V3 RC2 (Win64) immer noch nicht gelöst.

Es war mal zwischendurch im Trunc gelöst, jedoch im RC2 ist diese Lösung wieder "verschwuden" :shock:

BItte schaut nochmal danach.

Der Demo-Code aus dem Beitrag geht nicht mit RC2:
viewtopic.php?p=136538#p136538
RC2.png
RC2.png (66.42 KiB) 4264 mal betrachtet

PS: Ansonsten gibt es auch eine positive Sache:
Meine EXE mit RC2 übersetzt und auf virustotal.com geprüft zeigt keinen einzigen Virus oder Trojaner, dementsprechend baut Lazarus da keinen ein. Das ist schon mal SUPER! (war mit V2.2.6 ebenfalls so)
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: [BUG in RC2 nicht gelöst] Lazarus V3.0 RC1 Fehler bei Programmstart der kompillierten EXE

Beitrag von wp_xyz »

Was ist spFilterCaseExp für ein Control? Soviel ich weiß, hat Ondrej damals nur die StdCtrls angepasst (also the Events in der Property-Liste nach hinten geschoben). Diese Änderung ist auch in RC2 enthalten. Aber ExtCtrls, ComCtrls, LazControls usw. könnten immer noch die alphabetische Reihenfolge haben... Aber dann würde mich wundern, warum es zwischendurch einmal funktioniert hat.

MmVisual
Beiträge: 1470
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: [BUG in RC2 nicht gelöst] Lazarus V3.0 RC1 Fehler bei Programmstart der kompillierten EXE

Beitrag von MmVisual »

Ich habe mal in dem ZIP 2 Test Projekte angehängt, beide lassen sich fehlerfrei übersetzen und stürzen ab bevor sich das Formular zeigt:

Mein Screenshot brauchst du nicht beachten, da der Code doch etwas größer ist.
Daher hier die Minimal-Demos mit denen sich der Fehler reproduzieren lässt. Es sind exakt die gleichen Demos, wie letztens wir auch verwendet hatten:
LazarusV3RC2.zip
(392.59 KiB) 53-mal heruntergeladen
Vielen Dank für die Unterstützung.
VG Markus
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: [BUG in RC2 nicht gelöst] Lazarus V3.0 RC1 Fehler bei Programmstart der kompillierten EXE

Beitrag von wp_xyz »

Ah, ich verstehe. Wenn du das lfm-Formular in einem Editor (oder auch in der IDE über Rechtsklick und "View source (.lfm)") öffnest, siehst du, dass der OnClick-Eventhandler der Checkbox wieder mitten unten den Properties steht - er sollte nach der damaligen Änderung aber hinter den Properties stehen, so dass OnClick noch nicht existiert, wenn State geladen wird und dabei OnClick aufgerufen wird. Offenbar ist das eine ältere Version des Test-Projekts.

Abhilfe: Ändere einfach eine Kleinigkeit an dem Formular, z.B. verschiebe es auf dem Monitor um ein paar Pixel, und speichere es neu - nun wird OnClick am Ende der Properties gespeichert und das Problem ist behoben.

Die Arbeit, jedes Formular deines großen Projekts zu laden und nach minimaler Änderung neu zu speichern, kann ich dir allerdings nicht abnehmen...

Übrigens, meine Bemerkung, dass damals nur die StdCtrls-Unit gefixt wurde, ist nicht richtig. Ich hatte damals am selben Tag noch alle anderen LCL-Controls-Units geprüft und ggfs korrigiert.

MmVisual
Beiträge: 1470
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: [BUG in RC2 nicht gelöst] Lazarus V3.0 RC1 Fehler bei Programmstart der kompillierten EXE

Beitrag von MmVisual »

Hm, ja OK das funktioniert. Ich habe alle Formulare mal geöffnet und geändert und gesichert. Nun stürzt meine EXE tatsächlich nicht mehr ab.

Eigentlich könnte Lazarus das irgendwie alleine korrigieren, also vor dem übersetzen die Datei korrigieren, da in der .lfm Datei die "LCLVersion" drin steht.
Vor der Dateiänderung steht in der lfm:
LCLVersion = '2.2.6.0'
drin und danach:
LCLVersion = '3.0.0.2'

Zumindest würde ich als Anwender von Lazarus so erwarten. In meinem Programm waren es jetzt 55 Formulare (ist ja jetzt nicht wirklich ein Aufwand, wenn man es weis.). Das ist sonst ein potentielles Fettnäpfchen, das sicher den ein oder anderen Absturz verursachen wird und entsprechend viele Bugreports. Die automatische Korrektur müsste nur schauen ob die erste Zahl der LCLVersion 0 / 1 oder 2 hat und entsprechend die Formulardatei als Version 3 abspeichern.

Alternative: Beim Übersetzen merkt Lazarus dass die lfm Datei von einer früheren Version ist und zeigt ein Dialog: "Das Formular 'xxx.lfm' muss auf V3 geupdatet werden ..." [OK] [Alle] [Abbruch]

Einige Formulare hatte ich seit Jahren nicht mehr geändert, da stand noch die Version '1.2.6.0' drin. Bei größeren Anwendungen kann es da schon zu Problemen kommen, alles Läuft und funktioniert, dann kommt irgend wann einer auf die Idee eine versteckte Funktion aus zu führen, und es knallt auf einmal.
Daher, überlegt euch bitte einen Update-Mechanismus. Damit auch in Zukunft die Projekte, die mit Lazarus erstellt wurden auch weiterhin zuverlässig funktionieren.
Zuletzt geändert von MmVisual am Do 2. Nov 2023, 07:09, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: [BUG in RC2 nicht gelöst] Lazarus V3.0 RC1 Fehler bei Programmstart der kompillierten EXE

Beitrag von wp_xyz »

Dazu müsstest du einen Bug-Report auf dem Lazarus-Bugtracker als Feature-Request schreiben, ich selbst mag das nicht entscheiden.

Ein mögliches Gegenargument fällt mir ein: Wenn du die Formulare eines alten Projektes in einer neuen Lazarus-Version öffnest, dann steht nach deinem Vorschlag auf jeden Fall die neue Versionsnummer im Formular (abgesehen von evtl neu vorhandenen Properties, aber das muss ja nicht sein). Wenn du nun dasselbe Projekt wieder mit einem älteren Lazarus öffnest, dann liest dieser plötzlich die neue Versionsnummer. Ich weiß nicht, was dann passiert: Entweder die alte Version weigert sich, das neue Formular zu lesen - das wäre ein deutlicher Rückschritt gegenüber jetzt, oder die alte Version ignoriert die Diskrepanz und liest das neue Formular trotzdem - aber dann wäre die Versionsnummer in der lfm-Datei eigentlich überflüssig.

MmVisual
Beiträge: 1470
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: [BUG in RC2 nicht gelöst] Lazarus V3.0 RC1 Fehler bei Programmstart der kompillierten EXE

Beitrag von MmVisual »

Ich habe es gerade getestet, eine .lfm Datei die auf Version 3 konvertiert wurde kann Lazarus V2.2.6 ohne Mecker öffnen und die EXE wird problemlos erzeugt und funktioniert.
Von daher: Es sieht so aus als ob die LCLVersion bisher einfach nur ignoriert wurde, was ja auch OK ist so lange es keine Probleme mit der Struktur der Datei gibt.

Ich schreibe ein Bugreport damit der Update auf V3 entsprechend durchgeführt wird, denn die Abwärtskompatibilität ist ja gegeben.
EleLa - Elektronik Lagerverwaltung - www.elela.de

MmVisual
Beiträge: 1470
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Re: [BUG in RC2 nicht gelöst] Lazarus V3.0 RC1 Fehler bei Programmstart der kompillierten EXE

Beitrag von MmVisual »

Bugticket erstellt, ich hoffe es ist verständlich:
https://gitlab.com/freepascal.org/lazar ... sues/40587
EleLa - Elektronik Lagerverwaltung - www.elela.de

Antworten