| Autor |
Beitrag |
Delphi_Rainer
      
Beiträge: 31
|
Verfasst: Do 20.12.07 12:37
Hallo,
Ich arbeite mit Firebird 2.0 und mit TIBEVENT.
Die IBEVENT Komponente arbeitet local prima.
Meine Datenbankanbindung läuft in einem Thread damit bei remote Zugriffe die Anwendung nicht hängen bleibt.
Im Thread wird folgendes (alle 2 Sekunden ) ausgeführt.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| if database1.Connected then begin if IBEvents2.Registered then IBEvents2.Registered:=false; end; if database1.Connected then database1.close; if database1.Connected=false then database1.Open; if IBEvents2.Registered=false then IBEvents2.Registered:=true; |
Dieses läuft für ca 1 Minute und dann stürzt meine Anwendung ab !!!
Kann mir jemand helfen warum ??
Mache ich das gleiche im Hauptthread (Anwendung) passiert das gleiche.
Moderiert von jasocul: Delphi-Tags hinzugefügt
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Do 20.12.07 12:44
Erstmal: Delphi-Tags!
----
//EDIT: @jaoscul: Sorry!
<-- Delphi-Codes in Tags geändert  -->
_________________ Die Lösung ist nicht siebzehn.
Zuletzt bearbeitet von Mitmischer 1703 am Do 20.12.07 13:31, insgesamt 1-mal bearbeitet
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Do 20.12.07 12:54
Das heißt Delphi-Tags! 
|
|
Delphi_Rainer 
      
Beiträge: 31
|
Verfasst: Do 20.12.07 13:09
Ich habe doch den Sourcecode mitgeteilt !
|
|
DelphiMarkus
      
Beiträge: 303
OpenSuSE
Delphi 2009 Pro., Lazarus
|
Verfasst: Do 20.12.07 13:15
Nein, sie meinten das Syntax-Highlighting, dann ist der Code besser im Browser zu lesen.
|
|
Delphi_Rainer 
      
Beiträge: 31
|
Verfasst: Do 20.12.07 13:24
Sourcecode:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| <span style="color: red">if database1.Connected then begin if IBEvents2.Registered then IBEvents2.Registered:=false; end; if database1.Connected then database1.close; if database1.Connected=false then database1.Open; if IBEvents2.Registered=false then IBEvents2.Registered:=true;</span><span style="color: green"></span> |
Meinst du so !
Moderiert von jasocul: Highlight- durch Delphi-Tags ersetzt
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Do 20.12.07 13:26
Nein, so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| if database1.Connected then begin if IBEvents2.Registered then IBEvents2.Registered:=false; end; if database1.Connected then database1.close; if database1.Connected=false then database1.Open; if IBEvents2.Registered=false then IBEvents2.Registered:=true; |
Mit [delphi]-Tags. Schluss-Tag nicht vergessen!
_________________ Die Lösung ist nicht siebzehn.
Zuletzt bearbeitet von Mitmischer 1703 am Do 20.12.07 13:32, insgesamt 2-mal bearbeitet
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Do 20.12.07 13:30
Probier doch mal dein Programm in Schritten auszuführen (F7 glaub' ich).
Dann stürzt das Programm irgendwann ja ab - Die letzte Anweisung ist schuld!
Stürzt das Programm einfach so ab, oder mit Fehlermeldung?
Dann könnte ich mir eine Exception vom Typ EAcessViolation (bestimmt falsch geschrieben...  ) vorstellen...
_________________ Die Lösung ist nicht siebzehn.
|
|
Delphi_Rainer 
      
Beiträge: 31
|
Verfasst: Do 20.12.07 13:35
Das Programm stürzt mit einer Eaccessviolation in GDS32.dll ab !
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Do 20.12.07 13:39
Ich hasse EAccessViolations!!!
Immer wenn ich eine hatte, hab' icb sie nie wegbekommen  ...
Eine AccessViolation ist irgendsoetwas wie ein Arbeitsspeicherüberlauf:
Du musst dein Programm bremsen!
Delphi-Quelltext 1:
| Application.ProcessMessages; |
//Edit: Mist! search und delphi-Tags lassen sich nicht kombinieren... 
_________________ Die Lösung ist nicht siebzehn.
|
|
Delphi_Rainer 
      
Beiträge: 31
|
Verfasst: Do 20.12.07 13:53
Ich habe es mir nochmal genauer angesehen. Es ist folgende Zugriffsverletzung bei 0x10024413 : Lesen von Adresse 0x0000001C
Sagt das jemand was ?
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Do 20.12.07 13:57
Was ist der Adresse 0x0000001C zugeordnet?
Lass das Programm mal unter dem Debugger laufen und achte auf das CPU-Fenster (zumindest unter CBuilder 6...)

_________________ Die Lösung ist nicht siebzehn.
|
|
Delphi_Rainer 
      
Beiträge: 31
|
Verfasst: Do 20.12.07 14:06
Ich habe das Programm unter AQime5 laufen gelasen und habe folgenge
EAccessviolation bekommen : in adresse 0x0000001C ist die GDS32.dll.
Es trat ein Fehler im Thread auf : SetthreadExecutionstatoe +0227 in GDS32.DLL
|
|
Mitmischer 1703
      
Beiträge: 754
Erhaltene Danke: 19
Win 7, Debian
Delphi Prism, Delphi 7, RAD Studio 2009 Academic, C#, C++, Java, HTML, PHP
|
Verfasst: Do 20.12.07 14:08
Kann mal jemand helfen?
_________________ Die Lösung ist nicht siebzehn.
|
|
Delphi_Rainer 
      
Beiträge: 31
|
Verfasst: Do 20.12.07 14:45
Sorry !
War gerade Mittag Essen.
Kann mir jemand mit meinem Problem helfen !
|
|
Xentar
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Do 20.12.07 20:57
GDS32.dll ist eien DLL von Firebird, da wirst du nicht viel machen können (es sei denn, du möchtest Firebird selber debuggen  ).
Versuchs mal mit einer anderen / aktuelleren Firebird Version (2.0.3 oder 1.5.5).
Alternativ solltest du auch einfach mal deinen quellcode überprüfen..
Delphi-Quelltext 1: 2: 3: 4:
| if database1.Connected then database1.close; if database1.Connected=false then database1.Open; |
Was wird das?
- Wenn Datenbank geöffnet, dann schließen
- Wenn Datenbank nicht verbunden (nach vorheriger Zeile also IMMER), dann neu verbinden.
Und das alle 2 Sekunden?! Da ist doch klar, dass der dir das irgendwann übel nimmt 
|
|