Zugriffsverletzung nach cdsInit.FieldByName('Wert').GetData
12. Jan 2009, 20:48
Hallo,
schreibe in einem Programm für die DBGrids die Spaltenbreiten beim Ändern in eine Tabelle. Diese Daten werden beim erneuten Anzeigen der Grids wieder verwendet.
Zunächst habe ich die Breiten in der Tabelle in einem Textfeld mittels AsInteger gespeichert. Hat prima funktioniert. Nun habe ich die das Datenfeld auf ftBytes geändert. Daher schreibe bzw. lese ich die Daten mit SetData bzw. GetData. Nun habe ich aber das Problem, dass beim Beenden des Programms immer eine Zugriffsverletzung auftritt, wenn zuvor mit "cdsInit.FieldByName('Wert').GetData(P);" Daten gelesen wurden und gleichzeitig ein 2. DBGrid oder/und ein zweites Clientdataset auf der Form ist.
Die Änderung von ftString auf ftBytes habe ich gemacht, weil ich auch die Fensterposition als TRect in der gleichen Tabelle speichern wollte. Das funktioniert übrigends ohne Probleme.
Habe zum Testen ein kleines Testprog geschrieben, welches hier als Anhang dabei ist.
Vorgangsweise:
die 3 Dateien in ein Verzeichnis kopieren
Kompilieren
Starten
Breite einer beliebigen Spalte im Grid verändern
Programm beenden
Programm erneut starten
Programm beenden --> Fehler
Durch entfernen der "//" vor SetFormPos und GetFormPos kann das Speichetrn und Wiederherstellen der Fensterposition aktiviert werden, welches ohne Pobleme funktioniert.
Kennt dieses Problem jemand bzw. hat jemand einen brauchbaren Tipp für mich?
|