SkRegExpでシフトJISコードを使えばどうなります?


昔のプログラムは忘れた  2011-04-02 20:23:57  No: 40392  IP: 192.*.*.*

SkRegExpでプログラムを作っています。
このヘルプファイルに「文字列をすべてUNICODEで処理しています」とあるのですが、シフトJISのファイルの場合正常に動作するのでしょうか?

編集 削除
igy  2011-04-03 12:13:24  No: 40393  IP: 192.*.*.*

実際に試してみて、正常に動作するかを確認してみるのはいかがですか?

編集 削除
昔のプログラムは忘れた  2011-04-03 14:25:01  No: 40394  IP: 192.*.*.*

igyさん回答ありがとうございます。
以前、旧バージョンで作ったときはうまく動いていたはずなんですが、PCが壊れ、やっとのことでプログラムを抜出し、移植している最中です。
ソフトがうまく動かず、原因がどこにあるのか調べているところです。
原因究明のために質問させてもらったのですが...

頭を冷やしてアルゴリズムから調べなおしてみます。

編集 削除
昔のプログラムは忘れた  2011-04-03 16:53:32  No: 40395  IP: 192.*.*.*

Delphi XEを使っているのですが、UNICODEにしたテキストファイルの読み込みがうまくいきません(デバッグのため、読み込んだファイルの行数を表示させているのですが、0のままです)。
シフトJISだと正確に(1800行ほど)表示されるのですが。
ファイルのコードの変更はエディタでやっています。

編集 削除
altlegend  2011-04-03 21:02:55  No: 40396  IP: 192.*.*.*

何か、私が苦労していたことと同じことかもと思って書き込みます。
書き込み、読み込みのソースを見せてくださいませんか。

編集 削除
昔のプログラムは忘れた  2011-04-04 20:28:17  No: 40397  IP: 192.*.*.*

altlegendさん、ありがとうございます。
テキストファイルを読み込む部分のプログラムです。
  RefTextFileName := 'RefText.txt';
  RefText:=TStringList.Create;
  RefText.LoadFromFile(RefTextFileName);

  Edit1.Text:= IntToStr(RefText.Count);
とりあえず、行数が正確に表されるか確認するため最後の行を付け加えました。
(行ごとに処理しているため、これがだめだと後もダメになります)

ひとつわかったことは、エディタでコードを変更して保存するときにBOMというのを無にすると行数が1行と表示されることがわかりました。
あと改行コードを変更して試してみようと思っています。

編集 削除
DEKO  2011-04-04 20:47:58  No: 40398  IP: 192.*.*.*

http://ht-deko.minim.ne.jp/tech015.html#tech043
ドゾー。

編集 削除
DEKO  2011-04-04 20:54:37  No: 40399  IP: 192.*.*.*

http://www.watercolor-city.net/ct_delphi/delphi_tiburon/doc_unicode/tencoding_textio.htm
いや、totonica さんのが詳しいな。

編集 削除
昔のプログラムは忘れた  2011-04-05 07:54:30  No: 40400  IP: 192.*.*.*

フォーマットを指定して読み込むようになっているんですか。
DEKOさん、ありがとうございます。

編集 削除
altlegend  2011-04-05 17:32:39  No: 40401  IP: 192.*.*.*

えーと、確認しますが、下のでは2009でもunicodeじゃないんですか。

 SL := TStringList.Create;
  try
    SL.Add('あいうえお');
    // ファイル保存
    SL.SaveToFile('C:\Default.txt');
  finally
    SL.Free;
  end;

編集 削除
altllegend  2011-04-05 18:03:27  No: 40402  IP: 192.*.*.*

えーと、すみません、上。他人のを勝手に貼り付けてしまって。
で、これは自分のですが、これらは2009でコンパイルしてるんですけど、何のコードで保存されますか。

  AssignFile(F, FileName); Rewrite(F);
  for j:=1 to MSS do
  begin
    InBuff:=FD[j,1]+','+FD[j,2];
    for k:=3 to 7 do InBuff:=InBuff+','+floatToStr(FB[j,k-2]);
    writeln(F,InBuff);
  end;
  closeFile(F);

