delphi中SetFilePointer的问题
我做一个下载者生成器里面有这样一段代码SetFilePointer(FileHandle,OFFSET_URL,NIL,FILE_BEGIN);WriteBuff:=PC...
我做一个下载者生成器
里面有这样一段代码
SetFilePointer(FileHandle,OFFSET_URL,NIL,FILE_BEGIN);
WriteBuff:=PChar(Url+StringOfChar(#0,64-Length(Url)));
WriteFile(FileHandle,WriteBuff^,64,BytesWritten,nil);
其中64是服务端中的url长度,64减去url长度就是把多于的填充掉
但是如果我配置的时候url长度大于64字节,那怎么办?
经过实验,当长度大于64的时候,程序无效了。。
而小于64则可以的。
希望能得到大家的帮助。谢谢。 展开
里面有这样一段代码
SetFilePointer(FileHandle,OFFSET_URL,NIL,FILE_BEGIN);
WriteBuff:=PChar(Url+StringOfChar(#0,64-Length(Url)));
WriteFile(FileHandle,WriteBuff^,64,BytesWritten,nil);
其中64是服务端中的url长度,64减去url长度就是把多于的填充掉
但是如果我配置的时候url长度大于64字节,那怎么办?
经过实验,当长度大于64的时候,程序无效了。。
而小于64则可以的。
希望能得到大家的帮助。谢谢。 展开
1个回答
展开全部
当url长度大于64时,64-Length(Url)为负值,则调用StringOfChar必然导致异常
应该先进行长度检查:
var UrlLength:Integer;
SetFilePointer(FileHandle,OFFSET_URL,NIL,FILE_BEGIN);
UrlLength:=Length(Url);
if UrlLength > 64 then UrlLength := 64;
WriteBuff:=PChar(Url+StringOfChar(#0,64-UrlLength));
WriteFile(FileHandle,WriteBuff^,64,BytesWritten,nil);
应该先进行长度检查:
var UrlLength:Integer;
SetFilePointer(FileHandle,OFFSET_URL,NIL,FILE_BEGIN);
UrlLength:=Length(Url);
if UrlLength > 64 then UrlLength := 64;
WriteBuff:=PChar(Url+StringOfChar(#0,64-UrlLength));
WriteFile(FileHandle,WriteBuff^,64,BytesWritten,nil);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询