| Autor |
Beitrag |
l33t
Hält's aus hier
Beiträge: 7
Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11
|
Verfasst: Sa 17.01.09 19:18
Hallo,
wenn ich das unten aufgefuehrte stueck code ausfuehre, dann erhalte ich eine Zugriffsverletzung im Modul 'dbxmys.dll'. Hat jemand eine Idee?
Der SQL server sowie die libmysqld.dll sind selbstverstaendlcih passend.
Mysql version ist 5.0.26. Zu beachten ist jedoch das wenn cih auf einen anderen Server zugreife das selbe passiert.
Die Verbindung kann ich jedoch aufbauen
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.Button4Click(Sender: TObject); begin if sqlconnection1.connected then begin sqlquery1.SQL.Clear; sqlquery1.SQL.Add('SELECT * from l2j.characters;'); sqlquery1.open; sqlquery1.First; while not sqlquery1.eof do begin a := SQLQuery1.FieldByName('char_name').asstring; showmessage(a); sqlquery1.Next; end;
end; end; |
Danke im Vorraus
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 17.01.09 19:27
In welcher Zeile kommt die Zugriffsverletzung und bei welcher Adresse (0 oder eine andere vor allem)?
|
|
l33t 
Hält's aus hier
Beiträge: 7
Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11
|
Verfasst: Sa 17.01.09 19:44
Der genaue Fehler ist:
Zugriffsverletzung bei Adresse 00238564 in Modul 'dbxmys.dll' Lesen von Adresse 00000000
Die Zeile weiss ich leider nicht... Vermute aber die Zeile "sqlquery1.open". Der Debugger faengt den Fehler aus irgendeinem Grund nicht ab
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 17.01.09 19:47
Und so?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button4Click(Sender: TObject); begin if sqlconnection1.connected then begin sqlquery1.Close; sqlquery1.SQL.Text := 'SELECT * from l2j.characters;'; sqlquery1.open; while not sqlquery1.eof do begin a := SQLQuery1.FieldByName('char_name').asstring; showmessage(a); sqlquery1.Next; end; end; end; |
DBExpress ist allerdings nicht mein Spezialgebiet.
|
|
l33t 
Hält's aus hier
Beiträge: 7
Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11
|
Verfasst: Sa 17.01.09 19:51
leider genau das selbe...
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 17.01.09 19:54
Stepp mal mit F7 durch, das muss doch gehen.
|
|
l33t 
Hält's aus hier
Beiträge: 7
Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11
|
Verfasst: Sa 17.01.09 21:12
hab ich versucht dann geht der aber alle units durch das sind ja ueber 100k zeilen.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 17.01.09 21:27
Du musst natürlich erst einen Haltepunkt auf den Anfang der Prozedur setzen...
Wenn dann das Programm dort ankommt, kannst du mit F8 zeilenweise den Quelltext abarbeiten lassen.
|
|
l33t 
Hält's aus hier
Beiträge: 7
Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11
|
Verfasst: So 18.01.09 16:31
ja klar hab ich ja auch so gemacht nur dann geht der von jeder verwendeten dbexpress funktion alle zeilen durch
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 18.01.09 16:34
Das dürfte eigentlich (vor dem Fehler) nur bei F7 passieren.
F8 springt eigentlich nicht in die Befehle hinein.
|
|
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 18.01.09 16:58
Nochmal:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button4Click(Sender: TObject); begin if sqlconnection1.connected then begin sqlquery1.Close; sqlquery1.SQL.Text := 'SELECT * from l2j.characters;'; sqlquery1.open; while not sqlquery1.eof do begin a := SQLQuery1.FieldByName('char_name').asstring; showmessage(a); sqlquery1.Next; end; end; end; |
|
|
SparrowSX
Hält's aus hier
Beiträge: 4
|
Verfasst: Sa 07.02.09 18:46
Der Fehler kommt bei (bzw. in)
Delphi-Quelltext
Ich hab den gleichen Fehler... wäre schön wenn sich doch noch jemand mit ner Lösung findet...
PS: bei mir is die Zugriffsverletzung bei Adresse: 03398564
|
|
SparrowSX
Hält's aus hier
Beiträge: 4
|
Verfasst: So 08.02.09 16:42
Also der Fehler liegt in der 'dbxmys.dll'
...
Nach einigem suchen musste ich feststellen dass diese Datei, MySQL nur bis Version 5.0.x unterstützt...
Habe gerade eine Version für 5.1 gefunden ( cc.codegear.com/Item/24598)...
Eben installiert aber keine Änderung (wird in einem seperaten Ordner installiert und geht nur bis Delphi 11)
Also ich nehme mal an dass ich nur einen Treiber (also eine aktuelle dbxmys.dll) für Delphi 2009 mit MySQL 5.1 Unterstützung brauche.
Nochmal zu den Fehlern:
Verbinden geht... auch wenige Abfragebefehle mit sqlquerry ('show tables;') funktionieren.
Aber sobald ich z.B. eine Tabelle erstellen will oder Daten einfügen schreibt er entweder 'Falscher SQL-Syntax ...' oder 'Zugriffsverletzung ...'
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 08.02.09 17:05
SparrowSX hat folgendes geschrieben : | | Aber sobald ich z.B. eine Tabelle erstellen will oder Daten einfügen schreibt er entweder 'Falscher SQL-Syntax ...' |
Steht da vielleicht auch eine genauere Meldung? Es wäre interessant, wenn da der Befehl stünde wie er angekommen ist.
Ich vermute der Fehler liegt an der Unicodeunterstützung in Delphi 2009 und ggf. einer fehlerhaften Umwandlung / Übergabe der Strings.
|
|
SparrowSX
Hält's aus hier
Beiträge: 4
|
Verfasst: So 08.02.09 18:20
Habe MySQL-Server auf Version 5.0.67 neu installiert...
Bei MySQL-Client Version steht da aber immernoch 5.1.3
Könnte das jetzt noch der Fehler sein? (oder is das nur auf phpmyadmin bezogen?) - Wenn ja - wie bekomme ich die Clientversion runter?
Unicodeunterstützung? ... mit sowas hab ich mich noch gar nich auseinandergesetzt... aber wenn Delphi 2009 mit dbexpress ausgeliefert wir müsste das doch eigentlich funktionieren oder nich?
Unter Details bei der Zugriffsverletzung steht:
[11EE8564]{dbxmys.dll } Unbekannte Funktion bei DBXReader_Next + $16100
[501D720C]{vcl120.bpl } Controls.TWinControl.WMNCHitTest (Line 10593, "Controls.pas" + 5) + $4
[501D0BFA]{vcl120.bpl } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6
[0ED25774]{DbxCommonDriver120.bpl} Dbxdynalink.TDBXDynalinkCommand.DerivedPrepare + $19C
[0ED25789]{DbxCommonDriver120.bpl} Dbxdynalink.TDBXDynalinkCommand.DerivedPrepare + $1B1
[0ED253C5]{DbxCommonDriver120.bpl} Dbxdynalink.TDBXDynalinkCommand.DerivedExecuteQuery + $81
[0ED09C05]{DbxCommonDriver120.bpl} Dbxcommon.TDBXCommand.ExecuteQuery + $45
[0ED0A083]{DbxCommonDriver120.bpl} Dbxcommon.TDBXMorphicCommand.ExecuteQuery + $F
[50AC096F]{dbexpress120.bpl} SqlExpr.TCustomSQLDataSet.ExecuteStatement (Line 5803, "..\..\..\..\..\src\pas\dbx\vcl\SqlExpr.pas" + 43) + $B
[50ABCABC]{dbexpress120.bpl} SqlExpr.TCustomSQLDataSet.InternalOpen (Line 4110, "..\..\..\..\..\src\pas\dbx\vcl\SqlExpr.pas" + 1) + $2
[504941B9]{dbrtl120.bpl} DB.TDataSet.DoInternalOpen (Line 10599, "DB.pas" + 2) + $4
[50494272]{dbrtl120.bpl} DB.TDataSet.OpenCursor (Line 10628, "DB.pas" + 4) + $2
[50ABCBF3]{dbexpress120.bpl} SqlExpr.TCustomSQLDataSet.OpenCursor (Line 4142, "..\..\..\..\..\src\pas\dbx\vcl\SqlExpr.pas" + 10) + $4
[5049412D]{dbrtl120.bpl} DB.TDataSet.SetActive (Line 10581, "DB.pas" + 12) + $7
[5003EA46]{rtl120.bpl } TypInfo.SetOrdProp (Line 1502, "TypInfo.pas" + 27) + $0
[20B9ACF2]{designide120.bpl} DesignEditors.TPropertyEditor.SetOrdValue (Line 838, "DesignEditors.pas" + 2) + $E
[20B9BDFB]{designide120.bpl} DesignEditors.TEnumProperty.SetValue (Line 1398, "DesignEditors.pas" + 5) + $4
[20B9A961]{designide120.bpl} DesignEditors.TPropertyEditor.Edit (Line 668, "DesignEditors.pas" + 11) + $14
[208AAF82]{coreide120.bpl} PropInsp.TPropertyInspector.PropListEditDblClick (Line 882, "PropInsp.pas" + 20) + $5
[20C87371]{vclide120.bpl} IDEInspListBox.TInspListBox.DoEditDblClick (Line 976, "IDEInspListBox.pas" + 2) + $A
[20C88BB2]{vclide120.bpl} IDEInspListBox.TInspListBox.EditDblClick (Line 1546, "IDEInspListBox.pas" + 0) + $2
[501D1181]{vcl120.bpl } Controls.TControl.DblClick (Line 6761, "Controls.pas" + 1) + $14
[501D12E4]{vcl120.bpl } Controls.TControl.WMLButtonDblClk (Line 6804, "Controls.pas" + 4) + $C
[501D0BFA]{vcl120.bpl } Controls.TControl.WndProc (Line 6640, "Controls.pas" + 91) + $6
[50057E04]{rtl120.bpl } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0
[501D5287]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) + $6
[501DD246]{vcl120.bpl } Controls.TDockTree.WndProc (Line 14467, "Controls.pas" + 74) + $5
[50046C98]{rtl120.bpl } Classes.TThreadList.UnlockList (Line 3781, "Classes.pas" + 0) + $4
[5012C8FC]{vcl120.bpl } Graphics.FreeMemoryContexts (Line 6830, "Graphics.pas" + 12) + $5
[501D4BE0]{vcl120.bpl } Controls.TWinControl.IsControlMouseMsg (Line 9127, "Controls.pas" + 9) + $25
[501D5287]{vcl120.bpl } Controls.TWinControl.WndProc (Line 9334, "Controls.pas" + 136) + $6
[20C86513]{vclide120.bpl} IDEInspListBox.TPropInspEdit.WndProc (Line 439, "IDEInspListBox.pas" + 7) + $4
[501D49A0]{vcl120.bpl } Controls.TWinControl.MainWndProc (Line 9063, "Controls.pas" + 3) + $6
[50057E04]{rtl120.bpl } Classes.StdWndProc (Line 12723, "Classes.pas" + 8) + $0
[501FB041]{vcl120.bpl } Forms.TApplication.StopHintTimer (Line 10343, "Forms.pas" + 3) + $6
[501F9EAB]{vcl120.bpl } Forms.TApplication.ProcessMessage (Line 9613, "Forms.pas" + 23) + $1
[501F9EEE]{vcl120.bpl } Forms.TApplication.HandleMessage (Line 9643, "Forms.pas" + 1) + $4
[501FA219]{vcl120.bpl } Forms.TApplication.Run (Line 9780, "Forms.pas" + 26) + $3
[004259D2]{bds.exe } bds.bds (Line 196, "" + 7) + $7
|
|
SparrowSX
Hält's aus hier
Beiträge: 4
|
Verfasst: So 08.02.09 19:01
Also ich weiß nich wie... aber eben hats geklappt...
Das Problem das ich demnächst haben werde: Ich muss das noch auf meinem Laptop zum laufen bekommen...
Ich muss aber mal anmerken:
Ich habe unzählige dlls, updates und "lösungen" von drittanbietern (devart uvm.) installiert, integriert usw.
Habe bis jetzt auch nur 2 Befehle die ohne Fehler funktionieren... werde weitere testen (falls doch nicht alles geht melde ich mich garantiert nochmal)
Und wenn ich es auf meinem Laptop zum laufen bekomme und der Fehler bzw. die Lösung eindeutig sind werd ich es natürlich sofort posten. 
|
|