編集 削除
DEKO  2011-04-05 20:53:47  No: 40403  IP: 192.*.*.*

to altllegend さん

どちらとも "やってみればわかる事" だと思いますよ。
前者も後者も、Shift_JIS (ANSI デフォルトエンコーディング) で出力されます。

http://www.embarcadero.com/jp/rad-in-action/migration-upgrade-center

Unicode 系の話は公式サイトに一通り揃っていますので、
まずはそちらをご一読ください (特に右側)。

編集 削除
igy  2011-04-05 20:53:55  No: 40404  IP: 192.*.*.*

>これは自分のですが、これらは2009でコンパイルしてるんですけど、何のコードで保存されますか。

実際、出力されたコードを確認すればわかると思いますが、シフトJISだと思います。

編集 削除
altlegend  2011-04-05 23:19:07  No: 40405  IP: 192.*.*.*

DEKOさん、Igyさんありがとうございます。

DEKOさん、すみませんが、読んでも分からないんです。
意味が分からないことばかりで。

主力されたコードを確認する方法が分かりません。

出力されたものはシフトJISとのことですが、それを読み込んだらunicodoになってるんですか。

編集 削除
 2011-04-05 23:26:09  No: 40406  IP: 192.*.*.*

ファイルに保存して有名どころのテキストエディタで読めば、
ファイルの文字コード自動判別機能で大体わかると思いますが…

編集 削除
DEKO  2011-04-05 23:33:54  No: 40407  IP: 192.*.*.*

http://ht-deko.minim.ne.jp/tech013.html#tech039
http://ht-deko.minim.ne.jp/tech014.html#tech040
http://ht-deko.minim.ne.jp/tech014.html#tech041
http://ht-deko.minim.ne.jp/tech041.html#tech081
http://ht-deko.minim.ne.jp/tech045.html#tech093
http://www.watercolor-city.net/ct_delphi/delphi_tiburon/index.htm
追加でドゾー。

編集 削除
altlegenf  2011-04-06 17:45:04  No: 40408  IP: 192.*.*.*

今日は。

あさん、付属のメモ帳とかワードパッドとかでは分からないと思うんですが。
見方が悪いですかね。

DEKOさん、ありがとうございます。
一応見ましたが、やはり読んでも頭には残っていないような・・・。
分かるためには記憶力がいるような気がします。

最後の2009特集は、2009を買ったときにお世話になったところです。
HPのダウンロードのプログラムに参考にさせてもらいました。
当時は検索してもここしか見当たらない感じでしたね。
メーリング何とかは見てもよく分からないし、大変でしたよ。
まあ当時も読んでも意味が分かりませんでしたが。

あの、もう私にはレス結構ですので。
ありがとうございました。

編集 削除
昔のプログラムは忘れた  2011-04-06 20:51:04  No: 40409  IP: 192.*.*.*

DEKOさん、ごめんなさい。
せっかく教えていただいたんですが、
Loadする具体例が書かれていないので、私にはわかりません。
出来れば、UNICODEのテキストファイルを読み込むプログラムを教えていただけないでしょうか?

編集 削除
DEKO  2011-04-06 23:05:39  No: 40410  IP: 192.*.*.*

Unicode のファイル読み込みは、
"例示した totonica さんのサイトに書かれていた" ように、
> 読み込み時にはLoadFromFileの第2引数にTEncodingを指定するだけです。
これだけです。

  SL := TStringList.Create;
  try
    // ファイル読み込み
    SL.LoadFromFile('C:\Default.txt', TEncoding.Unicode);

    // (処理)
  finally
    SL.Free;
  end;

