任意のテキストファイルに、行列数値データ(8行×11列)があります。これを配列B[m, n] に読み込むのと、 読み込んだデータをDouble型に変換するにはどうすればいいのでしょう?
任意のテキストファイルがCSV形式であると仮定します。
(エラー処理は入れてません。)
const
m: integer = 8;
n: integer = 11;
var
B: array of array of double;
procedure CsvToBbl(FName: string);
var
i, j: integer;
SL, SL_CSV: TStringList;
begin
SetLength(B, m, n);
SL := TStringList.Create;
SL := TStringList.Create;
Try
SL.LoadFromFile(FName);
for i:=0 to m-1 do
begin
SL_CSV.commatext := SL[i];
for j:=0 to n-1 do
begin
B[i, j] := StrToFloat(SL_CSV[j]);
end;
end;
Finally
End;
end;
※実際に動かしてませんので、タイプミスがある場合は直してください。 m(__)m
すいません。 上記回答に、間違えがありましたので訂正させていだきます。
const
m: integer = 8;
n: integer = 11;
var
B: array of array of double;
procedure CsvToBbl(FName: string);
var
i, j: integer;
SL, SL_CSV: TStringList;
begin
SetLength(B, m, n);
SL := TStringList.Create;
SL_CSV := TStringList.Create; //訂正
Try
SL.LoadFromFile(FName);
for i:=0 to m-1 do
begin
SL_CSV.commatext := SL[i];
for j:=0 to n-1 do
begin
B[i, j] := StrToFloat(SL_CSV[j]);
end;
end;
Finally
SL.Free; //追加
SL_CSV.Free; //追加
End;
end;
ありがとうございます!勉強になりました。
おかげでできましたー。
ツイート | ![]() |