Einzelnen Beitrag anzeigen

HiWieGehts

Registriert seit: 19. Aug 2005
101 Beiträge
 
Delphi 10.4 Sydney
 
#1

Zugriffsverletzung nach cdsInit.FieldByName('Wert').GetData

  Alt 12. Jan 2009, 19: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?
Angehängte Dateien
Dateityp: dpr test_437.dpr (224 Bytes, 1x aufgerufen)
Dateityp: dfm main_913.dfm (2,2 KB, 1x aufgerufen)
Dateityp: pas main_169.pas (3,8 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat