下記のサイトを参考にさせて頂き、BCB5からSQLite3を操作しようと格闘中です。
http://members.jcom.home.ne.jp/komina/wiki/42434 …
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.2ベストアンサー
- 回答日時:
> 具体的にはどのように直せばいいんでしょうか?
callback巻子をstaticメンバにする。
この回答への補足
できたようです。
Main.cppに
void add_message(AnsiString msg){
FmMain->Memo1->Lines->Add(msg);
}
static int callback(void* arg,int argc,char** argv,char** column){
AnsiString addr1=argv[0];
AnsiString addr2=argv[1];
AnsiString addr3=argv[2];
~
}
とし、Main.hのextern部に両方宣言するとうまくいきました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# Cのオブジェクトファイルの逆アセンブル 5 2023/05/13 01:51
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
charでの計算?
-
atoi( ) の反対をやりたい
-
テキストデータをそのままバイ...
-
下記のプログラムがコンパイラ...
-
_TCHAR*での引数の読み込み
-
C言語のfor文です。 繰り返しの...
-
str系関数を使わずに二つの文字...
-
至急!C言語文字列置換
-
C言語の入力した文字を反転させ...
-
型変換
-
charからLPTSTRへの変換方法
-
strlen関数と同じ働きをする関...
-
'const char *' 型は 'char *' ...
-
C言語 ミリ秒を日付に変換には
-
文字列から空白を取り除きたい...
-
C言語 共用体について コマンド...
-
C言語 文字列操作
-
c言語プログラミング実行時エラ...
-
間接参照のレベルが異なっています
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
charからLPTSTRへの変換方法
-
charでの計算?
-
配列をnビットシフトする
-
'const char *' 型は 'char *' ...
-
型変換
-
テキストデータをそのままバイ...
-
文字列から空白を取り除きたい...
-
CStringをwchar_tに変換したい
-
絶対パスからのファイル名の切...
-
fgetsなどのときのstdinのバッ...
-
ネットワークにつながっている...
-
str系関数を使わずに二つの文字...
-
3桁区切(コンマ)記号をつけ...
-
atoi( ) の反対をやりたい
-
double型の値をchar配列に変換...
-
C言語のfor文です。 繰り返しの...
-
switch文で文字を比較すること...
-
ファイル名である文字列からbas...
-
c++ 文字列を入力して、一文字...
-
strncpyと_tcsncpy_sのヌルの扱...
おすすめ情報