AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?

Ein Thema von Phoenix · begonnen am 23. Okt 2016 · letzter Beitrag vom 24. Okt 2016
Antwort Antwort
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#1

Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?

  Alt 23. Okt 2016, 22:04
Datenbank: SQlite • Version: 3 • Zugriff über: ZEOS
Hi,

ich hab ja schon länger nichts mehr mit Delphi gemacht.. daher steh ich grad wie der Ochs vorm Berg

Ich habe eine frische Installation von Delphi 10.1 Berlin (24.0.22858.6822).
Auch frisch da rein installiert ist ZEOS 7.2.1-rc.

Die gleiche installation habe ich auf einem zweiten Rechner gemacht (Heim-PC und Notebook).

Ich habe eine Anwendung mit einem DataModule. Dort ist eine TZConnection auf eine SQlite3-Datenbank drauf.
Das DataModule wird direkt zum Start der Anwendung instanziert, noch vor dem MainForm.
Im Objektinspektor der Connection ist Connected auf true (sogar DesignConnection ist an).
Ich habe das Event AfterConnect verdrahtet und führe dort direkt auf der Connection ein SQL-Script aus, das die Datenbank initial befüllt.

Auf meinem Heimrechner tut es (=das Event wird ausgeführt und die Datenbank befüllt), auf meinem Notebook nicht (= das Event wird nicht ausgeführt). Auch beim Debuggen: Auf dem Heimrechner trifft ein Breakpoint den Einstieg in die Methode, auf dem Notebook nicht.

Der Source ist identisch (gleiches Repo geclont, aber auch 1:1 Kopie ausprobiert), die ZEOS-Sourcen sind auch identisch (1:1 Kopie).

Wenn ich die .exe vom Heimrechner auf das Notebook kopiere funktioniert die DB-Anlage auch dort, es liegt also auch nicht z.B. an einer anderen SQLite-Version auf dem anderen Rechner.

Was kann der Grund sein, dass die gleichen Sourcen auf Rechner A eine Methode ausführen, auf Rechner B aber nicht?
Auch sonderbar: Das Kompilat auf dem Heimrechner ist immer 18568906 bytes gross, das vom Notebook immer 18547184, also ca. 21kb kleiner.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?

  Alt 23. Okt 2016, 22:17
Wird vielleicht eine Exception/Abort ausgelöst, die vor Ausführung des gewünschten Events einen Abbruch verursacht?

Es wird immer wieder gesagt, dass man diese Art von Autoconnect nicht verwenden soll, sondern lieber im OnCreate manuell den Connect macht.
Vorallem ist da die Fehlerbehandlung einfacher und das DatenModul/Form ist auch komplett geladen (weitere Komponenten auf dem Modul/Form), bevor die Connection aktiviert wird.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#3

AW: Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?

  Alt 23. Okt 2016, 22:24
Jetzt habe ich die Connection erst im OnCreate des Datamodules geöffnet und *wuppdi* tuts.

Danke. Vielen Dank. Tausend Dank.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?

  Alt 23. Okt 2016, 22:34
Es gibt leider immernoch kein AfterLoad-Ereignis in VCL/FMX, also für die ganze DFM, sondern nur das Loaded der Komponente, nach dem Laden aller eigenen Property.
Da kann man ein AutoConnect nicht richtig implementieren, außer vielleich mit Timern/Messages, aber auch das muß nicht funktionieren, wenn wer mit Application.ProcessMessages während des Ladens rumpfuscht.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#5

AW: Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?

  Alt 23. Okt 2016, 22:39
Das ganze ist zum Glück nur für ein kleines Sample und nicht für eine Real-World Anwendung *g*
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#6

AW: Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?

  Alt 24. Okt 2016, 06:47
Moin...

Auch wenn es ein "Test" ist...
Zitat:
Im Objektinspektor der Connection ist Connected auf true (sogar DesignConnection ist an).
...sowas macht man grundsätzlich nicht.

Immer so:
Zitat:
Jetzt habe ich die Connection erst im OnCreate des Datamodules geöffnet
...again what learned. (Loddar)

Geändert von haentschman (24. Okt 2016 um 06:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#7

AW: Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?

  Alt 24. Okt 2016, 08:35
Wie schon erwähnt, zu meiner Verteidigung: Das ist schon was her
Ich glaub das letze mal dass ich Delphi Produktiv genutzt habe ist ca. 8 Jahre her.

Und da musste ich mich auch nicht mit der Connection rumschlagen, sondern die wurde vom verwendeten Framework gemanaged.
Das letzte mal wo ich so tief an der DB rumgeschraubt habe war ca. 2003 / 2004 als ich eine kleine Bibliotheksverwaltung von Grund auf gebaut habe. Das war damals direkt ADO gegen Access, und noch mit Delphi 5...
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

AW: Warum wird TZConnection.AfterConnect auf einem Rechner nicht ausgelöst?

  Alt 24. Okt 2016, 08:37
Und da musste ich mich auch nicht mit der Connection rumschlagen, sondern die wurde vom verwendeten Framework gemanaged.
Ich glaub, das Framework kenne ich noch
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz