{---プログラム掲示板投稿フォーム---
【ソフト名】ファイル内容比較 (バージョン 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。
待機。
|