求:一个COPY 文件的问题???为何不支持网络路径???(100分)

  • 主题发起人 主题发起人 hcnet
  • 开始时间 开始时间
H

hcnet

Unregistered / Unconfirmed
GUEST, unregistred user!
Procedure TForm1.CopyFileWithProgressBar(Source,Destination:string);
var
FromF,ToF : file of byte;
Buffer : array[0..4096] of char;
NumRead : integer;
FileLength : longint;
begin
AssignFile(FromF,Source);
reset(FromF);
AssignFile(ToF,Destination);
rewrite(ToF);
FileLength:=FileSize(FromF);
With ProgressBar1 do
begin
Min := 0;
Max := FileLength;
while FileLength > 0 do
begin
BlockRead(FromF,Buffer[0],SizeOf(Buffer),NumRead);
FileLength := FileLength - NumRead;
BlockWrite(ToF,Buffer[0],NumRead);
Position := Position + NumRead;
Application.ProcessMessages;
end;
CloseFile(FromF);
CloseFile(ToF);
end;
end;

请问各位兄弟上面的代码为何这个复制文件的时候只能本地磁盘对磁盘复制
CopyFileWithProgressBar('c:/sys.gho','d:/sys.gho');
用网络路径复制 reset(FromF);会报错。。。。。。

请问该如何修改可以做到支持网络路径复制文件呢?

CopyFileWithProgressBar('//192.168.0.251/sys/sys.gho','d:/sys.gho');

源路径://192.168.0.251/sys/sys.gho'
 
可能你对源文件没有写权限吧
 
估计没有权限或者没有登陆吧
 
把哪个文件完全共享就可以网络拷贝了.
如果要输入用户名和密码的话:
可以利用映射盘来实现,拷贝完后断开映射盘,不过你还得考虑网络突然断了的情况

下面是如何映射盘
var
NetSource : TNetResource;
begin
with NetSource do
begin
dwType := RESOURCETYPE_ANY;
lpLocalName := ‘X:';
// 将 远 程 资 源 映 射 到 此 驱 动 器
lpRemoteName := ‘//hqServer/sys';
// 远 程 网 络 资 源
lpProvider := ‘';
// 必 须 赋 值,
如 为 空 则 使 用lpRemoteName 的 值。
end;
WnetAddConnection2(NetSource,‘Password',‘Guest',
// 用 户 名 为Guest, 口 令 为Password
CONNECT_UPDATE_PROFILE);
// 下 次 登 录 时 重 新 连 接
// 此 时 在Windows 资 源 管 理 器 中
可 看 到 网 络 驱 动 器X:
if MessageDlg(‘Are you sure to disconnect Drive ?',
   mtConfirmation, [mbYes, mbNo], 0) = mrYes
then
// 不 管 是 否 有 文 件 打 开,
断 开 网 络 驱 动 器X:
WNetCancelConnection2( ‘X:', CONNECT_UPDATE_
PROFILE, True);
end;
end;
 
{從升級服務器上復制待升級文件列表,並讀取其文件名.}
CopyFile(pchar(edLan.Text+'Update_Files.log'),
pchar(edLocal.Text+'Update_Files.log'),false);
這個是我在內網升級文件時用的。可支持網絡路徑。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部