D6/personal お世話になります。
CSVのデータを配列にしたいと先日アドバイスを頂いてカンマ区切りのものを配列にすることができました。これを今回更に発展させてこのデータが数値である場合は数値(real)に、数値でなければゼロが返せるようなものにしたいとやっていますがABCなどの文字列が入ったりMULLの場合はエラーが出て上手くいきません。このような場合の対応策につきアドバイスをお願いします。
doc:string;
adat:array[1..20] of string;
vdat:array[1..20] of real; //などはグローバル
procedure csvsep;
var
SL:TStringList;
i,imax:integer;
begin
SL := TStringList.Create;
SL.CommaText := doc; // SL.CommaText := 'aaa,bbb,ccc,ddd';
imax:=SL.Count -1;
for i:=0 to imax do begin
adat[i+1]:=sl[i]; // aDAT:array[1..20] of string;
end;
sl.Free;
//これに追加して
for 1:=1 to imax+1 do begin
try
vdat[i]:=strtofloat(adat[i]);
except
vdat[i]:=0;
end;
end;
>エラーが出て
どの部分で、どのようなエラーメッセージが表示するのですか?
「Val 手続き」なんかはいかがでしょう?
ここに詳しい説明がありますね。
http://www.blackcatlab.com/article.php/ProgramingFAQ_del0037
私も TryStrToIntDef は知らんかったです。
えっと...SysUtils.StrToFloatDef() が使えるかと。
ツイート | ![]() |