2013/2/28 (木) 12:58:53 Mr.XRAY |
結構サスペンスドラマっていうのが好きなんですが,
サスペンスドラマは,最後に,必ずと言っていいほど,
何故か推理に至った過程を説明しますよね.
実際には,そんなことはないと思いますが,
参考までに,興味がある方のために (えっ!? そんな人いない? )
http://www.freeml.com/delphi-users/3047
のように推理したかを説明しておきます.
まず,以下で,
≪これは実際の文字列を見てみない事には判断できないかもですね。≫
とレスしています.
http://www.freeml.com/delphi-users/3018
質問者からの反応は以下のものでした.
http://www.freeml.com/delphi-users/3020
ところが,ここには,肝心の [Data Source=[DatabasePathの文字列]の
具体的な内容がありません.
パスが存在しないのを調べたいのに,これでは確認できません.
その後も,確認を促すレスをしたのてすが,秘密らしく,教えてくれません.
しかも,質問者の接続文字列の設定は,
ADOC.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source='+DatabasePath+
';Extended Properties=dBASE IV';
ADOQ.ConnectionString := ADOC.ConnectionString;
となっています.どう考えても矛盾しています.
そこで,これではラチがあかないので,テスト用のプロジェクトを
作成しました.
http://mrxray.on.coocan.jp/Others/ADO_ConnectDBF.htm
このサンプルには,テスト用の .dbf ファイルを添付しています.
もし,これで,Delphi, BDE がインストールされていないコンピュータで
動作すれは,動作するということです.
更に,この中の
ShowMessage(ADOC.ConnectionString);
で接続文字列を確認してもらうことにしました.
結果は,Delphi, BDE がインストールしていない PC でも
データベースを開いてデータを表示することができました.
質問者のデータベースファイルも開くことができました.
http://www.freeml.com/delphi-users/3027
http://www.freeml.com/delphi-users/3032
ところが,接続文字列については,
≪不思議なことに?前メールのとおり長くなっていました。≫
というのです.
http://www.freeml.com/delphi-users/3026
そんな馬鹿なことはありません.私の作成したプロジェクトには,そんな
接続文字列なんか設定していません.そんなハズないのです,
質問者のプロジェクトで,私のサンプル内の接続コードを使用しているのかも ?
そこで,
接続の前に,接続文字列を空文字にするコード
ADOC.ConnectionString := EmptyStr; //これを追加
を提案しました.
この時点で,この質問者は,接続文字列を ShowMessage で表示して取得して
いるのではないらしい,と,やっと気付きました.
つまり,この提案は,無意味でした.
これは,オブジェクト・インスペクタ,つまり設計時の値なんですね.
これ以外は,そんな長い接続文字列の設定がされる状況は考えられせん.
したがって,実行時には,ユニット内に書かれたデータベース接続用のコード
は実行されていないのです.
この実行時の接続用のコードが実行されないのですから,この中の
ShowMessage が実行されることはありません.
EXE の実行開始時には,オブジェクト・インスペクタの設定が実行されます.
これは,フォーム生成時,OnCreate イベントが発生する前です.
だからこそ,ボタン等のサイズが,オブジェクト・インスペクタでの設定値で
表示されるわけです.
さて,では一体,質問者は,長い接続文字列を,どこでどう
調べたのでしょうか? 謎は残りますが,ここでは追究しないことにします.
≪これで接続できれば,これらが「犯人」です.≫
というレスをしましたが,この犯人には,黒幕がいます.
その黒幕というのは,質問者です.ハイ.
重要なことは,「うまくいかないプロジェクト」ではなく,
確実に動作するサンプルで確認後,うまくいかない自分のプロジェクトとは,
どう違うのかを調べることですね.
そのためにも,当サイトのサンプルでは,「設計時画面」とういうのを,
基本的に掲載しています(宣伝と自慢です.ハイ)
|
|