掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
UNITを追加したら、読み取り違反のエラーが出るようになったのですが?? (ID:49399)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
通りすがりさん、ありがとうございます。 UNIT3で宣言した変数は、全然使っていないのですよ。 コンパイルも、起動もします。 そして確かにエラーを起こす部分以外では正常に作動します。 shortstringは、UNIT1のstring型の配列変数の量を減らしたので、 integerに戻しても正常に作動しました。 >おそらく原因はグローバル変数領域のバッファオーバフローです。 まあ、私の言いたいこともこういうことなんだと思いますが、 バッファオーバフローの意味を正しく知っているとは言えません。 integer、shorstringをstringにしたらオーバーフローするという 仕組みを少し解説してもらえませんか?? もうひとつ、stringを宣言したらコンパイルされたプログラム内で 何バイト変数領域を確保されるのですか?? Mr.XRAYさん PUBLICってなんだあとか思ってしまいました。 いままで、全然使っていませんでした。 私としては、いちいちUNIT名をつけるのはしんどいので、 使いたくはないですが。 unit内だけのグローバル変数を implementation uses UNIT1,UNIT2; var DrtPath:string; WindowsID:integer; のように宣言できることを教えてもらったことはうれしいです。 紹介されたHPは後で読まさせていただきます。 もうひとつ質問させてください。 ボタンを25個使ったUNIT1だけの電卓を作っていますが、これのサイズが10,507KBです。 今問題になっているUNITを3つ使ったプログラムが10,709KBです。 そして60unitくらいのプログラムが7,606KBsです。 この違いはどうして生じるのでしょうか?? 8bitマシーンのころは変数に気を使っていましたが、 32bit、64bitでこういうことは初めてです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.