テキストファイルをString型の変数に代入したい。

解決


武田  2005-06-10 05:55:05  No: 15496

皆様いつもお世話になっております。
初歩的なことで大変お恥ずかしいのですが、ご指導お願い致します。
テキストファイル(htmlファイル)をMemoなど経由せずに直接String型の変数へ代入する方法を教えて頂きたいのですが。
目的はWebBrowserでダウンロードしたhtmlファイルからリンク先を抽出するための原文にしたいので、CRやLFやよけいな符号、文字が付加されない様にしたいのです。
テキストファイル(html文)をMemoやRichEditにロードしておき、
 RichEdit1.Lines.LoadFromFile('index.html');
String型の変数に代入する解説はありました。
s = RichEdhit1.Text;
MemoやRichEditなどヴィジュアルなコンポーネントに代入してからString型変数に代入するわけにもいかず、いろいろ試しましたが解りません。
よろしくお願い致します。m(__)m


通りすがちゃった人  2005-06-10 06:21:18  No: 15497

> RichEdit1.Lines.LoadFromFile('index.html');
でよいのなら
var
 strList: TStringList;
begin
  strList:= TStringList.Create;
  try
    strList.LoadFromFile('index.html');
    ....
  finally
    srtrList.Free;
  end;
end;

RichEdit1.LinesとTStringListは同TStringsです


Basser  2005-06-10 19:38:18  No: 15498

テキストデータとしてアクセスせずに読込むだけです。

var
  S: String;
  FS: TFileStream;
begin

  S := '';
  FS:= TFileStream.Create('c:\windows\デスクトップ\hogehoge.htm', fmOpenRead);
  try
    SetLength(S, FS.Size);
    FS.Read(S[1], FS.Size);
  finally
    FS.Free;
  end;

  // 残りの処理 --------------------------------------------------

end;


武田  2005-06-10 19:54:18  No: 15499

通りすがちゃった人さん。早速教えて頂いてありがとうございました。
いや〜お恥ずかしい。勉強になります。
 strList.LoadFromFile('test.txt');は、今までのレクチャーでやっていたのに、
s:String;
・・・
s:=strList.Text;
StringListの「Text」で代入できるのを知りませんでした。
ありがとうございました。

また教えてください。m(__)m


武田  2005-06-10 20:35:30  No: 15500

Basser さん、ご指導ありがとうございました。
TFileStream;は、全く知らなかったため、難解なDelphiのヘルプを読んでおりました。
>SetLength(S, FS.Size);
は、ファイルサイズ分をsにセットして
>FS.Read(S[1], FS.Size);
は、バッファーsの1番目から読み込んで転送するということでしょうか。
s[1]の添え字の意味が理解できません。
出来ましたら教えて頂けないでしょうか。m(__)m


Basser  2005-06-10 22:44:13  No: 15501

>>SetLength(S, FS.Size);
>は、ファイルサイズ分をsにセットして
>>FS.Read(S[1], FS.Size);
>は、バッファーsの1番目から読み込んで転送するということでしょうか。
>s[1]の添え字の意味が理解できません。
>出来ましたら教えて頂けないでしょうか。m(__)m

添え字の意味ですが 武田さんが解釈されたとおりです。
文字列型は文字配列としてアクセスできるようになっています。


Basser  2005-06-10 22:54:47  No: 15502

>は、バッファーsの1番目から読み込んで転送するということでしょうか。
>s[1]の添え字の意味が理解できません。

すみません。ボケていました。

× バッファーsの1番目から読み込んで転送する 
○ バッファーsの先頭アドレスに読み込み       

です。


武田  2005-06-11 05:31:07  No: 15503

Basser さん。早速ありがとうございました。
よくわかりました。
また教えてください。


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

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






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