0
私はこのTSQLQueryを、TFieldsとオペレータが[]
TSQLQuery* tq = new TSQLQuery(NULL);
tq->SQLConnection = atdbDM->SQLConnection1;
tq->SQL->Add("SELECT LAST_INSERT_ID();");
tq->Open();
int insert_id = tq->Fields->operator [](0)->AsInteger;
表現
int insert_id = tq->Fields->operator [](0)->AsInteger;
ようになりTSQLQueryをを使用して、クエリを持っているが、かなり不格好です。私が呼び出した場合、
public:
TField* operator[](int Index) { return Fields[Index]; }
しかし:実装を見て、オペレータは、[]ヘッダにオーバーロードされ
[bcc32 Error] TRegisterFreshCSBatchForm.cpp(97): E2288 Pointer to structure
required on left side of -> or ->*
TRegisterFreshCSBatchForm::mRegisterBtnClick(TObject *)
任意のアイデア:
int insert_id = tq->Fields[0]->AsInteger;
は、私は、コンパイラのエラーを取得しますなぜ上記の呼び出しはコンパイルされないのですか?私は何かが欠けする必要があります。..
は
を代替は単純にしています'TFields :: operator []'はまったく使用しないでください。 'int insert_id = tq-> Fields-> Fields [0] - > AsInteger;' TFields :: operator [] ' :operator [] 'は、余分な' CALL'命令を除いてあなたには何も得られません。 C++に存在する唯一の理由は、 'default'プロパティにアクセスするときにDelphiの構文に近いC++構文を提供することです。 –