掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
関数名を引数とする関数? (ID:148609)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
procedure TForm1.Main; var S:string; begin FDQuery1.SQL.clear; FDQuery1.open('select * from [tabalename]'); while not FDQuery1.eof do begin ・ S:=func1; ・ ・ FDQuery1.next; end; FDQuery1.close end; Main実行時、while~endループ内ではFDQuery1はopen状態である必要があるのですが、 S:=func1; の次行ではFDQuery1はcloseの状態になります。 (func1ではFDQuery1.open後resultを得て、FDQuery1.closeしてから関数値を戻しますので) 従って、Mainに戻ったときではFDQuery1はcloseしているのに、 FDQuery1.next; を実行するので、エラーになるのだと思っています。 ですから、MainでFDQuery1でなく、FDQuery3にかえれば、通してくれます。 Main内で、 procedure TForm1.Main; var S:string; Q:TFDQuery; begin //ここでfunc1がFDQuery1,FDQuery2をopen,closeする関数であることを知ることがわかれば、 //Q:=FDQuery3とできますので、 Q:=FDQuery3; Q.SQL.clear; Q.open('select * from [tabalename]'); while not Q.eof do begin ・ S:=func1; ・ ・ Q.next; end; Q.close end; func1,func2でのFDQuery1,FDQuery12使用は固定していて、 呼び出し側で、動的にFDQuery3を得られるようにしたいのです。 ご指摘のとおり、skill上の点からプログラム設計に問題は山積状態と思われます。 何か基本的なところで、初歩的は思い込み違いがあることを憂慮します。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.