急,求解,局域网网文件操作的问题

yangdear 2004-10-12 05:24:58
部分代码:
if not CopyFile(PChar(ASourDir +
sr.Name), pChar(ADestDir + sr.Name), false) then
begin
FService.RecordLog('拷贝文件' + ASourDir + sr.Name +
'到' + ADestDir + sr.Name+ #13#10'失败 ');
ErrorCode := GetLastError;
FService.RecordLog(FormatErrMsg(ErrorCode));
end;
日志:
10:54:22-->拷贝文件d:\oldindustrydata\15993\15993\005F2.jpg到\\I
dc112\UDSPictures\ImageSer\www\15993\005F2.jpg
失败
2004-10-12 10:54:22-->操作成功完成。
确实没有目标文件, 在一个线程中操作的, 那个共享目录是完全共享的,共享目录的权限是everyone完全控制
以前也写了一个同样的程序没问题,也是copy到网络,那个的共享机器是linux
运行服务的用户是 localsystem
目标路径是本地没有问题
单独的一个程序运行也没有问题

...全文
109 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yangdear 2004-11-19
  • 打赏
  • 举报
回复
作为一个程序运行没问题,可是放到服务里就不行了。怎么回事?服务的启动用户是Administrator
jinzhili 2004-11-16
  • 打赏
  • 举报
回复
http://blog.csdn.net/jinzhili/archive/2004/11/05/168220.aspx
yangdear 2004-10-12
  • 打赏
  • 举报
回复
下面这个是函数原形
yangdear 2004-10-12
  • 打赏
  • 举报
回复
procedure TPressDataThread.CopyFiles(ASourDir, ADestDir: String);
var sr: TSearchRec;
var
ErrorCode: DWORD; // holds our error code value
begin
if not DirectoryExists(ADestDir) then
CreateDestDir(ADestDir);
//先清空目标文件夹
if FindFirst(ADestDir + '*.*', faAnyFile, sr) = 0 then
begin
repeat
if FService.Terminated then
Break;
if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr <> faDirectory) then
if not DeleteFile(pChar(ADestDir + sr.Name)) then
begin
FService.RecordLog('删除文件' + ADestDir + sr.Name+ '失败 ');
ErrorCode := GetLastError;
FService.RecordLog(FormatErrMsg(ErrorCode));
end;
until FindNext(sr) <> 0;
SysUtils.FindClose(sr);
end;

if FindFirst(ASourDir + '\*.*', faAnyFile, sr) = 0 then
begin
repeat
if FService.Terminated then
Break;
if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr <> faDirectory) then
begin
if not CopyFile(PChar(ASourDir + sr.Name), pChar(ADestDir + sr.Name), true) then
begin
FService.RecordLog('拷贝文件' + ASourDir + sr.Name + '到' + ADestDir + sr.Name+ #13#10'失败 ');
ErrorCode := GetLastError;
FService.RecordLog(FormatErrMsg(ErrorCode));
end;
DeleteFile(PChar(ASourDir + sr.Name));
end;
until FindNext(sr) <> 0;
SysUtils.FindClose(sr);
end;

end;
yangdear 2004-10-12
  • 打赏
  • 举报
回复
前面本来有一个创建dir的函数,也出错
没有写出来

procedure TPressDataThread.CopyFiles(ASourDir, ADestDir: String);
var sr: TSearchRec;
var
ErrorCode: DWORD; // holds our error code value
begin
if not DirectoryExists(ADestDir) then
CreateDestDir(ADestDir);
//先清空目标文件夹
if FindFirst(ADestDir + '*.*', faAnyFile, sr) = 0 then
begin
repeat
if FService.Terminated then
Break;
if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr <> faDirectory) then
if not DeleteFile(pChar(ADestDir + sr.Name)) then
begin
FService.RecordLog('删除文件' + ADestDir + sr.Name+ '失败 ');
ErrorCode := GetLastError;
FService.RecordLog(FormatErrMsg(ErrorCode));
end;
until FindNext(sr) <> 0;
SysUtils.FindClose(sr);
end;

if FindFirst(ASourDir + '\*.*', faAnyFile, sr) = 0 then
begin
repeat
if FService.Terminated then
Break;
if (sr.Name <> '.') and (sr.Name <> '..') and (sr.Attr <> faDirectory) then
begin
if not CopyFile(PChar(ASourDir + sr.Name), pChar(ADestDir + sr.Name), true) then
begin
FService.RecordLog('拷贝文件' + ASourDir + sr.Name + '到' + ADestDir + sr.Name+ #13#10'失败 ');
ErrorCode := GetLastError;
FService.RecordLog(FormatErrMsg(ErrorCode));
end;
DeleteFile(PChar(ASourDir + sr.Name));
end;
until FindNext(sr) <> 0;
SysUtils.FindClose(sr);
end;

end;
masterjames 2004-10-12
  • 打赏
  • 举报
回复
写错了
if DirectoryExists(aFilename) then begin

CopyFile(pChar).....
end else begin
showmessage('is not a dir');
end ;
masterjames 2004-10-12
  • 打赏
  • 举报
回复
if not DirectoryExists(aFilename) then begin

CopyFile(pChar).....
end else begin
showmessage('is not a dir');
end ;
相关推荐
发帖
Windows SDK/API

1177

社区成员

Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
帖子事件
创建了帖子
2004-10-12 05:24
社区公告
暂无公告