プログラムの実行直後に下記エラーが発生し、解決法が分かりません。
<エラー内容>(全文)
デバッガ例外が発生
プロジェクトxxxxxがEStringListErrorクラスの例外を生成しました。
リストのインデックスが範囲を超えています(0)
プロセスは停止しています。再開するにはステップ実行または実行を選択
してください。
<環境>
Windows2000 Pro
Borland Delphi Professional Version6.0
<コード抜粋>
program xxxxxxx
uses
Forms,
Main in 'Main.pas' {Main_frm};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TMain_frm,Main_frm); -->この後、☆へ飛ぶ
Application.Run
end.
☆classes.pas内(コード抜粋)
procedure TString.Error(const Msg: String; Data: Integer);
function ReturnAddr: Pointer;
asm
MOV EAX,[EBP+4]
end;
begin
raise EStringListError.CreateFmt(Msg, [Data]) at ReturnAddr;
-->ここで、エラー発生します。
end;
上記エラーに関して、同じようなことを遭遇された方、もしくは、何かアドバイスを頂ける方、よろしくお願いします。
フォームの OnCreate でナニやってるの?
>プロジェクトxxxxxがEStringListErrorクラスの例外を生成しました。
>リストのインデックスが範囲を超えています(0)
とのことなので、
TStringListやTListBoxなどで、範囲以外の部分にアクセスしている
のでは?
ご返答ありがとうございました。
実は、DELPHI初心者でして、エラー現象をそのまま記載しました。
OnCreateの意味もよくわかりません・・・。
このプログラムは、現在、動作しているのですが、一部内容を改良し、
再度コンパイルしたところ、このようなエラーが出ました。
オブジェクトインスペクタ内を見ても、TStringListやTListBoxの
オブジェクトは使用していないです。
変更した部分のソースを上げてみて下さい。
このままでは解りません。
OnCreateは、ソースのFormCreateイベントです。
今まで動いていて、修正したらエラーになったのならば、
修正した部分にエラーがあります。
わかりました。ありがとうございます。
都合上、明日、プログラムを提示させて頂きますので、
よろしくお願いします。
ちなみに、変更点は、たとえば、
strCCFileName := GetLastFileName(strFileDir + 'CC??????');
上記を
strCCFileName := GetLastFileName(strFileDir + 'C??????');
と変更したくらいです。数箇所程度です。他の変更はありません。
> raise EStringListError.CreateFmt(Msg, [Data]) at ReturnAddr;
ここにブレークポイントいれて、飛んできたときに「呼び出し履歴」から遡る
ご返信ありがとうございました。
このプログラムに関しては、INIファイルとセットで
実行することになっており、このINIファイルを調査した所、
不足していた設定項目があり修正したら特にエラーもなく
実行できました。
返信してくださった方々、ありがとうございました。
呼び出し履歴など、知らなかったこともありましたので、
勉強になりました。
ツイート | ![]() |