und das Problem kommt dann bei einem bestimmten Record in der Tabelle immer wieder.
NACHTRAG: es hat sich zwischenzeitlich gezeigt, dass ein alternativer Aufruf von DataSet.FieldByName('feldname').CurValue nicht zu dem Fehler führt... Macht das überhaupt Sinn?
Ja?
Du bist nicht zufällg mal auf die Idee gekommen den Fehler/Verursacher in den Daten zu suchen und nicht im eigenen Code?
Vorallem wenn alles darauf hinweist.
Bei bestimmten Fehlern, wie z.B. einem Buffer Overun, repariert das Except ja nicht den Speicher, weswegen danach dann immernoch alles kaputt ist.
Mit Postgres + PgDAC + DevExpress hatten wir soeinen Fehler grade.
Wenn in der Datenbank ein Feld als VARCHAR ohne Längenangabe deklariert war, dann ist das Feld für die Datenbank "unbegrenzt" lang, aber das PgDAC hat in soeinem Fall den Feld-Speicher angeblich auf einen Standardwert begrenzt. Field.Size/DataSize gab dann immer einen bestimmten Wert aus.
Beim Laden dieses Datensatzes ins DataSet ging alles noch gut, aber das Anzeigen im DevExpressGrid knallte dann das halbe/ganze Programm weg, da dort der GridCache nur die ausgegebene Speichermenge reservierte, aber dann "alles" versuchte da reinzukopieren, welches den Speicher dahinter natürlich schrottete.
Ach ja, bei uns half es den String in der
DB zu kürzen, oder das VARCHAR-Field beim Auslesen mit einer passenden Länge zu casten.