コンポーネントをフレームに乗せるだけで

解決


まろ  2005-01-28 04:58:03  No: 12897

コンポーネントをフレームに乗せるだけで
access violation や、スタックオーバーフローが出るんですけど、
何が悪いのかさっぱりわかりません。
どなたかご教授お願いします。

環境:delphi7、windows2000sp4


にしの  2005-01-28 05:22:44  No: 12898

それだけだと何とも言えません。
考えられる対処法を挙げてみます。

・新規プロジェクトで試してみる。
・標準コンポーネントで試してみる。
・不要なパッケージを消し、再度新規プロジェクト・標準コンポーネントで試してみる。
・不要なライブラリパスを削除する。
・パッケージ、ライブラリパスを、インストール直後のものに戻してみる。

これくらいでしょうか。
まずは試してみてください。

これで無理なら、私がやるとしたらDelphiの再インストール、OSの再インストールですかね。


まろ  2005-01-28 07:26:26  No: 12899

にしの様、ありがとうございます。
環境は、インストール時とほぼ変わりません。
標準ではないコンポーネントは、以前にも使用した事があり、
気持ちばかり実績があります。

フレームは、ソースを分けるためにフォームと同じような使い方をしています。
メインフォームには、PageControlを貼り付け、複数のタブに、複数のフレーム
を貼り付けています。

これとは別に、DataModuleを使っていて、ここでは2つのスレッドを生成しています。スレッド生成時に、関数を格納する動的配列を作成しています。
作成にはSetLengthを使い、必要個数エリアを確保してから関数を入れています。

この状況で、今までは問題なかったのですが、フレームに追加する項目が増え、コンポーネントを複数追加したのですが、実行時に上記のスレッド内のSetLengthで
オーバーフローになってしまいます。

オーバーフローになる前と後で違うところは、フレームにコンポーネントを追加しただけです。(コードはなにも記述していません)

作りが悪いと言われてしまえば何も言えませんが・・・


にしの  2005-01-28 19:28:32  No: 12900

SetLengthで指定している値はいくつになってますか?
フレームを追加する前の値と後の値を見比べると、解決の糸口が見えてくるかもしれません。


まろ  2005-01-29 02:30:36  No: 12901

解決しました!!ありがとうございます!
エラーになっていたSetLengthの、1つ前のSetLengthで
1足りない数値をセットしていました。
この状態で、今まで動いていたのが不思議です。
テーブルのサイズは常に気にしていたのですが、
"気にしていたつもり"の間違いでした。
それにしても・・・こんなミスに気づかないなんて・・・。
どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加