是这样的:我的程序是用DELPHI 7 + ADO + SQL SERVER 2000 写的;本来是属于单机版的。程序中要加载图片,用到LoadFromFile函数.该函数的参数是具体图象的存放地址。在Sql server 2000数据库中有一张表 t_Pro 如下:
Pno Pname Path
1 a D:\aa\a1.jpg
2 b D:\aa\a2.jpg
本来在单机版中 我用如下语句就可以 加载图片了:
Image2.Picture.LoadFromFile(adoqry_mx.fieldbyName('Path').AsString);
现在 要把单机版转为C/S版的 。于是 出现了问题了 :
在客户机上写下如下代码后:
Image2.Picture.LoadFromFile(adoqry_mx.fieldbyName('PicBz').AsString);
会把客户机上的D:\aa\a1.jpg加载到Image2上 ,而客户机上不一定有这个图片,因为很明显,要加载的图片是服务器上(主机上D:\aa\a1.jpg的图片)。就算有也不一定是 ,实际上的图片。于是会出现,加载图片出错。
于是我想了个办法:在数据库表的Path字段中把服务器的IP地址(IP地址为192.168.0.110)也加上去;这样就可以明确的定到要加载的图片了。内容如下:
Pno Pname Path
1 a 192.168.0.110\\D:\aa\a1.jpg
2 b 192.168.0.110\\D:\aa\a2.jpg
然后,在客户段就算要加载图片的话也是加载服务器(192.168.0.110)上的图片。
问题是 :在这个:
Image2.Picture.LoadFromFile(adoqry_mx.fieldbyName('Path').AsString);
函数中 当adoqry_mx.fieldbyName('Path').AsString字段换成 192.168.0.110\\D:\aa\a1.jpg 就出现图片加载出错。 不能LoadFromFile.这个问题困饶了 我好几天到现在一直没有解决。不知道哪位高手 能解决这个问题;当然也可以用其他方案。但是一般情况下 不考虑使用TBLOBField字段来处理,另外 我要加载的图片都是 JPG图片。怎么解决这个问题?
同时可以参看:
http://expert.csdn.net/Expert/topic/2047/2047302.xml?temp=.7472193
http://expert.csdn.net/Expert/topic/2047/2047803.xml?temp=.4180567
这两个帖子,该问题解决后 三个帖子,一并结分。
谢谢,高手加盟。
Pno Pname Path
1 a D:\aa\a1.jpg
2 b D:\aa\a2.jpg
本来在单机版中 我用如下语句就可以 加载图片了:
Image2.Picture.LoadFromFile(adoqry_mx.fieldbyName('Path').AsString);
现在 要把单机版转为C/S版的 。于是 出现了问题了 :
在客户机上写下如下代码后:
Image2.Picture.LoadFromFile(adoqry_mx.fieldbyName('PicBz').AsString);
会把客户机上的D:\aa\a1.jpg加载到Image2上 ,而客户机上不一定有这个图片,因为很明显,要加载的图片是服务器上(主机上D:\aa\a1.jpg的图片)。就算有也不一定是 ,实际上的图片。于是会出现,加载图片出错。
于是我想了个办法:在数据库表的Path字段中把服务器的IP地址(IP地址为192.168.0.110)也加上去;这样就可以明确的定到要加载的图片了。内容如下:
Pno Pname Path
1 a 192.168.0.110\\D:\aa\a1.jpg
2 b 192.168.0.110\\D:\aa\a2.jpg
然后,在客户段就算要加载图片的话也是加载服务器(192.168.0.110)上的图片。
问题是 :在这个:
Image2.Picture.LoadFromFile(adoqry_mx.fieldbyName('Path').AsString);
函数中 当adoqry_mx.fieldbyName('Path').AsString字段换成 192.168.0.110\\D:\aa\a1.jpg 就出现图片加载出错。 不能LoadFromFile.这个问题困饶了 我好几天到现在一直没有解决。不知道哪位高手 能解决这个问题;当然也可以用其他方案。但是一般情况下 不考虑使用TBLOBField字段来处理,另外 我要加载的图片都是 JPG图片。怎么解决这个问题?
同时可以参看:
http://expert.csdn.net/Expert/topic/2047/2047302.xml?temp=.7472193
http://expert.csdn.net/Expert/topic/2047/2047803.xml?temp=.4180567
这两个帖子,该问题解决后 三个帖子,一并结分。
谢谢,高手加盟。
\\192.168.0.110\D\aa\a1.jpg嗯,如果在服务器上搭建一个WEB就容易多了,楼主考虑一下吧
当然还有个登陆权限问题!
不过觉得 bluemeteor(挂月||╭∩╮(︶_︶)╭∩╮) 说的有道理,既然是C/S,就搭建一个WEB多方便~~~~~~~~
1 如楼上说用文件直接共享访问,不过不推荐
2 将jpg图像文件而不是文件路径保存在数据库中
3 利用web
--这几个楼上都说了
4 用stream等方式利用xm_cmdshell或者服务器外挂将服务器文件传入数据库或者传出到客户机
你说的 “必须确保在load之前能够直接的访问那台电脑” 是什么意思?
不设置密码?还是共享某个文件夹。
-----------------------------------
要利用web ,服务器必须装IIS,并配置好...具体可以参考建立网站书籍.
不过我可以提醒一下,不知关机程序你写过没有??2000需要得到系统权限,我想网络共享的道理跟这个大同小异吧!?只不过你现在要得到的是另外一台电脑的登陆权限。
var
htoken:thandle;
tkp:token_privileges;
r:dword;
begin
openprocesstoken(getcurrentprocess(),token_adjust_privileges or token_query,htoken);
lookupprivilegevalue(nil,'seshutdownprivilege',tkp.privileges[0].luid);
//设定权限
tkp.PrivilegeCount:=1;
tkp.privileges[0].Attributes:=se_privilege_enabled;
//得到关机权限
adjusttokenprivileges(htoken,false,tkp,0,nil,r);
//关闭计算机
exitwindowsex(ewx_shutdown or ewx_poweroff,0);
end.
这样的你的路径就这样写http://yourswebserver\aa\a1.jpg