何度もお世話になっているみけにゃんです。
今回はnMail.DLLと言うAPOP対応のSMTP/POP3メールDLLを使って
サーバにあるメールのリストを表示して選択したメールをエディットボックスに
表示する簡易メールリーダを作成中なのですが、その中で2点うまくいかない
部分があって今回はそのひとつを質問させていただきます。
現在nMail.DLLに入っているサンプルプログラム(いずれもPDS)の
Cのコンソールプログラムを上に書いたようなメールリーダにするため
私が最初から用意しているWin32 Application用に作ったウィンドウだけの
プログラムと猫でも分かるプログラミングのPOP3メールの件名を表示するの
リスト挿入部分を流用して作っているのですが、コンソールプログラムの
read_mailの関数を修正してコンパイルしようとしたのですが、以下の一箇所で
エラーが発生したためコンパイルでいないのですが、どうすれば直せるでしょうか?
void Read_Mail(SOCKET s, int no, int size, HWND hEdit)
{
char subject[TEMP_MAX], date[TEMP_MAX], from[TEMP_MAX], header[TEMP_MAX];
char test[TEMP_MAX];
// メールのサイズ分確保して読み込む
if((body = malloc(size + 1)) != NULL){←この文でエラー
if(NMailPop3GetMail(s, no, subject, date, from, header, body, NULL, NULL) >= 0) {
// 読み込んだヘッダ及び本文を表示
wsprintf(test, "%s%s", header, body);
MessageBox(NULL, test, "debug", MB_OK);
}
else{
MessageBox(NULL, "error", "debug", MB_OK);
}
free(body);
}
}
エラー内容:
c:\program files\microsoft visual studio\myprojects\fmail\fmail.cpp(279) : error C2440: '=' : 'void *' から 'char *' に変換することはできません。(新しい動作 ; ヘルプを参照)
body が何者か(body の型が)不明なのですが一応エラーの内容から char *
だと仮定して返事します
if ((body =(char *)malloc(size +1)) !=NULL) {
ならどうでしょうか?
malloc() の戻り値の型を調べてみましょう
えっとbodyの型の定義はchar *body;です。
島さんありがとうございます。
上のコードに変更したらちゃんとエディットボックスに
メールの内容を取り込む事が出来ました。
まだもうひとつ内容があるのでそれは別のレスにします。
ツイート | ![]() |