(D6/パーソナル+XPで勉強中)
お世話になります。今まで少しずつ構築してきたソフトは順調に動いていたのですがあるファイルを読むと突然「ソースファイルが見つかりません:'variants,pas'というダイアログボックスが出て止まってしまうようになりました。
エラーが出るデータファイルはCSVファイルで特殊なものでなく、他のソフトでは他のファイルと同様に動きますので読み込むファイルに問題があるとは考えられません。
'variants.pas'というものを指定した覚えはないし、またこのようなものがどこかにあるのか探してみましたが'variants.dcu'というもの以外検索できませんでした。
原因はどんなものか、原因追究のテクニック、解決法などアドバイスをよろしくお願いします。
> ファイルを読むと
意味不明
LoadFromFileとかしたら?
コンパイル時?
状況を詳しく
variants.pasはVCLライブラリの中で基本的なクラスなので、
アプリケーションを作る際にはほぼ必ずといっていいほど読み込まれます。
D6パーソナルはvariantsのソース参照ができないために参照エラーが出ます。
原因としてはvariantsユニットで宣言されている関数の利用法の間違いだと思いますので、自分で書いたソースのどこかにエラーがあるはずです。
デバック方法を学んでください。
ちなみに、Delphiのフリー版は現在ではTurbo Delphiが広く使われてます。
こちらはvariants.pasもアクセスできますのでエラー箇所の特定が比較的容易になると思います。Turbo Delphiへの乗り換えを強くお勧めします。
>>ああああ
意味不明ならレスしないことをお勧めします。
>ちなみに、Delphiのフリー版は現在ではTurbo Delphiが広く使われてます。
こんな話は聞いたこと無いけど。どこかにソースありますか?
嘘なら、レスしないことをお勧めします。
さあ、無償バージョンのTurbo Explorerを今すぐダウンロードしましょう!
http://www.turboexplorer.com/jp/downloads
一生懸命読んだけど
>>ちなみに、Delphiのフリー版は現在ではTurbo Delphiが広く使われてます。
こんなことは書いてないですね。すみません、そのページのどこに書いてあるか
引用してください。
皆様、回答をありがとうございます。
TurboDelphiのインストールが出来なくて時間ばかり経ってしまいお返事が遅れて申し訳ありませんでした。やむなくパーソナルのままで次のようなテストをしてみました。
実験1.ツール=デバッグオプション=Delphi言語の例外で停止のチェックを外すと止まらずに動きました。
実験2.チェックを入れると「ソースファイル・・・」が出て止まります。その際「プロジェクト abc.exe がEVariantErrorクラス例外を生成しました」と出てアセンブラのコードが表示されます。
なおコンパイル時にはエラーは出ていません。
以上のことから質問を整理させていただきます。
1.この情報からDelphiソース上のエラー発生の箇所を特定していくことが出来るのでしょうか?
2.Turbo Delphiを入れればこの問題(variants.pasのソースがないというメッセージ)が回避できるのでしょうか。あるいはエラー箇所の特定ができるのでしょうか。
3.そもそもこの問題はエラーがなければ解決するものなのでしょうか? それともvariants.pasがなければ解決できないものなのでしょうか。
以上、よろしくアドバイスをお願いします。
(それからTurboDelphiのインストールで○○が不足→(インストール)→○○が不足→(インストール)の繰り返しでエンドレスなのですが簡単な方法があったら教えてください)
D7 proを引っ張り出してvariants.pasを参照するようなエラーを作ろうとしてみたんですが、作れなかったです。
D6特有なんですかねぇ。
もし、たけしさんが下のソースのように例外を発生させていた場合、
エラー箇所を自動的に発見することは困難かと思います。
これはD7,Turbo共通です。
procedure TForm1.Button1Click(Sender: TObject);
begin
try
VarToDateTime('');
except
on EVariantError do begin
raise Exception.Create('エラーだわい。');
end;
end;
end;
エラーメッセージを回避したいだけならリンクを参照してください。
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=044795
今回の問題はvariants.pasがなくても解決することはできます。
原因はたけしさんの書いたソースに問題があるためです。
しかし、例外が起こる箇所を特定せずにプログラムを組み続けることはお勧めしませんね。
私ならエラーの発生する挙動を片っ端からブレークして探します。
updateしてないからだろ
updateしていないから「variants,pas」のエラーがでるのですか?
直るのであれば
http://www.codegear.com/jp/downloads/regusers/delphi
→ http://support.codegear.com/article/35928/
ここのアップデートで試してほしいものですな
皆様、たくさんのアドバイスをありがとうございました。
1.デバッガオプションの「停止する」のチェックを外すことでプログラムの停止を回避する方法で不具合を抱えたままなので何か気持ち悪い気がしますが根本的解決まではこれでだましだまし使ってみます。
2.他のサイトでのやり取り
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=044795
も拝見させていただきましたがこれもエラー表示を隠すことで終わっていました。
問題の核心はvariants.pasがないことではなくコードのエラーにあることがわかりましたので時間を掛けてつぶしていくこととします。ありがとうございました。
(追加で申し訳ありませんが当方のDelphiを積んでいるマシンから本サイトを出そうとしても「ActiveXを起動する=>>OK」のボタンが毎回出るようになりOKを押すとエラーでDelphiサイトが見れません。解決法があったら教えてください。なお、このメールは他のPCから出しています)
よくないと思うが直通
http://madia.world.coocan.jp/cgi-bin/DelphiBBS/wwwlng.cgi
とっぷぺぇじのQuickTimeの関係じゃないかと推測
いうえお様、早速ありがとうございました。音楽を消すなどという手間もなく快適に表示されます。 助かりました。
全ソースを1行ずつ見ていきましたら動的配列で一部配列の数が足りないというミスがありました。 これを直しましたら一切エラー表示が出なくなりました。 Close;で終わらせたら全ての過ちを水に流して終了すると思っていましたが実際は犯したエラーがあると終了させてくれないということがわかりました。 皆様ありがとうございました。
ツイート | ![]() |