Lazarus V2.0-RC3 - Tests zum Umstieg

Rund um die LCL und andere Komponenten
MmVisual
Beiträge: 1445
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 3.0 FPC 3.2)
CPU-Target: 32/64Bit

Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von MmVisual »

Hallo,

Ich habe mir zum Test das neue Lazarus geladen und wollte mal damit mein großes Projekt übesetzen / testen was so alles in Lazarus oder in meinem Proejt geändert werden muss.
Hier der Download Link: ftp://freepascal.dfmk.hu/pub/lazarus/releases/

Ich würde gerne den ganzen Code nun durch gehen, übersetzen und heraus finden was man allen für das neue Lazarus so machen müsste. Meine EXE nutzt eine einzige externe Komponenten, ZEOS.

Ich habe in der EXE ein umfanreiches Error-Handling implementiert und diese Funktionen lassen sich ab V2.0 nicht mehr übersetzen:

Code: Alles auswählen

Procedure TErrMsgCls.ExceptionHandler(Sender: TObject; E: Exception);
Var s, sLine: String;
   scl: TErrMsgString;
  p, pa: Pointer;
Begin
  // Aufrufstack auslesen
  sLine := '';
  p := get_frame;
  while (p <> nil) And (Length(sLine) <= 11) Do
  Begin
    p := get_caller_frame(p);
    If p = nil Then Break;
    pa := get_caller_addr(p);
    sLine := GetLineInfo(pa, False); // E.MethodName(pa);
  end;
  if (Length(sLine) > 11) Then
    sLine := '(' + sLine + ')'
  Else sLine := '';   


Die Funktion "GetLineInfo" gibt es leider in "LCLProc" nicht mehr. Weiß jemand wie ich das ersetzen kann?

Dankeschön, Grüße Markus
Zuletzt geändert von MmVisual am Mi 2. Jan 2019, 12:35, insgesamt 1-mal geändert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von sstvmaster »

Bei mir gibt es die Funktion in der "laztracer.pas" (C:\lazarus\components\lazutils), auch 2.0 RC3.

Gesundes neues, Maik
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

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

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von MmVisual »

Thx, ich habe diese Unit in die Uses aufgenommen.

Nun klappt auch das Schreiben der Logdatei :D

Die Exe stürzt beim Start direkt ab, die Meldung im Log:
17:15:42 E: Error reading chkSchnellsucheCaseExpSMD.State: Access violation (spFilterCaseExpClick)/( $000000010004D58F line 1927 of forms.pp)

Ich vermute, dass Lazarus bevor die Steuerelemente komplett erstellt sind, schon irgend welcher Code ausgeführt. (Win10/64)
Diese Vermutung kommt daher:
Der Text "(spFilterCaseExpClick)" im Log zeigt, dass diese Funktion direkt aufgerufen wurde, z.B. durch Mausklick (aber die EXE war ja noch nicht sichtbar). Wenn diese Funktion von einer anderen Funktion aufgerufen werden würde, die aus meinem Code stammt, so würde die so aussehen "(AufrufendeFunktionName/spFilterCaseExpClick)". Somit ist dies definitiv ein Bug von Lazarus.

In dieser Zeile stürzt das ab:

Code: Alles auswählen

procedure TfrmMain.spFilterCaseExpClick(Sender: TObject);
var
  iID: integer;
  s, sOr: string;
begin
  ErrMessagesAdd('spFilterCaseExpClick');
  chkSchnellsucheCaseExpSMD.Visible := spFilterCaseExp.Down;
  iID := qGehauseExpID.AsInteger//<<<<<<< hier bleibt der Debugger stehen


Die Ansicht im Debugger
Die Ansicht im Debugger


