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则可以的。
希望能得到大家的帮助。谢谢。
展开
 我来答
hewton
2008-01-18 · TA获得超过321个赞
知道答主
回答量:69
采纳率:0%
帮助的人:114万
展开全部
当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);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式