这是我在DLL里的函数
function Jia(Fname:pchar):integer;stdcall;
var
F_name,F_buf,F_buf1:string;
B_buf,W_buf:array of byte;
F_hand,iFileLength,iBytesRead,len:integer;
Buffer: PChar;
i: Integer;
len8,ikong:longword;
len7:boolean;
F_nHand:longint;
//[0 .. 682111]
begin
// len := length(Fname);
// move(Fname[1],Fname[0],len);
// Fname[len] := #0;
F_name:=Fname;
showmessage(F_name);
F_buf:='';
try
F_hand:=fileopen(F_name,fmShareDenyWrite);
iFileLength := FileSeek(F_hand,0,2);
FileSeek(F_hand,0,0);
i:=iFileLength;
setlength(B_buf,i+1); //Êý×éµÄ³¤¶È
iBytesRead:= FileRead(F_hand,B_buf[0],iFileLength);
fileclose(F_hand);
for i := 0 to iFileLength-1 do
begin
F_buf1:=inttohex(B_buf[i],2);
F_buf:=F_buf+F_buf1;
end;
ikong:=length(F_buf);
setlength(W_buf,ikong+1);
for i:=0 to ikong-1 do
begin
F_buf1:=copy(F_buf,i+1,1);
W_buf[i]:=ord(F_buf1[1]);
end;
len8:=1;
len7:=DeleteFile(pchar(F_name));
showmessage(F_name);
if len7=true then
begin
F_nHand:=CreateFile(pchar(F_name), GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE,NIL, OPEN_ALWAYS, 0, 0);
len7:=writefile(F_nHand,W_buf[0],ikong,len8,NIL);
closehandle(F_nHand);
Jia:=1;
end
else
begin
Jia:=0;
end; finally
// FreeMem(Buffer);
end;
end;
function Jia(Fname:pchar):integer;stdcall;
var
F_name,F_buf,F_buf1:string;
B_buf,W_buf:array of byte;
F_hand,iFileLength,iBytesRead,len:integer;
Buffer: PChar;
i: Integer;
len8,ikong:longword;
len7:boolean;
F_nHand:longint;
//[0 .. 682111]
begin
// len := length(Fname);
// move(Fname[1],Fname[0],len);
// Fname[len] := #0;
F_name:=Fname;
showmessage(F_name);
F_buf:='';
try
F_hand:=fileopen(F_name,fmShareDenyWrite);
iFileLength := FileSeek(F_hand,0,2);
FileSeek(F_hand,0,0);
i:=iFileLength;
setlength(B_buf,i+1); //Êý×éµÄ³¤¶È
iBytesRead:= FileRead(F_hand,B_buf[0],iFileLength);
fileclose(F_hand);
for i := 0 to iFileLength-1 do
begin
F_buf1:=inttohex(B_buf[i],2);
F_buf:=F_buf+F_buf1;
end;
ikong:=length(F_buf);
setlength(W_buf,ikong+1);
for i:=0 to ikong-1 do
begin
F_buf1:=copy(F_buf,i+1,1);
W_buf[i]:=ord(F_buf1[1]);
end;
len8:=1;
len7:=DeleteFile(pchar(F_name));
showmessage(F_name);
if len7=true then
begin
F_nHand:=CreateFile(pchar(F_name), GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE,NIL, OPEN_ALWAYS, 0, 0);
len7:=writefile(F_nHand,W_buf[0],ikong,len8,NIL);
closehandle(F_nHand);
Jia:=1;
end
else
begin
Jia:=0;
end; finally
// FreeMem(Buffer);
end;
end;
解决方案 »
- TreeView定位节点问题(只能发这个版面了)
- 求一个sql语句的写法,垒加计算
- 头疼问题,在软件启动时,如何捕获错误并进行处理!
- delphi连接数据库的相对路径问题?
- 急!!!求生生成运动会的赛程表的代码算法!
- 在idtcpserver如何取得所连接的客户端的IP地址?
- 谁能告诉我,怎样求两个数的比值。
- 请问:如何在delphi2007或以上版本上安装第三方插件EasyGrid-V6。
- 请教端口问题SOCKET
- 如何编写大型程式,请写过ERP,进销存...这类软件的人进来帮帮忙。
- 请教: 如何让程序在执行某个任务时,显示一个对话框,直到该任务完成时关闭。。
- 谁给我一个汉字转为16进制的函数??
然后,就可直接调用:
len7:=DeleteFile(pchar(F_name));时不能成功,用delphi调用则可以成功,不解.另外PB调用
F_nHand:=CreateFile(pchar(F_name), GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE,NIL, OPEN_ALWAYS, 0, 0);创建了文件以后,len7:=writefile(F_nHand,W_buf[0],ikong,len8,NIL);也没有写数据成功.但在delphi里,一切正常
如: c:\aa\b.txt
改成 c:\~\aa~\b.txt