[delphi-users:3441] 外国版ソースのコンパイル

72 views
Skip to first unread message

snail3

unread,
Nov 12, 2013, 6:27:39 PM11/12/13
to delphi...@freeml.com
みなさん、こんにちは

また教えてください。

SynEdit の SynHighlighterJava.pas ソースの850行目あたりに

procedure TSynJavaSyn.Next;

というのがあって、中に↓の定義があります。

'A'..'Z', 'a'..'z', '_', '$', 'タ'..'ヨ', 'リ'..'・, '・..'?': IdentProc;

文字化けが発生してコンパイルエラーになっています。
コンパイルを通すだけの修正なら簡単ですが、
このような文字化けした外国産のコンポーネントソースを修正する
方法があれば教えてください。

--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=k8uqM
------------------------------------------------------[freeml byGMO]--

DEKO

unread,
Nov 12, 2013, 8:10:39 PM11/12/13
to delphi...@freeml.com
こんにちは。

チャッチャッと自作ツール作れば簡単です。
TStringList へ CP1252 で LoadFromFile() して UTF-8 で SaveToFile() すれば OK です。

[SynEdit (DEKO の雑談)]
http://ht-deko.minim.ne.jp/ft1202.html#120215_01

--
by DEKO
-----------------------------
http://ht-deko.minim.ne.jp/
de...@ht-deko.minim.ne.jp
-----------------------------


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習や試合の予定調整は「とっとと決め太郎」におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=k8v3n
------------------------------------------------------[freeml byGMO]--

hosokawa

unread,
Nov 12, 2013, 8:37:55 PM11/12/13
to delphi...@freeml.com
snail3 さん
DEKO さん

こんにちは。
細川です。

文字リテラルを使って


(省略)'タ'..'ヨ', 'リ'..'・, '・..'?': IdentProc;



(省略)#$00C0.. #$00D6, #$00D8.. #$00F6, #$00F8.. #$00FF: IdentProc;


と書いたらダメでしょうか?
(正しい動作になるのか、全く試していません!)


Regards,
HOSOKAWA Jun
[S/G] SERIALGAMES Inc.
TEL: 03-5812-0980
FAX: 03-5812-0970
twitter: http://twitter.com/serialgames
twitter: http://twitter.com/flaver_sg
mailto: j...@serialgames.co.jp
fla:ver http://flaver.jp/


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メールだけでみんなを招待できる便利機能♪
http://ad.freeml.com/cgi-bin/sa.cgi?id=k8vQN
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Nov 12, 2013, 8:53:30 PM11/12/13
to delphi...@freeml.com
DEKOさん、いつもありがとうございます。

> TStringList へ CP1252 で LoadFromFile() して UTF-8 で SaveToFile() すれば OK です。
CP1252に切り替えるといった事をやったことが無かったんですが、調べてみます。

ところで元ソースが CP1252 で開くと良いというのはどうやって判断しているん
でしょうか。
後で Virtual Treeview とか zcolorstringgrid のソースも変換したいので、
ついでに教えてやってください。
--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=k8wbC
------------------------------------------------------[freeml byGMO]--

DEKO

unread,
Nov 12, 2013, 10:01:56 PM11/12/13
to delphi...@freeml.com
こんにちは。

> ところで元ソースが CP1252 で開くと良いというのはどうやって判断しているん
> でしょうか。

結局の所、ANSI はソースを読んで言語を判定するしかないです。
大抵は CP1252 でイケます (アメリカやヨーロッパ)。

その次に多いのはロシアですか。
ロシア語に含まれるのはキリル文字ですが ( ゜д゜ ) の
口みたいな文字が大抵存在するのですぐに判断できます。
これは CP1251 で変換できます。

その他の言語についても、コメントや readme が何語で
書かれているかによって判定する事はできますね。

[コードページとフォントの Charset の関係。]
http://ht-deko.minim.ne.jp/ft0802.html#080226

使われている言語が判れば、コードページを調べるのは簡単です。

(以下、余談)

日本語のような MBCS は判定ロジックを組んである程度の
自動判定が可能ですが、SBCS の場合には自動判定はまず不可能です。
(同じコードに違う文字が割り当てられているので)

0x00~0x7F しか使われていない
CP1252 / CP932 (Shift_JIS) / UTF-8 (BOM なし)
これらを自動判別できないのと同じですね。

