![]() |
Datenbank: Firebird • Version: 2.5 • Zugriff über: IbExpress
IBSQL und Firebird
Hallo,
ich verwende XE2 , Firebird 2.5 und greife auf diese Datenbank über "InterBase Express core components" k zu. Der Konstruct:
Delphi-Quellcode:
Die Abfrage funktioniert korrekt.
IBSQL := TibSQL.Create;
IBSQL.Database := Database IBSQL.Transaction := readTransactin IBSQL.Text := Select * from Daten where id=123; IBSQL.Open; ... IBSQL.Close; IbSQL.Free; Bei IBSQL.free stürzt das Programm tief im System in "class function TMonitor.GetFieldAddress(AObject: TObject): PPMonitor; ab. Anweisung Result := PPMonitor(PByte(AObject) + AObject.InstanceSize - hfFieldSize + hfMonitorOffset); Hier scheint AObject.InstanceSize einen Zugriffsfehler zu bringen. Das passiert aber nur bei manchen Abfragen. Hat wer eine Idee was dass sein könnte? Gruß Peter |
AW: IBSQL und Firebird
ich behaupte einfach mal, dass die Ursache im Unterschied zwischen Firebird und Interbase zu finden ist, da die IBX offiziell nur Interbase unterstützen....
|
AW: IBSQL und Firebird
Unsere Legacy-Anwendung greift auch über IBX auf Firebird zu und es kommt kein solcher Fehler. Daran dürfte es IHMO also nicht liegen.
|
AW: IBSQL und Firebird
So jetzt habe ich den Fehler gefunden ist wohl eher Delphi zuzuordnen.
In einer Klasse wird ein indiziertes Property verwendet. Vor der Abfrage wird der Index eines Eintrags errechnet. Da der Index größer Feldlänge war, kam es zu einer Speicherschutzverletzung. Ich setze einen Break direkt auf die Anweisung, welche die Speicherschutzverletzung auslöst. Hat der Debugger diese Stelle erreicht, drücke ich F7. Der Debugger arbeitet nur diesen einen Bfehl ab und und hält mit einer Fehlemeldung tief in der Systembibliothek von Delphi an. (IBX -> vcl.System). Es ist praktisch unmöglich von dem Fehlerhalt auf den tatsächlichen Fehlerort zu schließen. Gruß Peter |
AW: IBSQL und Firebird
Magst Du den Quelltext, der den Fehler auslöst ("Vor der Abfrage wird der Index eines Eintrags errechnet.") posten oder Dateiname und Zeile angeben, damit man das nachvollziehen kann?
|
AW: IBSQL und Firebird
Was für ein Zeichensatz ?
IB und FB verwenden für UTF-8 verschiedene Kennungen, das kann bei den Buffergrößen zu falschen Berechnungen/Overflows führen hier ein Fix , im unteren viertel der Seite ![]() mfg Hannes |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz