喫茶XRAYトップページ

[スレッド全体
]

[3320] Re:ちょっと鬱状態返信 削除
2010/5/3 (月) 00:02:56 ヒマジン(John Lemmon)
▼ たてぐやさん
>  エラーが出るのは以下のコードです。
>
>   AssignFile(LogF,Fname);
>   if FileExists(Fname) then begin  //(1)
>     Reset(LogF);  //(2)
>     for i :=0 to FileSize(LogF) - 1 do begin
>       Read(LogF,Mess);
>       if (Mess.From = f) and (Mess.Subject = s) and (Mess.Head = h)
>         and (Mess.MesID = M) and (Mess.RcvHead = r) then begin
>         Result := true;
>       end;
>     end;
>     CloseFile(LogF);
>   end;
>
> (1)の所でファイルがあることを確認してから(2)でオープンしているのですが、
> エラーになるケースがあります。


ヒマだったので、D4で試してみましたが、複数の添付ファイルがある場合でも
そのようなエラーは発生しません。
タイマーではなく、ボタンのクリックでその関数を呼んだ場合でもエラーが
確実に発生するような最小限のコードと条件を提示してください。


> …この関数を呼び出す前にこんなコードがあります。
>
>      NMPOP31.GetMailMessage(i);
>      Mess.From         := NMPOP31.MailMessage.From;
>      Mess.Subject      := PzConv1.MIMEHeaderDecode(NMPOP31.MailMessage.Subject);
>      Mess.Printed      := '0';
>      Mess.Head         := DecodeDateTime(NMPOP31.Mailmessage.Head);
>      Mess.Atached      := NMPOP31.MailMessage.Attachments.CommaText;
>


また、既読判定の関数を呼ぶ前に GetMailMessage(i);の代わりに GetSummary(i);を使ってみたらどうなりますか?
そうした場合でもエラーが出ますか?


[3321] Re2:ちょっと鬱状態返信 削除
2010/5/3 (月) 22:03:48 たてぐや 〔HomePage
▼ ヒマジン(John Lemmon)さん

 アドバイスいただいたのにお返事が遅くなってしまって済みません。

> タイマーではなく、ボタンのクリックでその関数を呼んだ場合でもエラーが
> 確実に発生するような最小限のコードと条件を提示してください。


 このアプリケーションはタスクトレイに入るタイプでフォームは
表示されません。しかしながらタスクトレイのポップアップ、メニ
ューに「今すぐチェック」という項目が設けてあって、タイマーみ
関わらず受信を行うことができるようにしてあります。ここで呼び
出されるのはタイマーイベントで呼び出されるのと同じプロシジャ
です。

> また、既読判定の関数を呼ぶ前に GetMailMessage(i);の代わりに GetSummary(i);を使ってみたらどうなりますか?
> そうした場合でもエラーが出ますか?


 試してみたところ、GetSummary(i)ではエラーになりません。も
ちろん情報をとっていないので、既読/未読の判断はできません。
GetMailmesageで、デコードが開始されるとこのエラーが発生する
ように思います。(思いこんじゃいけないとは思いますが…)

[3322] Re3:ちょっと鬱状態返信 削除
2010/5/3 (月) 23:40:28 ヒマジン(John Lemmon)
▼ たてぐやさん
>  試してみたところ、GetSummary(i)ではエラーになりません。も
> ちろん情報をとっていないので、既読/未読の判断はできません。
> GetMailmesageで、デコードが開始されるとこのエラーが発生する
> ように思います。(思いこんじゃいけないとは思いますが…)


既読/未読の判断関数で添付ファイルは引数に含まれていないので、
その判断には GetSummary(i)で十分だと思いますけど?
なんのために添付ファイルまで取得してるんですか?
ところで、AttachFilePathは設定してあるんでしょうか?


[3323] Re4:ちょっと鬱状態返信 削除
2010/5/4 (火) 00:06:45 たてぐや 〔HomePage
▼ ヒマジン(John Lemmon)さん
> 既読/未読の判断関数で添付ファイルは引数に含まれていないので、
> その判断には GetSummary(i)で十分だと思いますけど?
> なんのために添付ファイルまで取得してるんですか?


 受信記録としてメールソフトの受信画面のようなものを表示します。
その時にSummary情報と一緒に添付ファイル名が欲しいのです。既読判断では
それ以外の情報で十分に判別できるためです。

> ところで、AttachFilePathは設定してあるんでしょうか?

 こちらはもちろん設定しています。設定ダイアログを持っていて、
そこで設定したものが渡るようになっています。

[3324] Re5:ちょっと鬱状態返信 削除
2010/5/4 (火) 13:17:13 ヒマジン(John Lemmon)
▼ たてぐやさん

GetMailMessageを使ってメールの既読/未読の判定をした時に無駄に取得した
添付ファイルは どのタイミングで削除しているのでしょうか?
やり方を変えて、GetSummaryを使ってメールの既読/未読の判定をした後で、
未読のメールだけを再度GetMailMessageを使って取得するのではダメなんですか?
そのようにしても何かエラーが発生しますか?
こちらではエラーを再現できないのですが、原因がNMPOP3ではなくて環境による
ものということはないのでしょうか?


[3325] Re6:ちょっと鬱状態返信 削除
2010/5/4 (火) 17:08:05 たてぐや 〔HomePage
▼ ヒマジン(John Lemmon)さん
 アドバイスありがとうございます。

> GetMailMessageを使ってメールの既読/未読の判定をした時に無駄に取得した
> 添付ファイルは どのタイミングで削除しているのでしょうか?


ここは
if not isKIdoku then begin
処理
end
else begin
  添付ファイル削除
end;
のようにしてあります。

> やり方を変えて、GetSummaryを使ってメールの既読/未読の判定をした後で、
> 未読のメールだけを再度GetMailMessageを使って取得するのではダメなんですか?


 こちらはこれから書き変えて試してみます。休日は「おんもが明るいうち」は
プログラム作りに身が入らなうもので、済みません。

> こちらではエラーを再現できないのですが、原因がNMPOP3ではなくて環境による
> ものということはないのでしょうか?


 職場のマシンと自宅のマシンでまったく同じエラーが発生しますので、
環境ではないと思われます。

[3327] Re6:ちょっと鬱状態返信 削除
2010/5/4 (火) 23:29:36 たてぐや 〔HomePage
▼ ヒマジン(John Lemmon)さん

> GetMailMessageを使ってメールの既読/未読の判定をした時に無駄に取得した
> 添付ファイルは どのタイミングで削除しているのでしょうか?
> やり方を変えて、GetSummaryを使ってメールの既読/未読の判定をした後で、
> 未読のメールだけを再度GetMailMessageを使って取得するのではダメなんですか?


 その手順でやるとエラーは出ず、うまくいきそうです。この変更に伴って
いくつか組み立てなおさないといけないところは残りましたが。このエラーが
おかげさまでクリアできましたので、じっくり取り組めます。

ありがとうございます。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82