テキストの埋め込みと呼びだし(リソースファイル使用)

解決


ペーン  2009-10-28 01:55:35  No: 35987

Delphi7にて、
テキストファイルをコンパイル時に実行ファイルに埋め込んで、
実行時に埋め込んだ内容を呼び出そうとしていますが、
うまく出来ず、行き詰まっています。

どなたかアドバイスお願い致します。

状況
1.テキストファイル「temp.txt」をdprと同じフォルダ下に置いた。
2.テキストエディタで「MyRes.rc」を作成した。
    内容は、MyText TEXT "temp.txt"
3.プロジェクトに追加にて、rcファイルを追加した。
4.下記のコードを書き込んだ
      Memo1.Clear;
      RS := TResourceStream.Create(hInstance,'MyText','TEXT');
      try
        Memo1.Lines.LoadFromStream(RS);
      finally
        RS.Free;
      end;
5.実行すると、Memo1 には、・・・W と表示されるだけで、
    埋め込んだテキストファイルの内容が表示されない。

どうぞ、よろしくお願いいたします。


そのTEXT  2009-10-28 02:27:10  No: 35988

ShiftJISなの?
Unicodeだったりして。


ペーン  2009-10-28 03:20:21  No: 35989

ご指摘のように、テキストファイルがUnicodeでしたので、
試しにShiftJISテキストでやってみた所、正常に動いてくれました。

ただ、埋め込み及び(最終的には)ファイル保存したいテキストファイルは、
どうしても、Unicodeでなければなりません。

何か、良い手は無いでしょうか・・・。


良い手、悪い手、普通の手  2009-10-28 04:04:42  No: 35990

真琴:「"何か、良い手は?"って聞いてるけど、"悪い手"でなければ"普通の手"でもイイんじゃない?」

 // ShiftJISの場合
 Memo1.Lines.LoadFromStream(RS);
 // Unicodeの場合
 Memo1.Text := WideCharToString(PWideChar(RS.Memory)+1); // BOM付なら+1、BOMなしなら+0

春子:「ん? "良い手、悪い手、普通の手"? …そういえば、子供の頃、"欽ドン!良い子悪い子普通の子"っていうTV番組があってね、それ面白かったなぁ」
真琴:「え? ハルコさん、それって、アタシが生まれる前の番組?」
春子:「あ…そっかぁ、マコトはその時まだ生まれてないのかぁ…ちょっとショック」


monaa  2009-10-28 04:06:14  No: 35991

解決手段は幾らでもあります。
いちばん簡単なのはUNICODE標準Delphi2009以降を使う。
金をかけないで楽するならTNT wareのTNTStringListを使う。
自力でやるならTStringListのまねをStringでなくWideStringで行うです。
正直自力でやってもそんなに難しい作業ではありません、
TMemoryStreamを使ってリソースを読み込み、WideStringに放り込めばいいだけです。


ペーン  2009-10-28 04:36:04  No: 35992

ありがとうございました。

WideCharToStringで無事表示されました。
せっかくなので後ほど、TNTStringListも試してみようと思います。

最終的にはUnicodeのテキストファイルに保存したいので、
どうすれば良いのか今から勉強しますが、どうしても行き詰まった時には、
皆さま、また、よろしくお願いいたします。

ありがとうございました。


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

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






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