だぶりの削除No.04141
梅吉君 さん 99/10/06 00:42
 
1万件のメイルアドレスが縦にずらりと並んでいます。
(行番号表示の最後は10000になるという意味です)
しかし、この中にだぶったアドレスがあります。
これを削除する方法はあるのでしょうか?


[ ]
RE:04141 だぶりの削除No.04149
秀丸担当 さん 99/10/06 18:57
 
>1万件のメイルアドレスが縦にずらりと並んでいます。
>(行番号表示の最後は10000になるという意味です)
>しかし、この中にだぶったアドレスがあります。
>これを削除する方法はあるのでしょうか?

通常の検索機能やgrepではできません。
マクロを作成すればある程度可能になると思います。
以前にそのようなマクロを作られた方がいたと思うのですが。

[ ]
RE:04141 だぶりの削除No.04154
ひろ さん 99/10/06 19:17
 
 梅吉君さん今日は、ひろです。
> 1万件のメイルアドレスが縦にずらりと並んでいます。
 実際の data が解らないとどの様にするか解らないです。email address
のみがならんでいるということでしたらおそらく可能だと思います。

[ ]
RE:04141 だぶりの削除No.04155
番頭++ さん 99/10/06 19:41
 
>1万件のメイルアドレスが縦にずらりと並んでいます。
>(行番号表示の最後は10000になるという意味です)
>しかし、この中にだぶったアドレスがあります。
>これを削除する方法はあるのでしょうか?

「案一」

//*5    KZ_MtDel1.mac を次のように変更してください。

        //  enableinvert;   enabledraw;
            message $wk1 + " - は見つかりませんでした !";
            addclipboard $wk1 + "\n";   //  クリップボードに書いておく
            #del_n = #del_n + 1;

        //  enableinvert;   enabledraw;
        //  message $wk1 + " - は見つかりませんでした !";
        //  addclipboard $wk1 + "\n";   //  クリップボードに書いておく !
            gofileend;
            if( x != 0 ){ insert "\n"; }
            insert $wk1 + "\n";
            #del_n = #del_n + 1;
です。KZ_MtDel31.mac にしてください。

それで、削除メタデータファイルに一万件をいれます。
削除の対象となるファイルを空にして、このマクロ KZ_MtDel31.mac を実行する。
ただ、ひたすら遅いです。

[ ]
RE:04141 だぶりの削除No.04156
Arimac さん 99/10/06 19:45
 
>1万件のメイルアドレスが縦にずらりと並んでいます。
>(行番号表示の最後は10000になるという意味です)
>しかし、この中にだぶったアドレスがあります。
>これを削除する方法はあるのでしょうか?

並び替えても良いならソートして重複行を
削除すれば良いのではないでしょうか?
そういうマクロがライブラリにあったような
気がします。

[ ]
RE:04155 だぶりの削除No.04157
番頭++ さん 99/10/06 19:46
 
>「案一」

「案二」

一般的には、元データをソートして、同じ行を削除します。
MS-DOS のソートは、ファイルのサイズに制限がありますから、
Vector とかのサイトで、ソートプログラムを探してください。
「同じ行を削除」は処理が遅いのですが b0.mac でも出来ます。

一般的なソートではメールアドレスをサイトでソートできません。
b4.mac は a@b ==> b@a に入れかえる処理です。その後ソートして、
また b4.mac で b@a ==> a@b に入れかえます。少しは見やすいでしょう ...

//  b0.mac
//  "Delete Same Line "
ppkn_del_same_line1:
    question "Delete Same Line ?";
    if( ! result ){ endmacro;   }
    escape; gofiletop;  disabledraw;    disableinvert;
    selectline; // delete same line - 行
    $wk1 = gettext(seltopx,seltopy,selendx,selendy);
    escape; down;
    while( code != eof){
        selectline; // delete same line - 行
        $wk2 = gettext(seltopx,seltopy,selendx,selendy);
        escape;
        if( $wk1 == $wk2 ){
            deleteline;
        } else {
            $wk1 = $wk2;    down;
        }
    }
    gofiletop;  enabledraw;
endmacro;

//  b1.mac
//  空白、スペース、タブを削除 
    if( code == 0x09 ){ endmacro;   }   //  debug
    replaceallfast "[\\t\x20\x81\x40]+", "", regular, inselect;
//  改行だけの行を削除
    replaceallfast "^\n", "", regular, inselect;
    gofiletop;
