接受的附件文件的末尾怎么多了一个十六进制字符00?急急急急!!!!(100分)

  • 主题发起人 thdelphi
  • 开始时间
T

thdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我用自写邮件发送程序发送了一个文本文件(做为附件),用自写的接受程序接受并保存
此附件,没想到保存后的附件在文件的末尾多了一个十六进制字符00,
这是怎么回事,我用FOXMAIL接受并保存附件,文件的末尾就不会增加00!
请高手指点!
 
贴出代码来
 
for i:=1 to mc do
begin
IdMessage1.Clear;
IDPOP31.Retrieve(i,IdMessage1);
fname:='data/'+trim(idmessage1.subject)+'.txt';
for j := 0 to idmessage1.MessageParts.Count - 1 do
begin
if idmessage1.MessageParts.Items[j] is TIdAttachment then
begin
TIdAttachment(idmessage1.MessageParts.Items[j]).SaveToFile(fname);
end;
end;
end;
 
既然这样,那你把最后一个字符删了就是了
 
既然这样,那你把最后一个字符删了就是了
var
h:integer;
h:=_lopen(文件名,OF_READWRITE);
_lseek(h,-1,FILE_END);
_lwrite(h,PChar(@h),0); //截断
_lclose(h);
 
谢谢pipi,我再等等,看是否有别的朋友有过这样的经历!
 
这个问题出现在D6自带的例子/borland/Demos/Indy/MailClient,验证如下:
把一个文本文件作为附件,用其来接受、保存后,看看是否比原来多了一个字节!
 
验证了一下,这种情况只出现在如下的情况:文本文件最后一行无内容。在最后一行有内容时,
该情况不出现,因此,这应该是保存文件时所用的文件流的方法造成的。
 
TO netameng:
我没有看明白。现在好像很奇怪,我又试验了一下,发现在一个文本文件最后按一
下回车键,即此文件最后是0D 0A,但用maildemo接受后的文件却少了这两个字节,怎么
回事?如果用FOXMAIL等接收就不会产生这种现象,是INDY自身的问题吗?
 
多人接受答案了。
 
顶部