テキストファイルから配列データを取り出し行列計算するには?

解決


インスタント  2004-06-28 08:48:39  No: 9669

任意のテキストファイルに、行列数値データ(8行×11列)があります。これを配列B[m, n] に読み込むのと、  読み込んだデータをDouble型に変換するにはどうすればいいのでしょう?


@っしー  2004-06-28 19:28:00  No: 9670

任意のテキストファイルが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


@っしー  2004-06-28 19:30:27  No: 9671

すいません。  上記回答に、間違えがありましたので訂正させていだきます。

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;


インスタント  2004-07-01 09:29:36  No: 9672

ありがとうございます!勉強になりました。
おかげでできましたー。


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

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






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