Nur so als Hintergrundinfo: Das Main-Formular hat ca 4000 Steuerelemente und knapp 60000 Codezeilen. Wenn diese EXE mit Lazarus 2.0 funktioniert, dann wird Lazarus so ziemlich Bugfrei sein 8)
Mein komletter Code wird mit früheren Lazarus Versionen ohne Warnings übersetzt. Die EXE heißt EleLa und entwickle ich seit 8 Jahren stetig weiter und hat entspreched viele Lazarus Versionen bereits hinter sich.

Ebenfalls gesundes Neues, Markus.
EleLa - Elektronik Lagerverwaltung - www.elela.de

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von martin_frb »

Und was steht im Stack Fenster des Debuggers?

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

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von MmVisual »

...
Hier der Stack-Trace
Hier der Stack-Trace


Die EXE zeigt nur den Startup Splash-Screen, das Main Formular ist noch nicht zu sehen.
EleLa - Elektronik Lagerverwaltung - www.elela.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6200
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: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von af0815 »

Kann es sein, das dein Code beim initialisieren von Checkboxen aufgerufen wird, während das Formular sich aufbaut ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von MmVisual »

In Lazarus 1.8.4 war es nicht der Fall, bzw. mit 1.8.4 hat Lazarus alles wie erwartet gemacht.
EleLa - Elektronik Lagerverwaltung - www.elela.de

martin_frb
Beiträge: 572
Registriert: Mi 25. Mär 2009, 21:12
OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
CPU-Target: mostly 32 bit

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von martin_frb »

Ausgelöst durch
https://bugs.freepascal.org/view.php?id=33076

IMHO sollte das nicht waehrend "Loading" passieren.

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von sstvmaster »

Hi Markus,

erst mal danke für dein Programm, sowas habe schon lange gesucht.

Nach dem starten bin ich Tab für Tab durchgegangen um mich erstmal im Programm umzuschauen.
Als ich auf den Tab "Extras - F10" geklickt habe ist sofort das Fenster für die "Versionsabfrage"
aufgegangen, obwohl ich gar nicht auf dem "Info" Sub-Tab und den Button gedrückt habe.

Ist das so normal?

OS: Win7 Pro 32bit
EleLa: 3.0.18B15
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

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

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von MmVisual »

Nein, ist nicht normal. Ich schaue ob ich das reproduziert bekomme.
Ansonsten kann in der INI Datei der Parameter:

[Debug]
Mode=2

aktiviert werden. Damit wird jeder Funktionsaufruf unter Extras->Log protokolliert, auch verschachtelte Aufrufe. Da steht auch welche Versionen verwendet sind.
In diesem Forum sind seit 8 Jahren Threads zum Programm: https://www.mikrocontroller.net/topic/465335
EleLa - Elektronik Lagerverwaltung - www.elela.de

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von sstvmaster »

Hi Markus,

ich glaube ich den "Fehler" der kein Fehler ist gefunden.
Wenn man EleLa zum ersten mal, nach dem installieren, startet pop nach 2 Minuten das "Update Fenster" automatisch auf. Ab dem zweiten starten nicht mehr.
Das war wahrscheinlich zufall das ich genau 2 min. gebaucht habe.

Sorry für die Aufregung
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

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

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von MmVisual »

Stimmt, das hatte ich so eingestellt. Wenn man im Setup das Häkchen "nach Updates suchen" nicht weg macht, dann findet EleLa automatisch ein Update. Sobald ich die SW ändere dann erkennt das EleLa das nächste mal und es Popt wieder zeitverzögert das Update Fenster auf. Ich hatte eine Zeit drin, damit nicht sofort wenn man nur kurz EleLa öffnet dieser Dialog einem in das Gesicht springt. Kann unter Extras>Log>Optionen>Extras entfernt werden.
Ich sollte es wohl so ändern, dass beim aller ersten Version Abfragen der Dialog nicht kommt, denn man hat ja die SW zu dem Zeitpunkt offensichtlich aktuell geladen und installiert.
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von MmVisual »

Ich habe noch etwas gefuden, bin mir aber nicht sicher ob es ein Bug ist oder ein Feature.