...が、あなた (呼びにくいのでコレで) の仰る 
"UNICODE" は UTF-8 の事だと思われますので

  SL := TStringList.Create;
  try
    // ファイル読み込み
    SL.LoadFromFile('C:\Default.txt', TEncoding.UTF8);

    // (処理)
  finally
    SL.Free;
  end;

となるのではないかと思います。

> Loadする具体例が書かれていないので、私にはわかりません。
リンク先の資料はすべて読んでみましたか?

編集 削除
D  2011-04-07 01:27:42  No: 40411  IP: 192.*.*.*

>付属のメモ帳とかワードパッドとかでは分からないと思うんですが。

  メモ帳なら以下の要領で確認できます。

・モ帳で読み込んで文字化けしていないことを確認。
・「名前をつけて保存」を選択。
・出てきたダイアログの下のほうに「文字コード」というコンボボックスがあるのでその値を見る。

ANSI となっていればShift-JIS
Unicode になっていればUTF-16のリトルエンディアン
Unicode big endian となっていればUTF-16のビッグエンディアン
UTF-8 となっていればUTF-8

編集 削除
昔のプログラムは忘れた  2011-04-07 07:48:29  No: 40412  IP: 192.*.*.*

DEKOさん、ありがとうございます。
一応すべての資料に目を通したつもりです。

今晩やってみます。

編集 削除
DEKO  2011-04-07 11:12:06  No: 40413  IP: 192.*.*.*

> 一応すべての資料に目を通したつもりです。
そうですか。

[第16回デベロッパーキャンプ 【1E】資料]
http://conferences.embarcadero.com/article/images/40483/devcamp_encore_20100415_Full.pdf

P.63 に  LoadFromFile の例が載っています。

上記の物に限らず、デベロッパーキャンプの資料には膨大な情報があります。
これを機に一度デベロッパーキャンプの資料を精査してみてはいかがでしょうか?

[88.とりあえず、デベロッパーキャンプの資料を読んでみようか。]
http://ht-deko.minim.ne.jp/tech044.html#tech088

編集 削除
altlegend  2011-04-08 06:45:35  No: 40414  IP: 192.*.*.*

Dさん、ありがとうございました。
確かに、JISでした。

保存方法を変えてUNICODEにしたら、プログラムが全然動きません。
全部直すとしたら大変なので、このままで行きます。

編集 削除
Mr.XRAY  2011-04-08 14:00:06  No: 40415  IP: 192.*.*.*

altlegendさん,こんにちは.Mr.XRAYです.

前にエディタのことが書かれていました.
メモ帳,ワードパッドでもいいのですが,
専用のテキストエディタを持っていると便利です.
ネットで「テキストエディタ」で検索してみてください.

昔は,秀丸エディタというのが定番の時代がありましたが,現在はいろいろ
あります.Delphi使いの方には,TEADというのも人気があるようです.

当初の質問のSkRegExpのことではありませんが,文字コード(文字コードページ)
に関することでしたら,手前味噌ですが,以下のサンプルが参考になれば幸いです.
実際のコード(もちろん,Loadする具体例もあります)と,EXEを添付していますので,
すぐ動作確認できます.サンプルのテキストファイルも添付しています.

883_文字コードページとテキストファイルの保存と表示
http://mrxray.on.coocan.jp/Delphi/plSamples/883_CodePageTextFile.htm

編集 削除
Mr.XRAY  2011-04-08 14:03:53  No: 40416  IP: 192.*.*.*

>これらは2009でコンパイルしてるんですけど

提示したページのサンプルは,Delphi 2010で動作確認しています.
Delphi 2009も2010同様,Unicode対応バージョンですので,たぶん,そのまま利用可能と思われます.

編集 削除
Mr.XRAY  2011-04-08 14:10:22  No: 40417  IP: 192.*.*.*

>883_文字コードページとテキストファイルの保存と表示
>http://mrxray.on.coocan.jp/Delphi/plSamples/883_CodePageTextFile.htm

ごめんなさい.ネットで検索するとでてきますね.
もし,すでにご覧になっていたら申し訳ありません.

編集 削除