StringGridを利用してCSVを読み込むとずれる

解決


yu  2010-04-20 19:01:59  No: 38310

StringGridを利用してCSVファイルを読み込時内容に半角スペースが、入っていると取り込まれる列が、ずれてしまいます。スペースを,と同じように処理されているようです。同じくスペースが空いている場合でも半角スペースの場合のみずれてしまいます。半角スペースが、あいていても列がずれずに表示する方法を教えていただきたいのですがお願いいたします。

//-------------------------------------CSVファイル読み込み
 var

 f:textfile;
 str,c1,c2,c3:string;
 rowcnt :integer;

 
begin
   
  AssignFile(f,'C:\TEST\test.CSV');
reset(F);
rowcnt:=2;

  while not eof(F) do
  begin
  s:=0;
    Readln(F,str);
    StringGrid1.rows[rowcnt].CommaText:=str;
    c1:=StringGrid1.cells[0,rowcnt];
     c2:=StringGrid1.cells1,rowcnt];
    c3:=StringGrid1.cells[2,rowcnt];

   

    
     inc(rowcnt);

       end;


Mr.XRAY  2010-04-20 19:30:31  No: 38311

こんにちは.Mr.XRAYです.
Delphiのバージョンにもよりますが.

StrictDelimiter
http://docwiki.embarcadero.com/VCL/ja/Classes.TStrings.StrictDelimiter

または,以下のページのList9を利用するというのはどうですか.
http://mrxray.on.coocan.jp/Halbow/Notes/N021.html


DEKO  2010-04-20 19:34:39  No: 38312

StrictDelimiter を使いましょう。

  StringGrid1.rows[rowcnt].Delimiter := ',';
  StringGrid1.rows[rowcnt].StrictDelimiter := True;
  StringGrid1.rows[rowcnt].DelimitedText := str;

AssignFile ではなく、StringList で処理すると簡単になりますよ。

See Also:
http://homepage1.nifty.com/ht_deko/tech036.html


yu  2010-04-21 08:54:47  No: 38313

Mr.XRA様  DEKO様非常に迅速で的確なアドバイスありがとうございました。
無事解決しました。  ありがとうございます。


Mr.XRAY  2010-04-21 09:24:33  No: 38314

>無事解決しました。  ありがとうございます。

解決してよかったですね.
やっぱりStrictDelimiterを使用したのですか?


KHE00221  2010-04-21 09:54:53  No: 38315

http://khe00221.image.coocan.jp/unit/index.html

CSVStringList.pas とか CSVUtilsUnit.pas とか


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

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






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