AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IBSQL und Firebird

Ein Thema von hanspeter · begonnen am 10. Sep 2014 · letzter Beitrag vom 12. Sep 2014
Antwort Antwort
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#1

IBSQL und Firebird

  Alt 10. Sep 2014, 12:26
Datenbank: Firebird • Version: 2.5 • Zugriff über: IbExpress
Hallo,

ich verwende XE2 , Firebird 2.5 und greife auf diese Datenbank über "InterBase Express core components" k zu.

Der Konstruct:
Delphi-Quellcode:
IBSQL := TibSQL.Create;
IBSQL.Database := Database
IBSQL.Transaction := readTransactin
IBSQL.Text := Select * from Daten where id=123;
IBSQL.Open;

...

IBSQL.Close;
IbSQL.Free;
Die Abfrage funktioniert korrekt.
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
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: IBSQL und Firebird

  Alt 10. Sep 2014, 13:09
ich behaupte einfach mal, dass die Ursache im Unterschied zwischen Firebird und Interbase zu finden ist, da die IBX offiziell nur Interbase unterstützen....
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

AW: IBSQL und Firebird

  Alt 10. Sep 2014, 14:25
Unsere Legacy-Anwendung greift auch über IBX auf Firebird zu und es kommt kein solcher Fehler. Daran dürfte es IHMO also nicht liegen.
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#4

AW: IBSQL und Firebird

  Alt 12. Sep 2014, 08:41
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
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#5

AW: IBSQL und Firebird

  Alt 12. Sep 2014, 11:37
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?
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
220 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: IBSQL und Firebird

  Alt 12. Sep 2014, 11:38
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

http://translate.google.de/translate...20%26bih%3D965

mfg Hannes
  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 07:45 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