CSVのデータ区分け

解決


Delphi弱者  2009-08-06 16:52:38  No: 35354  IP: 192.*.*.*

D6/personal    お世話になります。
CSVをデータを配列にしたいと下記のようなものを作りました。
(doc, adat[1..20]はグローバル)

docに元データ(カンマ数は3−15程度で可変)の行を入れてadat[]で受け取りたいというものですがimaxを可変にしないと全データを受け取れません。多くすると「配列の範囲を超過」のエラーとなり、また少なくすると全部のデータの受け渡しができません。こんな場合にimaxを取得する方法はあるのでしょうか?

procedure csvsep;

var
SL:TStringList;
i,imax:integer;

begin

SL := TStringList.Create;
SL.CommaText := doc;    // SL.CommaText := 'aaa,bbb,ccc,ddd';

imax:=5;

for i:=0 to imax do begin
        adat[i+1]:=sl[i];   //  aDAT:array[1..20] of string;
        end;

        sl.Free;
end;

編集 削除
HOta  2009-08-06 17:10:22  No: 35355  IP: 192.*.*.*

imax:=SL.Count - 1;
でどうですか?

編集 削除
Delphi弱者  2009-08-06 17:25:49  No: 35356  IP: 192.*.*.*

HOta様:  早速解決しました。こんな使い方があるは知りませんで SL(High)などと試していました。  適切なアドバイスをありがとうございました。

編集 削除