ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE ファイル内容比較 /のえる (02/03/01(Fri) 16:57) [545]


親記事 / 返信無し
NO.545  ファイル内容比較
□投稿者/ のえる -(2002/03/01(Fri) 16:57:32)
□U R L/ http://members.tripod.co.jp/~my_tears/
{---プログラム掲示板投稿フォーム---

【ソフト名】ファイル内容比較 (バージョン 1.00)

【作 成 者】のえる (連絡先:my_tears@rose.freemail.ne.jp)

【種  別】フリーソフトウェア

【ひまわりのバージョン】ver.1.29で動作確認

【転  載】可 (転載条件:作者にメールで連絡すること)

【改変運用】可 (事前に連絡いただければうれしいです)

【ひまわり本体への梱包】可

【実行時に利用作成するファイル】無

【コメント】

  「質問大歓迎の掲示板」の質問内容に従って、作った

 つもりのファイル内容比較です。なんとなく、気分転換に

  作成してしまいました。

   見難いソースですが、何かのご参考に。

  ひたすら、文字の切り出し、文比較を繰り返しています。

  いけてないですね。

   一応、全角文字にも対応してみました。

  同じ位置の文字が、同じ場合は、'-'を、違えば、'^'を

  出力しています。

   なお、文字が後ろに追加されている場合には、なんの対処も

  打ててません(例:元=「abc」。後=「abcde」。では、違いが

  見つかりません)。何故なのかは、ソースを読めば、一目瞭然

  ですので、説明は省略します。

   同様に、行数が増えている場合も、無意味です。

  これらの処理を入れると、私の腕では、わけのわからない

  サンプルに成りそう(分かってもらえなきゃサンプルじゃな

  いですよね)だったので、未実装です。



  あと、お暇な人は、お越しください(^-^。

  URL : http://members.tripod.co.jp/~my_tears/



  [問題1]:最初は、同じであれば、空白(' ')を出力する仕様

   だったのですが、先頭の文字が同じ場合、それを含め、

   以降の連続する空白' 'が、削除されてしまうので、文字列が

   同じ場合には、'-'を出力してごまかしています。

   よい回避策が思いつかなかったの。

    現在のプログラムと、ひまわりv1.29の組合せでは、'-'を

   ' 'に変えるだけで、何故だか、うまく空白になりますが、

   簡易にテストを行ってみると、うまくいきません。

   何が違うのか、はっきりしないので、もしかしたら、

   別の環境では、おかしくなるかもしれないと思い、'-'を出力

   することにしました。

    ま、それなりに「罫線みたい」ということで、ご勘弁を(^-^。

   誰か、回避策をご存知かしら?



  [history]

    v1.00 基本的な部分を作成。



---投稿フォームここまで---}



{フォーム作成}

メモ0を、メモとして、作成。

 その、フォント書体は、「MS ゴシック」

  その、フォントサイズは、9

 その、サイズは、(40,70,220,310)

メモ1を、メモとして、作成。

 その、フォント書体は、「MS ゴシック」

  その、フォントサイズは、9

 その、サイズは、(230,70,410,310)

結果出力欄を、メモとして、作成。

 その、フォント書体は、「MS ゴシック」'等幅フォントにするのもポイント

  その、フォントサイズは、9

 その、サイズは、(440,70,620,310)

ラベル1を、ラベルとして、作成。

 その、サイズは、(40,40,220,70)

  その、テキストは、「元内容」

ラベル2を、ラベルとして、作成。

  その、テキストは、「後内容」

 その、サイズは、(230,40,410,70)

ラベル3を、ラベルとして、作成。

  その、テキストは、「比較結果」

 その、サイズは、(440,40,620,70)

ラベル4を、ラベルとして、作成。

 その、テキストは、「→」

 その、サイズは、(420,180,450,210)

ラベル5を、ラベルとして、作成。

 その、サイズは、(390,330,620,360)

 その、テキストは、「{M}個の違いが確認されました。」



ボタン0を、ボタンとして、作成。

 その、フォントサイズは、9。

  その、テキストは、「参照」。

 その、サイズは、(40,310,100,330)

  その、イベントは、元ファイル参照。

ボタン1を、ボタンとして、作成。

 その、フォントサイズは、9。

  その、テキストは、「参照」。

 その、サイズは、(230,310,290,330)

  その、イベントは、後ファイル参照。

実行ボタンを、ボタンとして、作成。

 その、フォントサイズは、9。

  その、テキストは、「比較実行」。

 その、サイズは、(130,340,290,370)

  その、イベントは、実行。



{ダミーデータの準備}

ダミー1#0=「1234.023,1234.000」

ダミー1#1=「2333.023,1434.030」

ダミー2#0=「1a34.245,1234.000」

ダミー2#1=「1233.023,1434.030」

メモ0の、テキストは、ダミー1。

メモ1の、テキストは、ダミー2。



母艦の、サイズは、(187,156,827,537)。

母艦を、灰色で、画面クリア。

母艦の、タイトルは、「違うところを探そう! by Noel」。

母艦浮上。

実行を、呼ぶ。

待機。



*実行

'ダミー1とダミー2の内容を比較します。

'---ここから初期化---

M=0  '違いを数えるカウンター

ダミー1は、「{メモ0}」。

ダミー2は、「{メモ1}」。

結果配列=「」

結果出力欄の、テキストは、結果配列。

'---初期化ここまで---

'---

ダミー1の、要素数。

配列要素数は、それ。

{ここから、配列の各列を繰り返す}

Iを、0から、(配列要素数-1)まで、繰り返す(

 結果1=「」。

  '進行状況の表示

  比較中の行番号=I+1'進行状況表示の為のみ使用

  ラベル5の、テキストは、「{比較中の行番号}行目を比較中...」

  描画処理反映。

  ' --- ここまで、進行状況 ---

  ダミー1#(I)の、文字数。

  Kは、それ。

  'ここから、各文字を比較する。

  Jを、1から、(K)まで、繰り返す(

     ダミー1#(I)の中で、Jから、1つ、MID。{ひと文字切り出す}

    元は、それ。

     ダミー2#(I)の中で、Jから、1つ、MID。{ひと文字切り出す}

    後は、それ。

    元と、後で、文比較。

    比較結果は、それ。

    元が、全角か。

    もし、それが、はいならば、(もし、比較結果=はい、

      ならば、(結果1=結果1 & 『--』。)

       違えば、(結果1=結果1 & 『^^』。M=M+1。)

        )

    違えば、(もし、比較結果=はい、

            ならば、(結果1=結果1 & 『-』。)

      違えば、(結果1=結果1 & 『^』。M=M+1。)

      )

  )

  '答えを、結果配列に、格納。

  結果配列=結果配列 & ダミー1#(I) & 「\n」。

  結果配列=結果配列 & 結果1 & 「\n」。

)

{出力}

結果出力欄の、テキストは、結果配列。

ラベル5の、テキストは、「{M}個の違いが確認されました。」

待機。



*元ファイル参照

 「全てのファイル(*.*)|*.*」の、読込ファイル選択。

  もし、それ<>「」ならば、ダミー1に、「{それ}」を、読む。

  メモ0の、テキストは、ダミー1。

  待機。



*後ファイル参照

 「全てのファイル(*.*)|*.*」の、読込ファイル選択。

  もし、それ<>「」ならば、ダミー2に、「{それ}」を、読む。

  メモ1の、テキストは、ダミー2。

  待機。






- Child Tree -