掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
受信したデータをファイル化するには? (ID:1835)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ファイルに格納するので、Headerを動的に確保する必要はありません。 静的に用意して、Subjectなどと同じように使います。 同じく、I.Dataに、Headerを持つ意味はありません。 ファイルに格納したメールを読み直すだけです。毎回ログインしてメールを取得するのであれば、ファイルに格納する意味がなくなります。 > I := MailListView.Items.Add; > I.Caption := StrPas(Subject); > I.SubItems.Add(StrPas(Date)); > I.SubItems.Add(StrPas(From)); > I.Data := Header; > StrLCat(Header, #13#10, HEADER_MAX - 1); の部分が、 DataName := DataName + '_' + IntToStr(Seq) + '.nml'; // ファイル名を設定 Body := nil; Fs := nil; try BodySize := NMailPop3GetMailSize(S, Count); GetMem(Body, BodySize); NMailPop3GetMail(S, Count, subject, date, from, header, Body, nil, nil); Fs := TFileStream.Create(DataName + '_' + IntToStr(Seq) + '.nml', fmCreate); Fs.WriteBuffer(Header^, StrLen(Header)); Fs.WriteBuffer(Header^, StrLen(Body)); finally I := MailListView.Items.Add; I.Caption := StrPas(Subject); I.SubItems.Add(StrPas(Date)); I.SubItems.Add(StrPas(From)); if Fs <> nil then Fs.Free; if Body <> nil then FreeMem(Body); end; GetMem(I.Data, StrLen(DataName)); // ファイル名を保持するメモリを確保。OnDeletionで解放すること。 CopyMemory(I.Data, PChar(DataName), StrLen(DataName)); // ファイル名をコピー というようになります。 # 動作確認はしていません。 ただし、これだと保持データが変わるので、データ管理部分の大部分が変更になると思います。 思い当たるのは2点。 1.MailListViewのOnDeletionで、Item.Dataを解放するようにしてください。 2.OnClickで、String(MailListView.Selected.Data)をファイル名としてファイルを読み込み、それをメールデータとして扱ってください。 # ヘッダと本文は空行で分かれているはず 添付ファイルは、自前で変換する必要が出ると思います。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.