try except

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Benutzeravatar
Swirl
Beiträge: 93
Registriert: Fr 7. Aug 2015, 14:05
OS, Lazarus, FPC: Win 10/11/ Mint 21.3 / Lazarus 30 / FPC 3.2.2
CPU-Target: x86_64, ARM Cort.-A7
Wohnort: Schwerte NRW

[gelöst] try except

Beitrag von Swirl »

Besten Dank für Eure Mühe!!!

Manchmal steckt der Teufel im Detail...

Ich hatte, um während der Entwicklung schon was "sehen zu können", Connection, Transaction, Query und DataSource mit sinnvollem Zeugs
gefüllt, bzw auf active/connected gestellt.Natürlich hatte ich dabei die Connection von vorne herein auf connected true gestellt. Hierbei konnte
im "try" natürlich nicht auf connected true geschaltet werden - war ja schon true. Warum sich letztendlich das try-except dann nicht erwartungs-
gemäß verhalten hat, bleibt mir ein Rätsel - aber sei's d'rum - wenn die Connection nicht von vorne herein auf connected true geschaltet ist,
klappts: Problem gelöst.

Asche auf mein Haupt ;-)
Michael
=> Mint 21.3 “Virginia” - Win 10/11 - Lazarus 3.0 - FPC 3.2.2

TBug
Beiträge: 177
Registriert: Mi 2. Sep 2015, 11:09
OS, Lazarus, FPC: Lazaurus 2.2.4 FPC 3.2.2
CPU-Target: Windows 32/64bit

Re: [gelöst] try except

Beitrag von TBug »

Swirl hat geschrieben:
So 6. Nov 2022, 09:45
Hierbei konnte
im "try" natürlich nicht auf connected true geschaltet werden - war ja schon true. Warum sich letztendlich das try-except dann nicht erwartungs-
gemäß verhalten hat, bleibt mir ein Rätsel
Ganz einfach weil der Setter für .Connected prüft, ob der Wert schon true ist und dann eben auch nichts ausführt. Und wenn nichts ausgeführt wird, dann kann es auch keine Exception geben.

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: try except

Beitrag von charlytango »

Swirl hat geschrieben:
So 6. Nov 2022, 08:03
Ich starte Xampp nicht mittels Control Panel, sondern habe festgelegt, dass MySQL/MariaDB automatisch mit Windows starten. Und das läuft halt nicht immer spontan mit dem Windows-Start synchron ab. Das Ganze läuft beim Kunden - und dem möchte ich nicht jedesmal zumuten, zu schauen, ob MySQL bereits "auf grün" steht, oder noch nicht.

Mein Programm startet eh per Autostart und kommt deshalb dem (zeilich unzuverlässigen [sorry]) Autostart des MySQl-Servers in die Quere.

Mein Problem besteht also weiterhin in der Lösung per try-except ohne(!) Systemdialog (s.o.), sondern per Meldung im Programm(!)
Das kannst du machen wie du magst, ich kann dir nur sagen was bei mir seit Dekaden klappt.

Autostart von MySQL -> ja mache ich beim Kunden auch
Autostart vom Programm? NO

Ich mute meinem Benutzer zu dass er im stande ist auf ein Icon zu klicken um ein bestimmtes Programm zu starten. Wenn das nicht möglich ist, dann kann er mit Windows einfach nicht umgehen und kann mit dem Ding ohnehin nix anfangen.
Gewisse Mindestkenntnisse setze ich voraus.
Gerne baue ich dem User einen Link ins Startmenü oder auch auf den Desktop (igitt -- nur unter Gewaltandrohung) oder in eine companyweite Richtlinie.

Ich habe bei einem Betriebssystem keinerlei Einfluß auf die Startreihenfolge von Diensten, Programmen etc. (unzuverlässig ist nicht der SQL Server sondern das OS) daher halte ich mich da tunlichst raus.
Damit hab ich eine gute Chance dass der SQL Server läuft bevor der Benutzer auf das Programmicon klickt.
Besonders wenn ich ihm sage dass er zuerst den Rechner einschalten und sich danach den Kaffee holen soll.
Auch auf aktuellen Rechnern ist ein Office-Rechner erst zu gebrauchen NACHDEM alle nötigen und unnötigen Services (Dropbox, OneNote SynologyDrive, diverse Viren und Werbescanner und Updater) mit ihren Jobs fertig sind.

Und weil auch der Benutzer nur mit einer aktiven SQL-Datenbank als Voraussetzung arbeiten kann löse ich das so, dass mein Programm mit einer sauberen Meldung abbricht dass die DB nicht erreicht werden kann. Der User startet einfach später nochmal.
Wenn das öfter passiert (das protokolliere ich in einem logfile mit) dann gibts auch eine Meldung die auf die Situation und den Admin hinweist.

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: [gelöst] try except

Beitrag von charlytango »

Swirl hat geschrieben:
So 6. Nov 2022, 09:45
wenn die Connection nicht von vorne herein auf connected true geschaltet ist,
klappts
Bei Verwendung von Daten im Design Mode ist es ratsam im Code als erstes einen definierten Zustand herstellen, egal ob die DB im DesignMode aktive war oder nicht.

Code: Alles auswählen

CloseConnection;         //in case SQLDBLibraryLoader1 or SQLConnector1 were active in design mode close them
Das ist der Grund weshalb ich schon lange keine direkt verbundenen Datenmodule verwende. Beispiele unterschiedlicher Zugriffsmöglichkeiten findest du zB hier

sieh dir mal die Variante SQLdbRuntime und SQLdbGUI an

Antworten