TStringListでテキストファイルの列を読み込むには?

解決


natsuyo  2008-03-17 23:33:05  No: 30190  IP: 192.*.*.*

いつも勉強させてもらっております。

1 2 3 4
5 6 7 8
9 10 11 12

といった数値が記載されているテキストファイルを
TStringListを使って列毎のデータを読み込みたいとおもっております。
過去ログで勉強させてもらったところ、

var
 zenbu,Line:TStringList;

zenbuに上記数値をすべて読み込み
Line.CommaText:= zenbu(0);

という感じで、1 2 3 4 といったように
行方向の読み込みはできたのですが、列方向の
1 5 9 をTStringListに読み込むのはどうすればよろしいのでしょうか?

  ヘルプなどを見ながら、テキストを
1 5 9
2 6 10
3 7 11
4 8 12
 と書き換える方法なども検討しましたが、
すべて上手くできなかったため相談させていただきました。

編集 削除
Fusa  URL  2008-03-18 09:15:02  No: 30191  IP: 192.*.*.*

方法はいくつかあると思うのですが
少々面倒かもしれませんね。

こちらを使ってみてください。
http://delfusa.main.jp/delfusafloor/opensource/delfusalibrary/20070828160200/WordDecompose/WordDecompose.pas.txt

function WordGet(const Delimiters, S: WideString; WordIndex: Integer;
 DecomposeMode: TDecomposeMode): WideString;
各行毎にDelimitersにスペースを指定して
WordIndexに列を指定すれば取得出来ます。

DecomposeModeにはdmDelimiterExactlyを指定するといいでしょう。

例えばこんな感じ。
for i:=0 to zenbu.Count-1 do
begin
  Memo1.Lines.Add( WordGet(' ', zenbu[i], 1, dmDelimiterExactly) );
end;

編集 削除
夏世  2008-03-18 13:12:50  No: 30192  IP: 192.*.*.*

Fusaさんありがとうございました。
また、ひとつ勉強になりました。

編集 削除