--
by DEKO
-----------------------------
http://ht-deko.minim.ne.jp/
de...@ht-deko.minim.ne.jp
-----------------------------


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
いつでもどこでもメールチェック!freemlのスマートフォンアプリ
http://ad.freeml.com/cgi-bin/sa.cgi?id=k8wQV
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Nov 12, 2013, 10:10:55 PM11/12/13
to delphi...@freeml.com
細川さん、いつもありがとうございます。

> (省略)#$00C0.. #$00D6, #$00D8.. #$00F6, #$00F8.. #$00FF: IdentProc;
ソースだけ触るときは秀丸でやっていたんですが、秀丸で開いた時点で化けて
しまっていましたが、エンコードをDEKOさんが書かれていた欧文に変更したら
正しいコードが判別できました。


// 'A'..'Z', 'a'..'z', '_', '$', 'A'..'O', 'O'..'o', 'o'..'y':IdentProc; D 13/11/13
      ↓
'A'..'Z', 'a'..'z', '_', '$', #$c0..#$D6, #$D8..#$F6,
#$F8..#$FF: IdentProc; // A 13/11/13

と変更してコンパイルしてみたら今度は、E2011 下限値が上限値を超えています
まエラーになってしまいました。
ちょっと修正したのがこちら

'A'..'Z', 'a'..'z', '_', '$', #$00c0..#$00D6, #$00D8..#$00F6, #$00F8..#$00FF: IdentProc; // A 13/11/13

とりあえずコンパイルは通りました。
ありがとうございました。
--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
練習や試合の予定調整は「とっとと決め太郎」におまかせ!
http://ad.freeml.com/cgi-bin/sa.cgi?id=k8wY2
------------------------------------------------------[freeml byGMO]--

snail3

unread,
Nov 12, 2013, 10:13:18 PM11/12/13
to delphi...@freeml.com
> 結局の所、ANSI はソースを読んで言語を判定するしかないです。
了解です。

> 大抵は CP1252 でイケます (アメリカやヨーロッパ)。
きっとそうですね。

> その次に多いのはロシアですか。
> ロシア語に含まれるのはキリル文字ですが ( ゜д゜ ) の
> 口みたいな文字が大抵存在するのですぐに判断できます。
> これは CP1251 で変換できます。

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

On Wed, 13 Nov 2013 12:01:55 +0900 (JST)
DEKO <delphi...@freeml.com> wrote:

> 結局の所、ANSI はソースを読んで言語を判定するしかないです。
> 大抵は CP1252 でイケます (アメリカやヨーロッパ)。
>
> その次に多いのはロシアですか。
> ロシア語に含まれるのはキリル文字ですが ( ゜д゜ ) の
> 口みたいな文字が大抵存在するのですぐに判断できます。
> これは CP1251 で変換できます。

--
takashi <taka...@csjpn.com>


MLホームページ: http://www.freeml.com/delphi-users

----------------------------------------------------------------------
メールだけでみんなを招待できる便利機能♪
http://ad.freeml.com/cgi-bin/sa.cgi?id=k8xav
------------------------------------------------------[freeml byGMO]--

hosokawa

unread,
Nov 12, 2013, 10:36:04 PM11/12/13
to delphi...@freeml.com
snail3 さん

細川です。

SynEdit を取得してバイナリエディタで見たので、

(省略)#$00C0.. #$00D6, #$00D8.. #$00F6, #$00F8.. #$00FF: IdentProc;

上記で文字コードは正しいと思います。

ただ、ロジック自体は追っていないので、このような変換をして正しく動作するのかは、
まったく見ていません……。
もし、これで正しく動作するのであれば、元の SynEdit のソースを、このように変更
したいですね。SourceForge の仕組みが解っていませんが、OpenSource であれば変更
できると思います。

ちなみに、E2011 が出る原因は、#$Fx が WideChar に自動型変換されたためです。
今後、文字は、#$xxxx or #xxxxx と書いたほうが良いかも知れません(全て WideChar
として認識される)
使い方はいろいろ♪一部のメンバーだけにMLメールを送ろう!
http://ad.freeml.com/cgi-bin/sa.cgi?id=k8xuH
------------------------------------------------------[freeml byGMO]--

Reply all
Reply to author
Forward
0 new messages