Und wieder ein Thread, den ich aus der Vergessenheit hervorholen möchte...
Wir verwenden hier auch dieses Monster Namens IBObjects und haben ab und zu auch unerklärliche Phänomene, die eigentlich nichts miteinander zu tun haben dürfen, wie auch in deinem Fall in einer simplen IBO-Fetch-Schleife. Naja und wo ein komisches Verhalten ans Tageslicht kommt, ist meist ein Application.Processmessages nicht weit. Also habe ich die Sourcen von den IBOs gecheckt und wollte es nicht fassen...
In der Methode TIB_Session.DoAppCallback wird tatsächlich dieses Misskonstrukt der
VCL verwendet und von TIB_Dataset.DoAppCallback konsumiert. Natürlich nur unter bestimmten Bedingungen, unter Anderem abhängig von der Laufzeit des Fetch-Vorgangs (zumindest deutet der Einsatz von GetTickCount darauf hin). Aber so genau konnte ich dem nicht folgen, ist ein sehr verwobener und unstrukturierter Code.
Jedenfalls kann man dem Vorbeugen, wenn man die Eigenschaft TIB_Dataset.CallbackInc nach der Initialisierung auf -1 setzt (Standard ist 5). Dann werden definitv keine Application.Processmessages ausgeführt. Übrigens TIB_Cursor, TIB_Query/TIBOQuery leiten vom TIB_Dataset ab.
Wenn das Problem bei Euch noch (sporadisch) besteht, kannst du es mal testen...