endmacro;

//  b2.mac
//  行末の .or.jp ==> .ne.jp に置換 
    replaceallfast "\\.or\\.jp$", ".ne.jp", regular, inselect;
//  gofiletop;
endmacro;

//  b3.mac - ヲィヲィ、そんなメールアドレスが !!!
    gofiletop;
//  searchdown "^[^@]+$", regular;  //  @ を含まない行
//  searchdown "^.*@.*@.*$", regular;   //  @ を 2 個以上含む行
//  searchdown "^@.*$", regular;    //  @ で始まる行
//  searchdown "^.*@$", regular;    //  @ で終わる行
    searchdown "^(.*@.*@.*|@.*|.*@|[^@]*)$", regular;   //  上のまとめ
    if( result ){
    localgrep  "^(.*@.*@.*|@.*|.*@|[^@]*)$", regular;   //  上のまとめ
    }
endmacro;

//  b4.mac
//  a@b ==> b@a に入れかえる
    if( code == 0x09 ){ endmacro;   }   //  debug
    replaceallfast "^[^@]+\\f@\\f.+$", "\\2@\\0", regular, inselect;
//  gofiletop;
endmacro;

この件はこれでおしまいです。
あと、「マクロの会議室」に質問してください。


[ ]
RE:04157 だぶりの削除No.04159
番頭++ さん 99/10/06 20:31
 
>Vector とかのサイトで、ソートプログラムを探してください。

http://www.vector.co.jp/soft/dos/util/se007577.html

xsort です。テストはしていません、でも昔の 1994 xsort !!!


[ ]
RE:04141 だぶりの削除No.04160
安久津 さん 99/10/06 21:24
 
こんにちは梅吉さん安久津といいます。

