掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TStringList型の範囲外のエラー回避について。 (ID:36890)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
try文の使い方が間違っている。 delphiにはtry〜except〜end;とtry〜finally〜end;の2つがあって それぞれの違いは大雑把にいうと ・try〜except〜end;の場合 tryとexceptの間で例外が発生した場合のみexcept〜end;が実行される ・try〜finally〜end;の場合 tryとfinallyの間に入ったらfinally〜end;は必ず実行される 例外でなくてもexitやbreakやcontinueなどでも有効 例外処理でも使えるけど主にメモリ解放に使う 例えば hoge := TStringList.crete; try 〜 finally hoge.free; end; と、すれば何があってもhogeは確実にメモリ解放できる になるから今回の場合は //finally // Result := 'Nothing'; //end; の部分が必ず実行されてしまうというわけ。 と、いうわけでexceptに書き換えればok でも正直言って //原始的に //if TSList.Count > i then Result := TSList[i] //else Result := 'Nothing'; // //リクエストiがTStringListの配列数より大きかったら、、、、って処理にしちゃいましたが。 原始的じゃなくてこれが正しい姿だと思うが? まあ両方とも行うのが一番いいんだけどね。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.