TPageControl.OnChange Event

Wenn man mit der Maus auf eine andere Tab Seite klickt, wird dieses Event ausgelöst.
Wenn im Code eine andere Seite aktiviert wird dann nicht. Früher (glaub Lazarus V1.6) war das mal anders.

Anbei ein Test-Code.
project1_Test_TPageControl.zip
(126.72 KiB) 86-mal heruntergeladen
EleLa - Elektronik Lagerverwaltung - www.elela.de

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

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von MmVisual »

Ich habe noch einen zweiten Bug gefunden, ich bin mir jedoch nicht sicher ob es ein Lazarus oder ein Zeos Bug ist.
Jedenfalls wird im TZUpdateSQL der generierte Update SQL Script nicht immer gespeichert.

Anbei ein Demo-Projekt für Lazarus Win64, inc. leerer DB und SQLite DLL.

Vorgehen 1:
- "project1.lpi" öffnen, Lazarus startet.
- Rechtsklick auf der Komonente "ZUpdateSQL1", Menü "UpdateSQL Editor.." anklicken
- Taste "Generate SQL" drücken
- Taste "OK" drücken
- Kontrolle im Objektinspektor "InsertSQL", da steht nun was drin.
- Lazarus schließen
- "project1.lpi" öffnen, Lazarus startet.
- Kontrolle im Objektinspektor "InsertSQL", das ist nun wieder leer <<< das ist der Bug

Vorgehen 2 - wie der Bug umgangen werden kann:
- "project1.lpi" öffnen, Lazarus startet.
- Rechtsklick auf der Komonente "ZUpdateSQL1", Menü "UpdateSQL Editor.." anklicken
- Taste "Generate SQL" drücken
- Taste "OK" drücken
- Kontrolle im Objektinspektor "InsertSQL", da steht nun was drin.
- Irgend eine Komponente auf dem Formular verschieben
- Lazarus schließen, nun fordert Lazarus auch auf ob man die Änderungen speichern möchte -> Ja
- "project1.lpi" öffnen, Lazarus startet.
- Kontrolle im Objektinspektor "InsertSQL", der SQL Befehl ist nun erhalten geblieben.

Aus irgend einem Grund merkt Lazarus nicht dass eine Komponente geändert wurde und speichert das Formular nicht. Ich weiß jetzt nicht ob Zeos da ein Bug hat oder ob Lazarus das selbst merken sollte dass eine Eigenschaft geändert wurde.

TestV2_UpdateSQL.zip
(919.17 KiB) 90-mal heruntergeladen


Edit: Ich habe noch einen Bugreport im Zeos Bugtracker angelegt: https://sourceforge.net/p/zeoslib/tickets/325/
EleLa - Elektronik Lagerverwaltung - www.elela.de

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Lazarus V2.0-RC3 - Tests zum Umstieg

Beitrag von Michl »

MmVisual hat geschrieben:Ich habe noch etwas gefuden, bin mir aber nicht sicher ob es ein Bug ist oder ein Feature.

TPageControl.OnChange Event

Wenn man mit der Maus auf eine andere Tab Seite klickt, wird dieses Event ausgelöst.
Wenn im Code eine andere Seite aktiviert wird dann nicht. Früher (glaub Lazarus V1.6) war das mal anders.

Anbei ein Test-Code.
project1_Test_TPageControl.zip

Habe es mir jetzt nicht angeschaut, doch daß OnChange nicht ausgelöst wird, ist ein Feature zur Delphi Kompatibilität. OnChanging wird noch ausgelöst, dies wird jedoch gerade gefixt. Um das alte Verhalten zu bekommen, daß auch OnChange bei Code-Seitenwechsel ausgelöst wird, muss nboDoChangeOnSetIndex in Options gesetzt sein. Siehe auch: https://bugs.freepascal.org/view.php?id=25554

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten