• 締切済み

BCBでSQLite

下記のサイトを参考にさせて頂き、BCB5を使用してSQLite3を操作しようと格闘中です。 自分のレベル的には初心者を脱しようかといったところだと思います。 http://members.jcom.home.ne.jp/komina/wiki/4243422F53514C69746533A4F2BBEEA4B9.html TEdit1一つに郵便番号7桁を入力して、Button1クリックで該当する住所を検索してMemo1に表示するものですが、コンパイルエラーになってしまい対処法がわかりません。 ちなみにそこで紹介されている、ライブラリをリンクするのが上手くいきませんで sqlite3.cをプロジェクトに追加してメイクしました。 また、文字コードをUTF-8に変換するというのが別サイトにも書かれていました エラー内容は、 E2034 'int(*(_closure))(void *,int,char**,char**))(void*,int char**,char**)'型は'int(*)(void*,int,char**,char**)'型に変換できない。 E2342 パラメータ'callback'はint(*)(void*,int,char**,char**)型として定義されているのでvoidは渡せない 以下、ソース抜粋です。宜しくご教授お願いいたします。 int TFmMain::callback(void* arg,int argc,char** argv,char** column){ AnsiString addr1=argv[0]; AnsiString addr2=argv[1]; AnsiString addr3=argv[2]; add_message(addr1+addr2+addr3); return SQLITE_OK; } void __fastcall TFmMain::Button1Click(TObject *Sender) { sqlite3* db; if(sqlite3_open("DBTEST1.db",&db)==SQLITE_OK){ add_message("DB open"); int rtn; char* sql; sql=sqlite3_mprintf("SELECT ADDR1,ADDR2,ADDR3 FROM ZIP WHERE ZIP=%d" ,StrToInt(Edit1->Text)); add_message(sql); rtn=sqlite3_exec(db,sql,callback,NULL,NULL); <<< ここでエラー発生!! if(rtn!=SQLITE_OK){ add_message("COMMAND err"); } sqlite3_free(sql); sqlite3_close(db); add_message("DB close"); }else{ add_message("DB open err"); } }

みんなの回答

回答No.1

callbackが 非-staticなメンバ関数だから。

yoshiyossy
質問者

お礼

ありがとうございます。 自分でした一度目にした質問が記載されないと思い、二回も同じような質問をしてしまいました。 大変申し訳ないですが、こちらは打ち切らせていただきます。

関連するQ&A