起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: liubin

【搞定】Email问题**

[复制链接]
发表于 2007-2-27 11:02:47 | 显示全部楼层
对呀,你可以在你加的每句前面写上ShowMessage,这样可以定位你写的哪句报出来的,

这个错误,是因为你写的 lStream := TFileStream.Create(lOpenDialog.FileName, SysUtils.fmOpenRead);  这句代码报出来的,退出因为前面造成,跟lStream.Free; 也有关

你看一下传进去的参数对不对
回复 支持 反对

使用道具 举报

发表于 2007-2-27 11:30:48 | 显示全部楼层
不过我看了一下,应该是打开的模式有问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-27 13:08:59 | 显示全部楼层
打开的模式有问题?SysUtils.fmOpenRead的属性有问题?
回复 支持 反对

使用道具 举报

发表于 2007-2-27 15:02:11 | 显示全部楼层
来了经过跟踪,是因为释放的时机不对,就是lStream.Free; 放到前面去就可以了。

另外,你判断文件的大小计算是不对的,5M,应该是5242880,不是5368709120,

修改代码如下:
      lStream := TFileStream.Create(lOpenDialog.FileName, fmOpenRead);
      ShowMessage(inttostr(lStream.Size));
      if (lStream.Size) > 5242880 then
      begin
        ShowMessage('附件大小不能超过5M');
        exit;
      end;
      lStream.Free;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-27 15:55:39 | 显示全部楼层
lStream.Free是时机不对?
我现在修改后如下,又出现107的错误了
procedure TMailEditorForm.actNewAttachmentExecute(Sender: TObject);
var
  I: Integer;
  lOpenDialog: TMailOpenDialog;
  lStream: TFileStream;
begin
  lOpenDialog := TMailOpenDialog.Create(Self);
  try
    lOpenDialog.Filter := '所有文件(*.*)|*.*';
    lOpenDialog.Options := lOpenDialog.Options + [ofAllowMultiSelect, ofFileMustExist];
    if lOpenDialog.Execute then
    begin
      lStream := TFileStream.Create(lOpenDialog.FileName, SysUtils.fmOpenRead);
      try
        if (lStream.Size) > 5242880 then
        begin
          ShowMessage('附件大小不能超过5M');
         exit;
         end;
      finally
        lStream.Free;
      end;
      for I := 0 to lOpenDialog.Files.Count - 1 do
        msgMail.AddAttachment(lOpenDialog.Files[I]);
      SetModified;
      RefreshAttachs;
    end;
    BringWindowToTop(Handle);
   
    // todo 以下两个过程,解决98下不能刷新的问题。
    if Assigned(FTextEdit) then
      FTextEdit.Refresh;
    if Assigned(FDHTMLEdit) then
      FDHTMLEdit.Refresh;
  finally
    lOpenDialog.Free;
  end;
end;
回复 支持 反对

使用道具 举报

发表于 2007-2-27 15:57:50 | 显示全部楼层
那你的文件应该又不对了,自己检查一下吧,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-2-27 16:23:39 | 显示全部楼层
恩,我这快搞定了,谢谢
现在有个新问题了,如果我第一次上传一3M的,第二次又上传个4M的,还是可以上传的,怎么控制上传的总体大小不能大于5M?
回复 支持 反对

使用道具 举报

发表于 2007-2-27 16:59:47 | 显示全部楼层
真不容易,终于ok了,

你说的这个问题,肯定是你写的地方不对,你读一下代码吧,。

另外这个帖子太长了,新问题重新起帖子,这个帖子我结了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-25 09:51 , Processed in 0.041665 second(s), 14 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表