HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0809
catsファイルの比較6解決


cats

リンク

2012/8/9(Thu) 22:18:39|NO.48378

ファイルを比較するプログラムを作りましたがHSPのファイルを比較してくれません。

font "MS ゴシック", 14 aaa="" dialog "", 16 if stat = 0 : stop sdim buf,256 bload refstr,buf repeat strsize aaa=""+aaa+strf(" %02X",peek(buf,cnt))+"" loop mesbox aaa,500,200 aaa1="" dialog "", 16 if stat = 0 : stop sdim buf,256 bload refstr,buf repeat strsize aaa1=""+aaa1+strf(" %02X",peek(buf,cnt))+"" loop mesbox aaa1,500,200 if aaa=aaa1 :dialog "同じ" :else :dialog "違う"
このプログラムで適当なファイルを選ぶとバイナリで比較してくれるのですが、
試しにHSPで作った2つのファイルを比較すると"同じ"と表示されてしまいます。
テキストやビットマップはちゃんと比較してくれます。
正確に比較するにはどうすればよいでしょうか。



この記事に返信する


Him

リンク

2012/8/9(Thu) 22:37:09|NO.48379

先頭の256バイトを比較しているのでHSPで生成したファイル同士を
比較すれば同じになります。



cats

リンク

2012/8/9(Thu) 22:56:08|NO.48381

Himさん、ありがとうございます。
全然気づいていませんでした;;



暇人

リンク

2012/8/9(Thu) 23:31:45|NO.48382

existでファイルサイズ調べて
sdimで必要な分確保

でもNO.48378の方法でやってると
100kバイト程度でもmesboxに表示できるまで
1分ぐらいかかる

font "MS ゴシック", 14 dialog "", 16 if stat = 0 : stop f=refstr exist f sdim buf,strsize bload f,buf sdim aaa,strsize*3+1 repeat strsize aaa+strf(" %02X",peek(buf,cnt)) loop mesbox aaa,500,200 dialog "", 16 if stat = 0 : stop f=refstr exist f sdim buf,strsize bload f,buf sdim aaa1,strsize*3+1 repeat strsize tmp=strf(" %02X",peek(buf,cnt)) memcpy aaa1,tmp,3,cnt*3,0 loop mesbox aaa1,500,200 if aaa=aaa1 :dialog "同じ" :else :dialog "違う"
一個目の処理は5倍ぐらい
二個目の方法だと10倍以上早くなる
それでも重いが・・・



てれてれ

リンク

2012/8/10(Fri) 00:59:49|NO.48384

少しここまでのレスとは内容が異なりますがmd5ハッシュ値を利用すれば確実で高速です。

#include "hspinet.as" FileName = "比較するファイル名(1)" , "比較するファイル名(2)" //必ず2つ以上ファイルを指定 sdim MD5Hash ,32,length(FileName) repeat length(FileName) exist FileName(cnt) : if strsize = -1 : mes "["+FileName(cnt)+"] ファイルが存在しません。" : stop //ファイルが存在することを確認 filemd5 MD5Hash(cnt),FileName(cnt) //md5取得 loop //比較 Different = 0 repeat length(FileName)-1,1 if MD5Hash(cnt) != MD5Hash(0) : Different = 1 : break loop if Different = 0 : mes "同じ" if Different = 1 : mes "違う"



cats

リンク

2012/8/10(Fri) 21:37:58|NO.48408

てれてれさん。
ありがとうございます!
そんな方法があったとは・・・w



GrapeColor(DION)

リンク

2012/8/11(Sat) 08:25:42|NO.48426

これは使えそう・・・スレ主ではありませんが使わせて頂きますm(_ _)m



ONION software Copyright 1997-2023(c) All rights reserved.