掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
UNITを追加したら、読み取り違反のエラーが出るようになったのですが?? (ID:49400)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> shortstringは、UNIT1のstring型の配列変数の量を減らしたので、 > integerに戻しても正常に作動しました。 これ原因じゃないですかね?Unit1の持つ配列に対して、例えば10要素ある配列で[10]とか[11]にアクセスしてませんか? プロジェクトオプションのDelphiコンパイラのコンパイルにある実行時エラーのオーバーフローチェックと 範囲チェックにチェックオンして実行するとエラーで例外がでませんか? > integer、shorstringをstringにしたらオーバーフローするという > 仕組みを少し解説してもらえませんか?? じゃなくてオーバランでこれらの領域を踏み潰している(↑のように)ということです。String型は 裏でいろんな仕組みが働く型なので、その仕組みが異常を > PUBLICってなんだあとか思ってしまいました。 > いままで、全然使っていませんでした。 Delphi を使ったプログラミング:インデックス - RAD Studio http://docwiki.embarcadero.com/RADStudio/Tokyo/ja/Delphi_%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%EF%BC%9A%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9 あたりを一通りさらっと読んでみてはいかがですか?DelphiはObject Pascalという言語の上に成り立っていて、 Object Pascalという言語はオブジェクト指向という考え方に沿って作られているので、ここからあまり 離れてしまっていると、質問をしても回答しようとしている人との意思疎通がうまくいかないのかと。 > もうひとつ、stringを宣言したらコンパイルされたプログラム内で > 何バイト変数領域を確保されるのですか?? String型はポインタなので4バイトです(その他に文字列を格納する領域が別途取られます)。 > ボタンを25個使ったUNIT1だけの電卓を作っていますが、これのサイズが10,507KBです。 > 今問題になっているUNITを3つ使ったプログラムが10,709KBです。 > そして60unitくらいのプログラムが7,606KBsです。 実行ファイルのサイズはプログラムに含まれるコードとデータ、それにデバッグ情報の合計で決まりますが、 ボタンなどのコントロールはいくつあってもコードは基本的に同じ量です。つまりプログラムの実行ファイルの サイズはほぼあなたの書いたコードの量+プロジェクトオプションで指定したデバッグ情報の設定で決まります。 ちなみに実行時にメモリ上に取られるサイズはまた別の話です。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.