Autor Beitrag
l33t
Hält's aus hier
Beiträge: 7

Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11

BeitragVerfasst: 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


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 17.01.09 19:27 
In welcher Zeile kommt die Zugriffsverletzung und bei welcher Adresse (0 oder eine andere vor allem)?
l33t Threadstarter
Hält's aus hier
Beiträge: 7

Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11

BeitragVerfasst: 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



BeitragVerfasst: Sa 17.01.09 19:47 
Und so?
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 7

Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11

BeitragVerfasst: Sa 17.01.09 19:51 
leider genau das selbe...
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 17.01.09 19:54 
Stepp mal mit F7 durch, das muss doch gehen.
l33t Threadstarter
Hält's aus hier
Beiträge: 7

Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11

BeitragVerfasst: Sa 17.01.09 21:12 
hab ich versucht dann geht der aber alle units durch das sind ja ueber 100k zeilen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 7

Win XP, Vista, Kubuntu, Xubuntu, Debian Etch 3.8, Suse 11

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 18.01.09 16:34 
Das dürfte eigentlich (vor dem Fehler) nur bei F7 passieren. :gruebel:
F8 springt eigentlich nicht in die Befehle hinein.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 18.01.09 16:58 
Nochmal:
ausblenden 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 //hier Breakpoint setzen und dann (zunächst) mit F8 durchsteppen
    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



BeitragVerfasst: Sa 07.02.09 18:46 
Der Fehler kommt bei (bzw. in)
ausblenden Delphi-Quelltext
1:
sqlquery1.open;					


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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 08.02.09 17:05 
user profile iconSparrowSX hat folgendes geschrieben Zum zitierten Posting springen:
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



BeitragVerfasst: 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



BeitragVerfasst: 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) :lol:



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. :wink: