コンポーネントをフレームに乗せるだけで
access violation や、スタックオーバーフローが出るんですけど、
何が悪いのかさっぱりわかりません。
どなたかご教授お願いします。
環境:delphi7、windows2000sp4
それだけだと何とも言えません。
考えられる対処法を挙げてみます。
・新規プロジェクトで試してみる。
・標準コンポーネントで試してみる。
・不要なパッケージを消し、再度新規プロジェクト・標準コンポーネントで試してみる。
・不要なライブラリパスを削除する。
・パッケージ、ライブラリパスを、インストール直後のものに戻してみる。
これくらいでしょうか。
まずは試してみてください。
これで無理なら、私がやるとしたらDelphiの再インストール、OSの再インストールですかね。
にしの様、ありがとうございます。
環境は、インストール時とほぼ変わりません。
標準ではないコンポーネントは、以前にも使用した事があり、
気持ちばかり実績があります。
フレームは、ソースを分けるためにフォームと同じような使い方をしています。
メインフォームには、PageControlを貼り付け、複数のタブに、複数のフレーム
を貼り付けています。
これとは別に、DataModuleを使っていて、ここでは2つのスレッドを生成しています。スレッド生成時に、関数を格納する動的配列を作成しています。
作成にはSetLengthを使い、必要個数エリアを確保してから関数を入れています。
この状況で、今までは問題なかったのですが、フレームに追加する項目が増え、コンポーネントを複数追加したのですが、実行時に上記のスレッド内のSetLengthで
オーバーフローになってしまいます。
オーバーフローになる前と後で違うところは、フレームにコンポーネントを追加しただけです。(コードはなにも記述していません)
作りが悪いと言われてしまえば何も言えませんが・・・
SetLengthで指定している値はいくつになってますか?
フレームを追加する前の値と後の値を見比べると、解決の糸口が見えてくるかもしれません。
解決しました!!ありがとうございます!
エラーになっていたSetLengthの、1つ前のSetLengthで
1足りない数値をセットしていました。
この状態で、今まで動いていたのが不思議です。
テーブルのサイズは常に気にしていたのですが、
"気にしていたつもり"の間違いでした。
それにしても・・・こんなミスに気づかないなんて・・・。
どうもありがとうございました。
ツイート | ![]() |