文字列を数値化


Delphi弱者  2009-08-13 01:25:44  No: 35399

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;


igy  2009-08-13 04:51:14  No: 35400

>エラーが出て

どの部分で、どのようなエラーメッセージが表示するのですか?


ぽむぽむ  2009-08-13 06:27:00  No: 35401

「Val 手続き」なんかはいかがでしょう?


なべ  2009-08-13 13:33:01  No: 35402

ここに詳しい説明がありますね。

http://www.blackcatlab.com/article.php/ProgramingFAQ_del0037

私も TryStrToIntDef は知らんかったです。


DEKO  2009-08-13 16:51:02  No: 35403

えっと...SysUtils.StrToFloatDef() が使えるかと。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加