Entwickler-Ecke

Datenbanken - TClientDataSet CreateDataSet Zugriffsverletzung


Daniel L. - Sa 18.05.19 23:36
Titel: TClientDataSet CreateDataSet Zugriffsverletzung
N'Abend!

Unter der Community Edition 10.3 bekomme ich beim Erstellen eine DataSet über TClientDataSet
eine Fehlermeldung.


- Komponente TClientDatsSet aufs Formular
- Im Feldeditor neue Felder erstellen
- 'DataSet erstellen' --> Zugriffverletzung bei Adresse .... in Modul 'dsnap260.bpl'. Lesen von Adresse 00000000.

Das gleich passiert auch beim dem Versuch, eine bestehende myBase einzulesen ('Aus MyBase Tablelle laden...')

Unter D2006 geht das problemlos.

Hat jemand eine Idee?

Danke - Daniel


Delete - So 19.05.19 00:20

- Nachträglich durch die Entwickler-Ecke gelöscht -


Daniel L. - So 19.05.19 01:25

ja, wie immer auf meiner HD in dem entsprechenden Dokument-Ordner

Daniel


Daniel L. - So 19.05.19 20:34

bei Delphi 10.1 (kostenlose Version) tritt der Fehler auch auf...

hmm,

vielleicht könnte mal jemand, der eine der beiden Versionen hat,
die oben genannten Schritte mal kurz ausprobieren?

Daniel


Delete - So 19.05.19 23:36

- Nachträglich durch die Entwickler-Ecke gelöscht -


Daniel L. - Mo 20.05.19 10:49

Hallo Frühlingsrolle

folgender Code geht unter D2006, aber nicht unter Community;



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
var cds : TClientDataSet;
begin
  cds := TClientDataSet.Create(self);
  cds.FieldDefs.Add('zahl', ftInteger);
  cds.CreateDataSet;                    // --> Fehler
  cds.SaveToFile('test.xml');
  freeAndNil (cds);
end;



Der Fehler erfolgt in Unit Datasnap.DBClient in procedure TCustomClientDataSet.InternalCheck
bei der Anweisung

FDSBase.GetErrorString(Status, Pointer(@ErrMsgBuffer[0]));,

was mir nicht viel sagt.

Adminrechte sind vorhanden (wobei beim Erstellen der DataSet ja noch gar nichts geschrieben wird)


Daniel L. - Mo 20.05.19 13:06

Nach viel rumprobieren und recherchieren :nixweiss: :

Der Fehler liegt an einer offensichtlich für D 10.3 veralteten midas.dll Version.
Unter Delphi 10.3 muss die von Empa bereitgestellte midas.dll (win32) benutzt werden.
Auffindbar (bei mir) in C:\Program Files (x86)\Embarcadero\Studio\20.0\Redist\win32

Die veraltete midas im Ordner Windows\SysWOW64 (W7) muss duch diese ersetzt werden.
Die neue midas funzt auch unter D2006

Die Wirkung der neuen midas zur Designzeit macht sich erst nach einem Neustart von Delphi bemerkbar.


Nersgatt - Di 21.05.19 11:28

Wenn Du in der .dpr die Unit MidasLib einbindest, musst Du die DLL nicht mit ausliefern, dann wird alles Notwendige mit in die EXE gelinkt.
Das ist für mich immer der einfachste und unkomplizierteste Weg.