>1万件のメイルアドレスが縦にずらりと並んでいます。
>(行番号表示の最後は10000になるという意味です)
>しかし、この中にだぶったアドレスがあります。
>これを削除する方法はあるのでしょうか?
たんに1論理行に1アドレスなら次ぎのマクロで大丈夫だと思います。

  disabledraw;
  ##interval = 1000;
  ##tickcount = tickcount;
  escape;
  gofileend; insert "\n\n\n"; $$end = " / " + str(lineno);
  gofiletop; insertfix "\n";
  searchdown "^.+$", regular;
  while( result ){
    $$address = gettext( seltopx, seltopy, selendx, selendy );
    escape;
    ##address = lineno;
    call replaceS2withS3 $$address, ".", "\\.";
    $$address = $$return;
// 他にメタキャラクタありますか?
    movetolineno 1, lineno + 1; beginsel; gofileend;
    replaceallfast "^" + $$address + "\\n", "", regular, inselect;
    escape;
    movetolineno 1, ##address; golineend2;//気分的に行末へ
    if( (tickcount - ##tickcount) > ##interval ){
      title str(lineno) + $$end;
      ##tickcount = tickcount;
    }
    searchdown "^.+$", regular;
  }
  replaceallfast "^\\n", "", regular;//空行バイバイ
  gofiletop;
  beep; //最後屁
endmacro;
/////
replaceS2withS3:
  $$ret = "";
  ##len2 = strlen( $$2 );
  while( 1 ){
    ##k = strstr( $$1, $$2 );
    if( ##k == -1 ){
      $$ret = $$ret + $$1;
      break;
    }
    $$ret = $$ret + leftstr( $$1, ##k ) + $$3;
    $$1 = midstr( $$1, ##k + ##len2, strlen($$1) - ##k - ##len2 );
  }
return $$ret;
// end of replaceS2withS3
/////

次のようなデータは書き直さないとダメです。
アドレス,名前,会社名,所属名
アドレス[TAB]名前[TAB]会社名[TAB]所属名

ではでは。
#置換は選択するになっていないとダメ。点滅の人ってどんなひと?

[ ]
RE:04141 だぶりの削除No.04162
杉浦 まさき さん 99/10/06 23:39
 
梅吉君、はじめまして。
杉浦 まさき と申します。

既に大勢の方からレスがついているんですが…

>1万件のメイルアドレスが縦にずらりと並んでいます。
>(行番号表示の最後は10000になるという意味です)
>しかし、この中にだぶったアドレスがあります。
>これを削除する方法はあるのでしょうか?

秀丸(マクロ)ではなくてアレですが(^^;、
sort と uniq という(MS-DOS プロンプトで動作する)ツールを
組み合わせるのが一番速いです。
#両方とも Vector のサイトに(いっぱい(^^;)あります。


[ ]
RE:04141 だぶりの削除No.04163
きいろいまふらあ さん 99/10/06 23:50
 
きいろいまふらあです。

私なら、Excelにはっつけてソートして
となりの列に「左とその上は同じか?」みたいな式入れて
そのとなりの列でフィルタかけて
データの入ってる列をコピーして
エディタにはっつけます。

これが一番頭使う時間が短くて済むから。(^^;

[ ]
RE:04160 だぶりの削除No.04164
安久津 さん 99/10/07 01:32
 
風呂はいって気づきました。変更します。

  disabledraw;
  ##interval = 1000;
  ##tickcount = tickcount;
  escape;
  gofileend; insert "\n\n\n"; ##end = lineno;
  gofiletop; insertfix "\n";
  searchdown "^.+$", regular;
  while( result ){
    $$address = gettext( seltopx, seltopy, selendx, selendy );
    escape;
    ##address = lineno;
    call replaceS2withS3 $$address, ".", "\\.";
    $$address = $$return;
// 他にメタキャラクタありますか?
    movetolineno 1, lineno + 1; beginsel; gofileend;
    replaceallfast "^" + $$address + "\\n", "", regular, inselect;
    ##end = ##end - result;
    escape;
    movetolineno 1, ##address; golineend2;//気分的に行末へ
    if( (tickcount - ##tickcount) > ##interval ){
      title str(lineno) + " / " + str(##end);
      ##tickcount = tickcount;
    }
    searchdown "^.+$", regular;
  }
  replaceallfast "^\\n", "", regular;//空行バイバイ
  gofiletop;
  beep; //最後屁
endmacro;
/////
サブルーチン replaceS2withS3 は省略
実際に1万行でテストしたらなかなか速いです。
ではでは。

[ ]
RE:04159 だぶりの削除No.04171
番頭++ さん 99/10/07 12:58
 
>>Vector とかのサイトで、ソートプログラムを探してください。

http://www.vector.co.jp/soft/win95/util/se089867.html
テキストファイルソータ
    txtsort.lzh

http://www.vector.co.jp/soft/win95/util/se090985.html
クリップボード対応テキストソート
    ssrt3213.lzh
    -u 重複データは削除する
ssrt32.exe これがお勧めです。

//*1    c1.mac
    disableinvert;   disabledraw;
    if( ! existfile(hidemarudir+"\\ssort32.exe") ){
        message "ssort32.exe を秀丸のディレクトリにおいてください !!!";
        endmacro;
    }
    replaceallfast "[\\t\x20\x81\x40]+", "", regular, inselect;
    replaceallfast "^\n", "", regular, inselect;
    replaceallfast "^[^@]+\\f@\\f.+$", "\\2@\\0", regular, inselect;
//  run "ssort32.exe -u -f a2.txt -o a5.txt";
//  runsync2 "ssort32.exe -a+ -u -f a2.txt -o a5.txt";
    selectall;  cut;
    runsync2 hidemarudir + "\\ssort32.exe -u -a+ "; //  ClipBoard to ClipBoard
    paste;
    replaceallfast "^[^@]+\\f@\\f.+$", "\\2@\\0", regular, inselect;
    setclipboard "";    //  clear ClipBoard
    gofiletop;
endmacro;

[ ]
RE:04171 だぶりの削除No.04176
番頭++ さん 99/10/07 17:42
 
>>>Vector とかのサイトで、ソートプログラムを探してください。

//*5    KZ_ClipB_Sort1.mac - 1999/10/07 - K.N.

//  http://www.vector.co.jp/soft/win95/util/se090985.html
//  クリップボード対応テキストソート
//      ssrt3213.lzh を使用させて頂いています。
//      -r  降順ソート (デフォルト - 昇順ソート)
//      -u  重複データは削除
//  runsync2 "ssort32.exe -a+ -u "; //  ClipBoard to ClipBoard
//  runsync2 "ssort32.exe -a+ -u -f a2.txt -o a3.txt";
//  run "ssort32.exe -u -f a2.txt -o a3.txt";

//  指定のディレクトリ - 秀丸のディレクトリにしておきます。変更してください !
    $tools_dir1 = hidemarudir+"\\ssort32.exe";
    if( ! existfile($tools_dir1) ){
        message "ssort32.exe を指定のディレクトリに置いてください !";
        endmacro;
    }
    if( ! selecting ){
        $wk1 = "全選択、または行単位の範囲選択をしてください !";
        message $wk1 + " - 選択を開始します。"; //T しつこいかなぁ !
        if( iskeydown( 0x1B ) ){    //  [Esc]
            escape; endmacro;
        }
        inputpos filename2 + " - " + $wk1 + " - [Esc] でキャンセル";
        if( iskeydown( 0x1B ) ){    //  [Esc]
            escape; endmacro;
        }
    }
    if( ( ! selecting ) || ( seltopx + selendx ) != 0 ){
        if( selecting ){
            message "全選択、または行単位の範囲選択をして、実行してください !";
        }
        endmacro;
    }
    #y = seltopy;
    #sw_del_dup = false;    //  default + "しない"
    $menu1[00] = "ソートしますか ? - [Esc] でキャンセル";
    $menu1[01] = "(&S) - 昇順 で開始";
    $menu1[02] = "(&K) - 降順 で開始";

pp_loop1:
    $menu1[03] = "(&O) - オプション 重複削除 : ";
    if( #sw_del_dup == true ){
        $menu1[03] = $menu1[03] + "する";
    } else {
        $menu1[03] = $menu1[03] + "しない";
    }
    menuarray $menu1, 3 + 1;
    #result = result;
    if( #result <= 01 ){    goto pp_exit1;  }
    if( #result == 04 ){
        #sw_del_dup = ! #sw_del_dup;    goto pp_loop1;
    }
    cut;    
    $wk1 = $tools_dir1 + " -a+ ";   //  自動実行
    if( #result == 03 ){    $wk1 = $wk1 + "-r ";    }   //  降順
    if( #sw_del_dup ){  $wk1 = $wk1 + "-u ";    }   //  重複削除
//T message $wk1;
    runsync2 $wk1;
    paste;
    setclipboard "";    //  clear ClipBoard

pp_exit1:
    escape; moveto 0, #y;
endmacro;
// end of macro.

[ ]
RE:04164 だぶりの削除No.04180
梅吉君 さん 99/10/08 02:05
 

>サブルーチン replaceS2withS3 は省略
>実際に1万行でテストしたらなかなか速いです。
>ではでは。

お世話になります

試してみましたら下記のようになりました。
go/to飛び先が見つかりません。飛び先replaceS2withS3と表示されます。
どのように対処したらよいでしょうか?

[ ]
RE:04180 だぶりの削除No.04181
安久津 さん 99/10/08 03:39
 
こんにちは梅吉君さん安久津です。

>go/to飛び先が見つかりません。飛び先replaceS2withS3と表示されます。
>どのように対処したらよいでしょうか?
梅吉君さんはマクロ初心者ですね。
次のマクロを使って下さい。#また変更しています。

//ここから、マクロ始まりです。
  disabledraw;
  ##interval = 1000;
  ##tickcount = tickcount;
  escape;
  gofileend; insert "\n\n\n"; ##end = lineno;
  gofiletop; insertfix "\n";
  replaceallfast ".", "。"; //細工
  gofiletop;
  searchdown "^.+$", regular;
  while( result ){
    $$address = gettext( seltopx, seltopy, selendx, selendy );
    escape;
    ##address = lineno;
    movetolineno 1, lineno + 1; beginsel; gofileend;
    replaceallfast "^" + $$address + "\\n", "", regular, inselect;
    ##end = ##end - result;
    escape;
    movetolineno 1, ##address; golineend2;//気分的に行末へ
    if( (tickcount - ##tickcount) > ##interval ){
      title str(lineno) + " / " + str(##end);
      ##tickcount = tickcount;
    }
    searchdown "^.+$", regular;
  }
  replaceallfast "。", ".";
  replaceallfast "^\\n", "", regular;//空行バイバイ
  gofiletop; title 0;
  beep; //最後屁
endmacro;
//ここでマクロ終りです。

これよりも番頭++さんの紹介されている Ssort32.exe を使った方が
ほんとはいいんですけど。段違いなんです。

ではでは。


[ ]
RE:04176 だぶりの削除No.04182
安久津 さん 99/10/08 04:19
 
こんにちは番頭++さん、たびたびお世話になっている安久津です。

>ssort32.exe これがお勧めです。
号泣。(ToT)

// 私のはここ。
  $$program = "C:\\Program2\\ssrt3213\\Ssort32";
  if( !selecting ){
    message "選択していません。"; endmacro;
  }else if( (seltopx + selendx) != 0 ){
    message "行単位の選択ではありません。"; endmacro;
  }
  ##cx = x; ##cy = y;
  ##KOUJUNN = 0; ##DEL_SAME_LINE = 0;
  ##COLUMN  = 1; ##NUMBER  = 0;
  ##CSV     = 0;
  $$mi[00] = "<< Ssort32.exe >>";
  $$mi[06] = "&M ソート実行";
  $$mi[07] = "&N 終了 ( ESC )";
  RE_MENU:
  if( ##KOUJUNN ) $$mi[01] = "&1 順序 小さい順 /【大きい順】";
  else $$mi[01] = "&1 順序【小さい順】/ 大きい順";
  if( ##NUMBER )  $$mi[02] = "&2 扱い  文字列 /【数値】";
  else $$mi[02] = "&2 扱い 【文字列】/ 数値";
  if( ##CSV ){
    $$mi[03] = "&3 ファイル 普通 /【CSV】";
    $$mi[04] = "&4 比較位置 フィールド " + str(##COLUMN);
  }else{
    $$mi[03] = "&3 ファイル【普通】/ CSV";
    $$mi[04] = "&4 比較位置 行の "+str(##COLUMN) + " 文字目から";
  }
  if( ##DEL_SAME_LINE ) $$mi[05] = "&5 同一行削除【する】/ しない";
  else $$mi[05] = "&5 同一行削除 する /【しない】";

  ##end = 8;
  menuarray $$mi, ##end;
  ##item = result - 1;
  ##end = ##end - 1;
  if( ##item <= 0 || ##item == ##end ){
    endmacro;
  }else if( ##item <= 5 ){
    if( ##item == 1 ){
      ##KOUJUNN = ##KOUJUNN ^ 0x01;
    }else if( ##item == 2 ){
      ##NUMBER = ##NUMBER ^ 0x01;
    }else if( ##item == 3 ){
      ##CSV = ##CSV ^ 0x01;
    }else if( ##item == 4 ){
      if( ##CSV )
 $$mes = "比較位置のフィールド番号を入力して下さい。\n先頭が1です。";
      else
 $$mes = "行の何文字目から比較しますか?。\n先頭が1です。";
      $$tmp = input( $$mes, str(##COLUMN) );
      if( result && ($$tmp != "") ){
        ##tmp = val( $$tmp );
        if( ##tmp < 1 ) ##tmp = 1;
        else if( ##tmp > 1024 ) ##tmp = 1024;
        ##COLUMN = ##tmp;
      }
    }else if( ##item == 5 ){
      ##DEL_SAME_LINE = ##DEL_SAME_LINE ^ 0x01;
    }
    goto RE_MENU;
  }

  $$option = " -a+"; // 自動実行
  if( ##KOUJUNN ) $$option = $$option + " -r";
  if( ##DEL_SAME_LINE ) $$option = $$option + " -u";
  $$option = $$option + " -" + str(##COLUMN);
  if( ##NUMBER ) $$option = $$option + "n";
  if( ##CSV ) $$option = $$option + "f";
disabledraw;
  cut;
  runsync2 $$program + $$option;
//  runsync $$program + $$option; //アイコン化して待機
  paste; setclipboard "";
  moveto ##cx, ##cy;
  beep;

endmacro;
// おわり

(標準入出力の)このプログラム良いなと思っても Win95 だと
秀丸マクロから使えないことがあって面食らいます。(--;
クリップボード入出力だと最高!( 排他的でないけど )
#こっちの水は甘いぞ>梅吉君さん

ではでは。
# 寝なきゃ。

[ ]
RE:04182 だぶりの削除のダブリNo.04185
番頭++ さん 99/10/08 15:04
 
>号泣。(ToT)

> クリップボード入出力だと最高!( 排他的でないけど )

秀丸がメインのソフトなので、マクロもシングルランなので、うちでは問題無い
です。SSORT32 はファイルも扱えます。

問題は、間違っている原本(マスター)に修正(トランザクション)をするから
なんです。梅吉君さんがやりたいことをはじめから見ているので、梅吉君さんか
ら質問されるより、こちらから指示を出したいくらいです。土曜日に会社 (東京
) で処理してあげましょうか。うそです。携帯の電話番号を書くのは止めましょ
う。<== 冗談ですが ...

最初に「ソートされてますか ?  」と言わなかったあちきのミスなのですが。本
当は、はじめにソートしてデータ処理を行うのですが、ですからはじめの削除処
理も、検索後の削除にしたのですが、大事なデータは、ソート後、マッチングで
削除して件数を確認してログを作成するのがいわゆる  EDP の原則です。秀丸も
人の子、あちきのマクロも人の子です。間違いはあります。大事なデータはマク
ロで処理して、処理前と処理後の差分をとって目で確認しています。

梅吉君さんに、出来れば、次の意味を理解していただきたいのですが、
メールアドレスのソートに関係するんです。

    searchdown "^(.*@.*@.*|@.*|.*@|[^@]*)$", regular;   //  上のまとめ
    if( result ){
        localgrep  "^(.*@.*@.*|@.*|.*@|[^@]*)$", regular;   //  上のまとめ
        endmacro; // やめる
    }
    replaceallfast "^[^@]+\\f@\\f.+$", "\\2@\\0", regular, inselect;
    //・・・その後ソート ...

それで、RE:04171 を書いたのですが。
あとは阿久津さんにバトンを渡そうかな !!! <== 冗談ですが ...
梅吉君さんがなにをやりたいのかは、
「 RE:04084 99/09/30 15:03  一括削除につきまして 」から始まりますです。

余談モードです。

ソートは 1994 頃から、MS-DOS の XSORT を使っていました。今でもそれは使っ
ています。1995 頃からは秀丸から CBSORT を呼ぶようになりましたが 64 KB の
制限があります。MS-DOS の同一行の削除は簡単なので、自分で C で書きました。
今年の初めに  SSORT32 に出会いましたが、昨日までは秀丸からは使いませんで
した。

昨日の夜、すごくショックな事がありました。久々に IME の辞書 約 30,000 件
の名前の辞書を SSORT32 でソートしました。すると XSORT との結果と違うんで
す。実は、XSORT は 1994 年にはバグがあったのだそうです。漢字のソートに間
違いが在るみたいなんです。最新のバージョン XSORT は正常です。

あちきはこの五年間  XSORT を使い続けたわけですから FEP, IME の辞書は正常
に昇順にソートされていないことになります。仕事では漢字のソートはまれです。
もし間違っていても、間違ったもので大小比較を行わない限り支障はないし ...

でも、かなり落ち込んだ ...

[ ]
RE:04185 だぶりの削除のダブリNo.04191
安久津 さん 99/10/08 18:54
 
こんにちは番頭++さん、安久津です。

>梅吉君さんに、出来れば、次の意味を理解していただきたいのですが、
>メールアドレスのソートに関係するんです。
>
>    searchdown "^(.*@.*@.*|@.*|.*@|[^@]*)$", regular;   //  上のまとめ
>    if( result ){
>        localgrep  "^(.*@.*@.*|@.*|.*@|[^@]*)$", regular;   //  上のまとめ
>        endmacro; // やめる
>    }
>    replaceallfast "^[^@]+\\f@\\f.+$", "\\2@\\0", regular, inselect;
>    //・・・その後ソート ...
そう言えば、昨年と今年でドメイン変更が頻発しました。
# or.jp -> ne.jp とか。
無効なものをあぶり出すためにも、この置換はやっておいた方が良いですね。

#アットマーク"@"の後ろの文字列はファイル管理のフォルダに相当します。
#アットマークの前の文字列はファイル名に相当します。
#この置換はやった方が良いです。>梅吉さん

>梅吉君さんがなにをやりたいのかは、
>「 RE:04084 99/09/30 15:03  一括削除につきまして 」から始まりますです。
全く、気づきませんでした。
ずっと野球のことで頭がいっぱいだったもんで。
# 最近正気に戻った。(^^)

>あちきはこの五年間  XSORT を使い続けたわけですから FEP, IME の辞書は正常
>に昇順にソートされていないことになります。仕事では漢字のソートはまれです。
>もし間違っていても、間違ったもので大小比較を行わない限り支障はないし ...
番頭++さんの仕事で作成したものに、そのデータが入っているのでしょうか?

>でも、かなり落ち込んだ ...
5年間ですからね。(--;

私も余談モード
[1] \x81E3\x81DA\x81BF\x81BE\x81E7\x81E6\x81E0\x81DF\x81DB
[2] \x8795\x8797\x879B\x879C\x8792\x879A\x8790\x8791\x8796
秀丸で $$ch1 < $$ch2 を使ってみると、文字コード順ではないんですね。
ヘルプでは文字列の比較演算ができるとは一言も書いていないんですけど。
ascii($$ch1) < ascii($$ch2) と、結果が異なる。あたりまえか。

以下にはちょっとビックリしました。
$$st1="\x81\xE3\x81\xDA\x81\xBF\x81\xBE\x81\xE7\x81\xE6\x81\xE0\x81\xDF\x81\
xDB";
$$st2="\x87\x95\x87\x97\x87\x9B\x87\x9C\x87\x92\x87\x9A\x87\x90\x87\x91\x87\
x96";
  if( $$st1 == $$st2 ) message "同じです。"; //(1)
  else if( $$st1 < $$st2 ) message "$$st1 < $$st2"; //(2)
  else if( $$st1 > $$st2 ) message "$$st1 > $$st2"; //(3)
  else message "比較できない。"; //(4)

結果は(1)です。

一方、検索では
searchdown $$st1;
をつかっても、$$st2 にはマッチしません。

ということは、重複行の削除に == を使って削除する場合と、
置換や検索を使って削除する場合とで、動作が異なることになります。
# 重複行が 0x8740-0x879C 0xED40-0xEEEC 0xEEEF-0xEEFC 0xF040-0xF9FC
# 0xFA5C-0xFC4B あたりの文字を使っていた場合の話。

ではでは。


[ ]
RE:04191 だぶりの削除のダブリNo.04198
番頭++ さん 99/10/09 11:18
 
こんにちは安久津さん。

>番頭++さんの仕事で作成したものに、そのデータが入っているのでしょうか?

在りません。個人の辞書だけだと思います。そう信じないと、また落ち込みます ...

>秀丸で $$ch1 < $$ch2 を使ってみると、文字コード順ではないんですね。

$st1="\x81\xe3\x81\xda\x81\xbf\x81\xbe\x81\xe7\x81\xe6\x81\xe0\x81\xdf\x81\x
db";
$st2="\x87\x95\x87\x97\x87\x9b\x87\x9c\x87\x92\x87\x9a\x87\x90\x87\x91\x87\x
96";
menu $st1, $st2;
newfile; insert "\n" + $st1 + "\n" + $st2 + "\n";
gofiletop; searchdown $st1;
gofileend; insert searchbuffer + " - $st1 \n";
gofiletop; searchdown $st2;
gofileend; insert searchbuffer + " - $st2 \n";
endmacro;

はじめて知りました。

>ということは、重複行の削除に == を使って削除する場合と、
>置換や検索を使って削除する場合とで、動作が異なることになります。

「紙にして、目で確認 ... 」は今でも活きていますです。

時の記憶ですが、
    left 0;
    message str(result);    //  1 ですか ???
    left 1/3;
    message str(result);    //  1 ですか ???
たまたま、計算間違いをしました ...

[ ]
RE:04176 だぶりの削除No.04234
番頭++ さん 99/10/13 12:08
 
>//  http://www.vector.co.jp/soft/win95/util/se090985.html
>//  クリップボード対応テキストソート
>//      ssrt3213.lzh を使用させて頂いています。

Si さん、SSORT32 の作者に質問をしました。その回答 (一部) です。

http://member.nifty.ne.jp/dahlia/

>> 57 -a+ を指定しても、ダイアログが少しだけ  
>>   番頭++   | xxxxxxxx@nifty.ne.jp  1999/10/07 (木) 18:14

>> 少し気になるのですが、-a+ を指定しても、
>> ダイアログが少しだけ表示されるような気がするのですが ???
>> Windows 95 ですが、ディスプレイ関連の問題かもしれません。

> 58 Re: -a+ を指定しても、ダイアログが少しだけ  
>   Si   | xxxxxxxx@nifty.ne.jp  1999/10/10 (日) 23:22

> ダイアログの件ですが、実は SSORT32 は自動実行モードでも内部的にはダイア
> ログを作成して処理を行うようになっています。それが表示されるのでしょうね。
> 気になるかも知れませんが仕様ということでご理解頂ければ幸いです。

[ ]