ListViewのセルを読み取りそのデータをデータベースに保存するプログラムを作っています。
そこでご質問ですが
以下の条件式で
該当セルにデータがなかった場合
エラーが発生して止まってしまいます。
エラーが発生したら処理をせずにスキップするようにしたいのですが
どのようにすればいいのでしょうか。
if ListView1.Selected.SubItems[120] <> '' then
処理文
・
・
end;
初歩的なご質問で恐縮ですが教えいただけませんでしょうか。
よろしくお願いいたします。
~環境~
Windows 10 Pro 64bit
Delphi 10.2 Tokyo
> エラーが発生したら処理をせずにスキップするようにしたいのですが
エラーが発生したら・・・というのが条件なら、例外処理とかになるかと・・
# 実際のコードやエラーメッセージ、そしてエラーになる箇所
# を挙げられたら、より具体的な回答が得られるかもしれません。
igyさんお返事ありがとうございます。
エラー内容は
「プロジェクト〇〇.exeは例外クラスEStringListError(メッセージリストのインデックスが範囲を超えています(120)を送出しました。」
となっています。
現在のコードは以下の通りとなっています。
if ListView2.Selected.SubItems[120] <> '' then ←エラー箇所です。
begin
item := ListView1.Items.Add;
item.Caption := Copy(ListView2.Selected.SubItems[120], 0, 10); //日付(28日)
end;
ListView2.の120列目にデータが入っていない時にエラーが発生してしまい
プログラムが途中でとまってしまいます。
ListView2.の120列目にデータが入っていない時は処理をせずに次のコードに進んでほしいいんですけど・・・
>if ListView2.Selected.SubItems[120] <> '' then
の箇所を
if (ListView2.Selected.SubItems.Count > 120) and (ListView2.Selected.SubItems[120] <> '') then
にしてみた場合、エラーは出なくなりますか?
>該当セルにデータがなかった場合
全レコード同一データ数にすべきでは?
igyさんご回答ありがとうございます。
おっしゃる通りにコーディングしたところ
無事にエラー回避でいました。
ListView2.Selected.SubItems.Count は気が付きませんでした。
ありがとうございます。
ツイート | ![]() |