1 件の投稿を表示中 (合計 19 個)
  • 作成者
    投稿
  • #3969
    naya
    参加者

    開いているファイルのサイズをEmEditer本体を開いている
    状態で知る術があったら教えてください.

    たとえば,IE7からEmEditorでソースを表示した際に,
    保存しないとHTMLのサイズを知ることはできませんか?

    #3970
    snow
    参加者

    「ファイルの」サイズは保存時の文字コードや改行コードで変わりますから、保存前には知りようがないと思います。

    #3994
    yunoki
    メンバー

    ファイル全体を選択して、TextInformationプラグインを実行することで、ファイルサイズが求められると思います。

    下記のようなマクロを 拡張子jseeで保存し、実行することでもファイルのサイズがチェックできるようになります。

    document.selection.SelectAll();
    data=document.selection.Text;
    document.selection.Collapse();
    alert(data.length);

    #3996
    naya
    参加者

    snowさん,yunokiさん,レスありがとうございました.

    とりあえず,TextInformationプラグインでの解決が
    容易そうですが,マクロもいいですね.

    併用してよさそうなのを使いたいと思います.
    ありがとうございました,

    #4001
    takuya
    参加者

    data.length だと2バイト文字も1文字で数えるんじゃないのかな?なのでサイズじゃなくて文字数が返って来る気がするけど。

    間違っていたらゴメンナサイ。

    #4002
    yunoki
    メンバー

    それもそうですね。

    一応2バイト文字対応版、おいておきますね。

    2バイト文字数判定部分については、こちらを参考にしています。
    http://www.geocities.co.jp/SiliconValley/4334/unibon/javascript/jslen.html
    SJIS以外のコードのカウントはプログラムを修正する必要があります。
    ま、プラグイン使えばすむので、この件はここまでにさせてください。

    document.selection.SelectAll();
    data=document.selection.Text;
    document.selection.Collapse();
    alert(myLen(data));

    function myLen(s) {
    var r = 0;
    for (var i = 0; i = 0x0 && c = 0xff61 && c = 0xf8f1 && c < 0xf8f4)) {
    r += 1;
    } else {
    r += 2;
    }
    }
    return r;
    }

    #4005
    匿名
    ゲスト

    「何のサイズ」を知りたいのかを、明確にしないと、明確な答えはないと思いますよ。
    そもそもEmEditorは内部では、全てUnicodeのはずです。

    様々な種類のエンコードのファイル

    Unicodeへマッピングして、EmEditorメモリ上に保持。

    保存時指定(通常は開いた時の自動判定エンコード)のエンコードで保存。

    と言う流れですから、document.selection オブジェクトに対して操作しても、それは
    Unicodeのサイズになってしまいます。
    2byte文字とかの概念すらなく、一文字は全て固定サイズ(Unicode良く分かってないの
    で、厳密には違うかもしれないですけど)になると思いますよ。
    Ctrl+I で見る限り、16進数4桁なので内部は1文字 2byte なのかなと思いますけど、
    そうすると、

    alert( document.selection.Text.length * 2 );
    で求められるような気もします。

    また、一文字「あ」だけのUTF-8ファイル を、想定しても、Bomがある時とない時、「ファ
    イルのサイズ」は変わりまし、UTF-8では、保存すると「あ」は3バイトですし。

    結局、Snowさんの言うとおり、保存してみるまで分からないという事です。
    ですから、マクロで、改行コード、エンコード指定して一時ファイルとして別名保存
    して、マクロのActiveXでファイルのサイズを取得するとかしないと、保存した時のサイズはどうしようもないはずです。

    perl だったら、外部ツールで「ファイルを保存するをオン」にして
    以下のコマンド実行でバイト数出せると思いますけど。

    cmd /k perl -e “print -s ‘$(Path)’;”

    #4006
    yunoki
    メンバー

    >

    perlerさんは書きました:
    と言う流れですから、document.selection オブジェクトに対して操作しても、それは
    Unicodeのサイズになってしまいます。

    SJISでファイルを作成し、前述したマクロで動作確認をしましたが、Unicode単位でのカウントにはならず、実際に保存されたときのファイルサイズと一致しましたけど、それとは別の話でしょうか?

    #4007
    匿名
    ゲスト

    あぁ、そうなんですか。
    sjisで保存すると、バイト志向動作になるんですね、、。
    いつもUnicodeで保存していたので、EmEditorは文字単位志向なんだと思い込んでいました。
    保存エンコードで動作が変わるなどとは全く知らなかったです。
    ちょっと目から鱗です。

    私が間違っていましたので、どうもすいません。

    ただ、コードが間違っていると指摘したのではなくて、
    何のサイズを求めたいのか(エンコードなど)はっきりさせないと、
    サイズを求めるのはほとんど無理と言うことを言いたかっただけですので、悪く思わないでください。

    それから、外部ツールの例は良く考えたら、全く意味がないので無視してください。
    保存したら本体でステータスバーにサイズでますよね。

    #4010
    匿名
    ゲスト

    ああ、なんか的外れな事言ってますね。すいません。
    つまりですね、私が言ったことは、yunoki さんのそのコードそのもののことですよ。
    そのコードがやっていることは正しくて、EmEdtor上ではUnicodeなので、保存後のエンコ
    ードが分からないと、サイズは出せないですよねって事だけです。
    どのエンコードか、Bomはつけるのか、改行コードは何か、などがきまれば、そのような
    コードで対応するエンコードとのバイト数対応表で一旦保存することなく出せると言うこ
    とです。

    ただ事実上、エンコード一杯ありすぎて、マクロで記述するのは現実的じゃないので、一
    旦保存してサイズ取得するほうがいいとは思いますが^^;

    どうも私、返信する場所を間違えたようで、yunokiさんのコードに対するレスポンスのよ
    うに受け取られたようですが、そのコードに対して返事したわけじゃないんです^^;
    フラット表示なので、だーと上から下まで読んで、思ったことを一番下にあった返事ボタ
    ンで返事しちゃったので、すいません。

    話は変わりますが、ファイルを保存した時は、ステータスバーにサイズが出るのに、
    ファイルを開いた時には出ないのは、何か理由があるんですかね?
    ファイルを開いた時に、ファイルサイズが出れば、nayaさんの悩みの半分くらいは解決す
    るような。

    # このフォーラム戻るが利かないようで、書きかけの内容が全部パーになっちゃうんですけど、仕様なんですかね。
    もう10回以上は、投稿失敗でふいにしてます、、、
    外部エディタEmEditorにしてますけど、ついついフォームのほうに書いちゃうこともあるので。:-(

    #4012
    naya
    参加者

    perler さん,いろいろなアドバイスや情報ありがとうございました.
    元質問に書いたように,
    たとえば,ブラウザから表示したソースを保存せずとも
    どれくらいのサイズなのかを知れたらいいという場面が
    ありまして,当面はyunokiさんにご教示いただいた
    TextInfomationプラグインで解決することにしました.

    「保存した時は、ステータスバーにサイズが出るのに、
    ファイルを開いた時には出ない」
    →これは確かに,開いたときに出れば本件に関しては
    解決する話だと思います.

    #4013
    匿名
    ゲスト

    いえ、どうもこちらこそすいません。
    このフォーラムの仕組みがまだいまいち良く分かってないのと、
    文章簡潔にまとめるのが下手なもので、話が妙な方向にいってしまって。
    結局、皆さんが言っていることを、自分なりの解釈でまとめただけだったのですが^^;

    TextInfomation 以前使ってた記憶ありますけど、v6入れなおして
    から使ってないので不明確ですが、何種類かのエンコードのバイト数は表示していたかも
    しれませんね。少なくともUTF-8はあったような。

    数は少ないでしょうけど、ソースの表示で開いたファイルのエンコードが、ISO-2022だっ
    たとします。その場合に、「開いているファイルのバイト数をしりたい」が(改行コード
    は混在を保持するとして)、ISO-2022で保存した場合に何バイトになるのか知りたいのか、
    どんなエンコードでもオーソドックスにShift-Jisのバイト数が分かれば良いのか、それ
    ともメモリ上のUnicodeとしてのバイト数が分かれば良いのかって事だと思います。

    yunokiさんのマクロみたいな方法もあるのですが、ISO-2022とかだと、相当難しいと思い
    ます。ISO-2022の場合、日本語と英字などの区切りで文字とは無関係の制御文字の挿入が
    あり、どこからどこまでは日本語で、どこからどこまでが英字だと言う仕組みだったはず
    です。

    そうすると、次の文字などをみて色々判断しなくてはならなくなります。
    例えば、以下の二つの文字列は、Shift_jisだと同バイト数ですが、ISO-2022だとバイト
    数が異なります。

    aあaい 18byte
    aあいa 12byte

    #4014
    匿名
    ゲスト

    >「保存した時は、ステータスバーにサイズが出るのに、
    >ファイルを開いた時には出ない」

    すいません、今確認したら、ちゃんとバイト数出てます。
    タブ切り替えて戻ったら消えてしまうのと、たまたまマウスがURLに重なっていたりしてURLを表示されて、出ないと思っちゃったみたいです。
    :-o

    #4015
    naya
    参加者

    >今確認したら、ちゃんとバイト数出てます。

    本当ですね,今まで気づきませんでした.

    今後は開いた瞬間に確認することとします.

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

    #4028
    takuya
    参加者

    最初、バイト数表示されていても、ステータスバーが書き換わっちゃうと、バイト数表示に戻らないことが原因だったのですね。これって再現可能なので不具合報告にあげた方が良いのじゃないでしょうか?

    #4029
    naya
    参加者

    通常,IE7のソース表示をすると,ステータスバーの表示が

     32.4KB (33,258 バイト), 527行

    のようになりますが,エクスプローラプラグインをONの状態だと

     種類: システムフォルダ 更新日時:1601/01/01 9:00 サイズ:0バイト

    のようにサイズが取得できません.仕様なら了解ですが,何か動作が異なるので
    念のためご報告まで.

    #4038
    Yutaka Emura
    キーマスター

    Explorer プラグインでは、選択されているファイルの種類、更新日などを表示するほうが優先されてしまうので、こうなってしまいますね。Explorer プラグインの中でファイルをキーボードで選択して Enter を押して開けば、サイズと行数が表示されます。将来的には、どちらを優先するかを選択できるようにしたいと思います。

    #4052
    匿名
    ゲスト

    >最初、バイト数表示されていても、ステータスバーが書き換わっちゃうと、バイト数表示に戻らないことが原因だったのですね。これって再現可能なので不具合報告にあげた方が良いのじゃないでしょうか?

    これは不具合と言うよりは、仕様なんだと思います。
    マクロでみるとWindow.status なので、ドキュメントごとではなく、ウィンドウにひとつなんですよ。
    おそらくパフォーマンス的なことでそうしてるんだと思います。
    document.status みたいなのがあると良いかなと思いますけど、
    それはそれで大変なんでしょうね。
    マクロ書くほうも結構管理が大変かもしれないし、Widnow.statusのほうが便利なこともありそうですしね。

    #4053
    匿名
    ゲスト

    すいません、また返信場所間違えてしまいました、、、。
    以後気をつけます、、、。

1 件の投稿を表示中 (合計 19 個)
  • このトピックに返信するにはログインしてください。