Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Zugriffsverletzung nach cdsInit.FieldByName('Wert').GetData (https://www.delphipraxis.net/127404-zugriffsverletzung-nach-cdsinit-fieldbyname-wert-getdata.html)

HiWieGehts 12. Jan 2009 19:48


Zugriffsverletzung nach cdsInit.FieldByName('Wert').GetData
 
Liste der Anhänge anzeigen (Anzahl: 3)
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?

HiWieGehts 12. Jan 2009 20:51

Re: Zugriffsverletzung nach cdsInit.FieldByName('Wert').GetD
 
Hallo,

habe eine Erweiterung des Codes durchgeführt. Mit bedingter Compilierung kann ich jetzt statt PInteger PRect verwenden. Das Funktioniert!
Es scheint also, als würde PInteger die Probleme machen. Jemand eine Idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 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