Absturz beim Bewegen eines Forms

Für Fragen rund um die Ide und zum Debugger
wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Absturz beim Bewegen eines Forms

Beitrag von wp_xyz »

Und die FieldByName? Bringen die noch eine Zeitersparnis?

Was ich damit meine, ist folgendes:

Code: Alles auswählen

 
var
  F1: TField;
  F2: TField;
begin
  F1 := Dataset.FieldByName('Field1');
  F2 := Dataset.FieldByName('Field2');
  Dataset.First;
  while not Dataset.EoF do begin
    TreeView.Items.AddObject(nil, F1.AsString + ' / ' + F2.AsString);
    // Nicht: TreeView.Items.AddObject(nil, Dataset.FieldByName('Field1').AsString + ' / ' +
    //                                      Dataset.FieldByName('Field2').AsString);
    Dataset.Next;
  end;
end;
 


Wenn du bei Lazarus die Ausgabe der ZEOS-Komponenten durch Dummy-Text ersetzt, ist der Vergleich natürlich nicht fair. Vielleicht sind die ZEOS-Datasets so langsam oder nicht richtig konfiguriert. Ich have viel mit Microsofts ADO gemacht, und da hat die Änderung des Cursor-Typs schlagartig die Geschwindigkeit erhöht!

Achja, und das wichtigste noch: Bei einer großen Tabelle solltest du natürlich nicht alle Datensätzeauf einmal einlesen, sondern zunächst nur die im Tree ganz oben. Dann könntest du einen Hintergrund-Thread starten, der für jeden der eingelesenen Nodes feststellt, ob Kinder vorhanden sind. Erst wenn ein Node expandiert wird (Ereignis OnExpand), werden die von dem expandierten Node abhängigen Datensätze eingelesen, usw.

Die Funktionen von CNPack und GExperts sind so ähnlich bereits in Lazarus integriert. Siehe z.B. http://wiki.freepascal.org/Lazarus_IDE_Tools/de

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Absturz beim Bewegen eines Forms

Beitrag von hde »

JosefKoller hat geschrieben: Auch Funktions- oder Prozedureinhalte werden mir als Orientierung nicht angezeigt. Mit Delphi wird mir vorwärts und rückwärts nach 2 oder 3 Buchstaben alles angezeigt, weiß es dazu zu verwenden gibt. Nach einer Klammer kommt, welche Paramter in welcher Form erwartet werden, usw.


dann reagiert deine Lazarus anders meine installierten Versionen.

JosefKoller hat geschrieben: weil mir die Erzeugerei von ZEOS Komponenten zwecks Verbindung zur DB wegen der Abstürze mittlerweile doch auf den Geist gehen.


Was hast du denn alles installiert? Ich habe jetzt extra auf einer nackten WIn XP Laz 1.0.14 und Zeos 7.1.3a installiert und kurz mit mySQl getestet und kann auf anhieb keinerlei Probleme sehen geschweige denn Abstürze. Welce Datenbank setzt du ein und welche LIB dazu? Irgendwo müssen deine Abstürze ja herkommen. An Lazarus 1.0.14 und Zeos 7.1.3a scheint es nicht zu liegen.

hde

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2640
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Absturz beim Bewegen eines Forms

Beitrag von m.fuchs »

JosefKoller hat geschrieben:[...] In Lazarus hab ich z.b. nur eine Codevervollständigung, wenn ich erstmal den Komponentennamen richtig hinschreibe und einen Punkt setze. [...]

Wenn du Ctrl+Space drückst nach dem du einen (oder auch mehrere) Buchstaben getippt hast, werden dir alle Bezeichner angezeigt die damit beginnen. Das erspart auch lästige Tipperei.

JosefKoller hat geschrieben:[...] Nach einer Klammer kommt, welche Paramter in welcher Form erwartet werden, usw. [...]

Ctrl+Shift+Space zeigt dir in Parameter-Klammern auch die entsprechenden Parameter als Tooltip.

JosefKoller hat geschrieben:[...]GExperts (Code neu formatieren z. b.) für Lazarus find ich auch nicht. [...]

Schau mal im Menüpunkt Quelltext nach. Da gibt es zum Beispiel den Jedi-Codeformatierer.

Letztendlich läuft einiges anders als in Delphi und manche Dinge gibt es noch nicht. Aus Erfahrung kann ich aber sagen, dass man nach ein wenig Eingewöhnungszeit damit genauso schnell und produktiv arbeiten kann, wie mit anderen IDE.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: Absturz beim Bewegen eines Forms

Beitrag von JosefKoller »

Hallo,

erst Mal vielen Dank für die Hinweise zur Codeformatierung und Codevervollständigung.

Zu den Vergleichen beim Füllen eines TreeViews:

Ich hab jetzt auch in Lazarus das Gleiche, wie in Delphi, also Datenbankanbindung, usw.

Hier die genauen Zahlen beim Laden ( in beiden Fällen werden die ZEOS Komponenten verwendet. Die Zahlen wurden sowohl in Delphi als auch in Lazarus mit GetTickCount() ermittelt:

Delphi 6
Startwert: 140083531, Endwert: 140085107 = Differenz: 1576

Lazaurus
Startwert: 140481411, Endwert: 140481427 = Differenz: 16

Bei Delphi ist Disable/EnableControl gemacht worden. Bei Lazarus hab ich einmal mit Disable/EnableControl und einmal ohne gemessen. Es kam beide Male das gleiche Ergebnis raus. Soll heißen, man kann das Ausklinken in Lazarus auch weglassen.

Dann hab ich in Lazarus noch ein DBGrid reingehängt. Mit DBGrid sind die Ladezeiten folgende:

Startwert: 145571568, Endwert: 145571599, Differenz: 31

Also selbst mit DBGrid ist Lazarus noch 50 Mal schneller. Ich glaub, mehr brauch ich dazu nicht mehr zu schreiben.

Fensterabstürze:
Ich bin mir noch nicht ganz sicher, aber auch da glaube ich, mittlerweile die Ursache gefunden zu haben:

Ich setzte den BorderStyle auf bsNone, weil ich meinen eigenen "Fensterstil" verwende.

Setzt man den BorderStyle schon in der Entwicklungsumgebung aus bsNone, kommt, so scheint es, das Fensterhandling durcheinander.

Laß ich den BoderStyle in der Entwicklungsumgebung auf bsSizeable und stelle erst im OnCreate Ereignis des Formulars um, stürzt nichts mehr ab.

Heute z.b. den ganzen Tag über kein Absturz. Vielleicht könnte das auch mal jemand auf seinem Rechner ausprobieren.

Ansonsten möcht ich mich nochmals ausdrücklich bei Allen bedanken, die mir bisher bei meinen ersten Lazarusschritten geholfen haben.

Danke.

Ciao

Josef

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Absturz beim Bewegen eines Forms

Beitrag von hde »

JosefKoller hat geschrieben:Vielleicht könnte das auch mal jemand auf seinem Rechner ausprobieren.


hab ich gerade gemacht, mein gestern dafür aufgesetztes System bleibt stabil, kein Absturz,

Was machst du genau damit Laz abstürzt? Es nuss doch einen Grund geben

hde

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: Absturz beim Bewegen eines Forms

Beitrag von JosefKoller »

Hallo,

hab ich weiter oben schon ausführlich beschrieben. Ich weiß, der Thread ist schon ziemlich lang.

Ich traue mich fast nicht mehr, noch was dazu zuschreiben.

Also zwischen den Fenstern von Lazarus wechseln (Codefenster - Formular, das Propertyfenster breiter ziehen, copy/paste mit Komponenten zwischen zwei Formularen, Feldereditor einer Query aufrufen, diesen dann breiter ziehen, und sowas.

Ich hatte weiter oben schon mal vermutet, daß es vielleicht auch nur an meinem Windows liegt, wenn die Handle durcheinander kommen.

Ich mag/kann aber Windows nicht neu installieren, um das zu testen. Mein letztes Systembackup liegt Jahre zurück :cry:

Ciao

Josef

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Absturz beim Bewegen eines Forms

Beitrag von hde »

JosefKoller hat geschrieben:Also zwischen den Fenstern von Lazarus wechseln (Codefenster - Formular, das Propertyfenster breiter ziehen, copy/paste mit Komponenten zwischen zwei Formularen, Feldereditor einer Query aufrufen, diesen dann breiter ziehen, und sowas.


Solche Dinge bringen bei meiner Testinstallation keine Unsicherheit. Deine Abstürze liegen wohl nicht an Laz 1.0.14 und Zeos 7.1.3a. Entweder sind es weitere packages die du installiert hast? oder die DLL zu Verbindung zur DB? oder eben dein Windows.

JosefKoller hat geschrieben:Ich mag/kann aber Windows nicht neu installieren, um das zu testen. Mein letztes Systembackup liegt Jahre zurück :cry:


Ja, das alte Problem. Deshalb fahre ich alle Dev-Systeme in einer VM. Z.B. für diesen Test hab ich eben mal ein Win XP geklont und Laz und Zeos installiert Nach diesen Test's lösche das Win XP wieder komplett.

VirtualBox läuft auch unter Windows.

hde

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: Absturz beim Bewegen eines Forms

Beitrag von JosefKoller »

Hallo,

ich hab sowieso vor, mir einen neuen Rechner anzuschaffen. Jetzt nach Weihnachten ist die beste Zeit dafür, denke ich mal (wenn man es preislich betrachtet). Und ich denke daran, es dann gleich "richtig" zu installieren.

Also, wenn's an meinem Windows liegt, dann löst sich das spätestens mit der Neuanschaffung. Das Dumme ist ja nur, daß der Fehler weg ist, seit ich in den Formularen den BorderStyle nicht auf bsNone ändere, sondern erst im OnCreate Ereignis.

Noch kurz zu Deiner Farge nach den sonst noch installierten Komponenten:

Ich habe hinzugefügt (Lazarus 1.0.14):
LazReport (da finde ich keine Versionsnummer, war im Lazarus Paket dabei)
LazPDF (dazu mußte zuvor PowerPDF installiert werden) (wie oben. War im Paket dabei) PowerPDF = Version:powerpdf_0.9.10_20121115
ZEOS (ZEOSDBO-7.1.2-stable)

Und in mein Projekt hab ich Sysnapse Units eingebunden, nicht als Package kompiliert und so, sondern nur die *.pas-Dateien des synapse-Verzeichnisses meinem Projekt hinzufügt.

Also, alles in Allem nix Weltbewegendes. Es gab auch keine Fehlermeldungen bei der Installation. Nur bei ZEOS waren mal 2 doppelte Pfade vorhanden, weil ich verschiedene Versionen von ZEOS installieren wollte.

Danke.

Ciao

Josef

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Absturz beim Bewegen eines Forms

Beitrag von hde »

JosefKoller hat geschrieben:Ich habe hinzugefügt (Lazarus 1.0.14):
LazReport (da finde ich keine Versionsnummer, war im Lazarus Paket dabei)
LazPDF (dazu mußte zuvor PowerPDF installiert werden) (wie oben. War im Paket dabei) PowerPDF = Version:powerpdf_0.9.10_20121115
ZEOS (ZEOSDBO-7.1.2-stabl


Bis auf LazPDF (woher?) ist meine Testinstallation identisch.
[Edit] Sry, dort ist Zeos 7.1.3a-stable eingebunden, aber damit hattest du ja auch das Prob. Zeos 7.1.2-stable hab ich unter Delphi.

JosefKoller hat geschrieben:Das Dumme ist ja nur, daß der Fehler weg ist, seit ich in den Formularen den BorderStyle nicht auf bsNone ändere, sondern erst im OnCreate Ereignis.


Ja, das sieht so aus als käme es aus dem Bereich Lazarus. Die mit Zeos eingebundeneDLL ? Irgendwas muss ja der Grund sein.

JosefKoller hat geschrieben: Und ich denke daran, es dann gleich "richtig" zu installieren.


Dann überleg ob das Arbeitsystem nicht auch in einer VM besser angelegt wird. Bei Lazarus gibt es häufg neue snapshots, und auch bei den packages Manche sind zu früh und man muss ein "Rollback" machen. Mit eine VM ist man da beweglicher.

Gruß hde

JosefKoller
Beiträge: 115
Registriert: Sa 17. Mär 2007, 10:53

Re: Absturz beim Bewegen eines Forms

Beitrag von JosefKoller »

hde hat geschrieben:
Bis auf LazPDF (woher?) ist meine Testinstallation identisch.


Blöd. LazPdf gibt es natürlich nicht. Ich meinte damit folgendes:

Dateiname: C:\lazarus14\components\lazreport\source\addons\pdfexport\lazreportpdfexport.lpk
Zustand: Installiert
Beschreibung: PDF Exporter for PDF

hde hat geschrieben:Ja, das sieht so aus als käme es aus dem Bereich Lazarus. Die mit Zeos eingebundeneDLL ? Irgendwas muss ja der Grund sein.


Die beiden SQLite Dateien (sqlite3.dll und sqlite3.def) hab ich noch in mein Lazarus Verzeichnis kopiert, damit auch in der Entwicklungsumgebung ein connect möglich ist. Diese Dateien sind vom SQLITE Server und neueren Datums (12.12.2013)

hde hat geschrieben:Dann überleg ob das Arbeitsystem nicht auch in einer VM besser angelegt wird. Bei Lazarus gibt es häufg neue snapshots, und auch bei den packages Manche sind zu früh und man muss ein "Rollback" machen. Mit eine VM ist man da beweglicher.


Wenn ich soweit bin, schreib ich hier ein Post und frag, wie genau du das bei dir eingerichtet hast. So wie ich mich kenne, vergesse ich bestimmt die Hälfte von dem, was sinnvoll und nützlich ist. :(

Danke.

Josef

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Absturz beim Bewegen eines Forms

Beitrag von hde »

JosefKoller hat geschrieben:Blöd. LazPdf gibt es natürlich nicht. Ich meinte damit folgendes:

Dateiname: C:\lazarus14\components\lazreport\source\addons\pdfexport\lazreportpdfexport.lpk
Zustand: Installiert
Beschreibung: PDF Exporter for PDF


Hab ich mir fast gedacht. Und dann liegen wir gleichauf. SQL3 check ich mal noch, bis jetzt getestet hab ich mit mySQL

JosefKoller hat geschrieben:Wenn ich soweit bin, schreib ich hier ein Post und frag, wie genau du das bei dir eingerichtet hast. So wie ich mich kenne, vergesse ich bestimmt die Hälfte von dem, was sinnvoll und nützlich ist. :(


OK, hier arbeiten etliche mit VMs.

Gruß hde

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Absturz beim Bewegen eines Forms

Beitrag von hde »

Ich weiß nicht ob es hier noch Jemand interessiert. Aber ich stoße gerade auf folgende Noti:

Code: Alles auswählen

VirtualTreeview ist ein Treeview-Komponente, die von Grund auf neu erstellt wurde.
 
Ihre wesentlichen Merkmale sind:
 
    sie ist extrem schnell. Das Hinzufügen von einer Million Knoten braucht nur ~700 Millisekunden
    sehr geringer Speicherverbrauch. es werden nur ca. 60 Bytes pro Knoten reserviert
    optimiert für High Speed Zugriff. Es dauert lediglich 0.5 Sekunden, um eine Million Knoten zu durchlaufen
    Multiselektion wird unterstützt
    Das Zeichnen des vollständigen Baumes in eine Bitmap oder zum Drucker wird unterstützt
    ein festgelegtes Hintergrundbild kann verwendet werden
    Hot Style für Knoten wird unterstützt
    die Knoten dürfen individuelle Höhen haben
    Sortierung mittels einer Vergleichs-Callback-Funktion
    verwendet ausschließlich Unicode/Widestrings
    mehrfache Spalten werden unterstützt
    ... und vieles mehr

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: Absturz beim Bewegen eines Forms

Beitrag von martin_frb »

JosefKoller hat geschrieben:Hallo,
Nur es fehlen mir in Lazarus so liebgewordene Tools wie CNPack oder GExperts. In Lazarus hab ich z.b. nur eine Codevervollständigung, wenn ich erstmal den Komponentennamen richtig hinschreibe und einen Punkt setze.


Ctrl-Space wenn du den halben Komponenten-Namen hast, oder nach dem ersten Buchstaben, oder im leeren Text....
Geht halt nur nicht von alleine auf.

Wenn du eine noch nicht verwendete Komponente sechst (ggf Unit unbekannt...), package "Cody" installieren, und Identifier-Dictionary verwenden.

Auch Funktions- oder Prozedureinhalte werden mir als Orientierung nicht angezeigt.


Wenn Du zwischen den Klammern bist: shift-ctrl space

GExperts (Code neu formatieren z. b.) für Lazarus find ich auch nicht.


package JCF / jedi code formatter.
Allerdings kann der einige neuere Features nicht erkennen....


Und lies mal:
http://wiki.lazarus.freepascal.org/Lazarus_IDE_Tools

Antworten