Featured post
Delphi 2007 DBX Access Violation in dbxmys30.dll -
i'm trying use dbexpress components in delphi 2007 connect mysql database getting error reads "access violation @ address 0b86e258 in module 'dbxmys30.dll'. read of address 00000000".
i have tsqlconnection using mysql drivers , setup connect mysql 5.1 database. can set active without problem.
the problem arises when try data database using number of components. more specific, have tsqltable object. set sqlconnection parameter tsqlconnection created , set table name table in database. when try set active true error. happens in design mode @ runtime. happen other dbx component try data database.
i'm running windows 7 64 bit mysql 5.1 client , server. can run queries on database using mysql query browser without issues.
any appreciated. thanks!
you have version incompatibility, version of 'libmysql.dll' you're using incompatible version dbx driver built against. this thread on embarcadero forums suggests use version '5.0.27' , this thread suggests '5.0.24'. latest version had success '5.1.11'.
btw, because 'libmysql.dll' contains no version info, fed keeping track of dll version , had wrote little thing:
type tform1 = class(tform) procedure formcreate(sender: tobject); procedure formpaint(sender: tobject); procedure formdestroy(sender: tobject); private flastfile: string; procedure wmdropfiles(var msg: twmdropfiles); message wm_dropfiles; public { public declarations } end; var form1: tform1; implementation uses shellapi; {$r *.dfm} procedure tform1.formcreate(sender: tobject); begin dragacceptfiles(handle, true); width := 350; height := 110; end; procedure tform1.formdestroy(sender: tobject); begin dragacceptfiles(handle, false); end; procedure tform1.formpaint(sender: tobject); var r: trect; begin canvas.textout(40, 16, 'drop libmysql.dll find out version'); r := rect(14, 40, clientwidth, clientheight); drawtext(canvas.handle, pchar(flastfile), length(flastfile), r, dt_left); end; function getversion(clientdll: pchar): uint; const func = 'mysql_get_client_version'; functionnotfound = '%s: ''%s'' in ''%s''.'; unabletoloadlib = 'unable load library (''%s''): ''%s''.'; var libhandle: hmodule; getclientversionfunc: function: integer; begin result := 0; libhandle := loadlibrary(clientdll); if libhandle <> 0 begin try @getclientversionfunc := getprocaddress(libhandle, func); if @getclientversionfunc <> nil begin result := getclientversionfunc; end else raise eoserror.createfmt(functionnotfound, [syserrormessage(getlasterror), func, clientdll]); freelibrary(libhandle); end; end else raise eoserror.createfmt(unabletoloadlib, [clientdll, syserrormessage(getlasterror)]); end; procedure tform1.wmdropfiles(var msg: twmdropfiles); var len: integer; dropname: string; ver: uint; begin len := dragqueryfile(msg.drop, 0, nil, 0) + 1; setlength(dropname, len); len := dragqueryfile(msg.drop, 0, pchar(dropname), len); setlength(dropname, len); try try ver := getversion(pchar(dropname)); except flastfile := ''; raise; end; if boolean(ver) flastfile := dropname + #10 +'[' + inttostr(ver) + '] - ' + inttostr(ver div 10000) + '.' + inttostr((ver div 100) mod 100) + '.' + inttostr(ver mod 100) else flastfile := ''; invalidate; dragfinish(msg.drop); msg.result := 0; end; end;
- Get link
- X
- Other Apps
Comments
Post a Comment