はじめたばかりだと、しんどいでしょうがそのうち慣れると思いますよ。
>やりたいことはAフォルダとBフォルダがあり、フォルダの中のファイルをファイル名+拡張子で判断して、同じファイルがないか調べる。
ファイル名を取得していって、一致不一致を調べる。
FindFirstFileとか言う関数がありますが、正直よくわからないので、リストボックスの裏技を使ってみます。
あ、最初に断っておきますが、当方VBは使ったことないので。
BASIC言語としてのサンプルです。
では準備。
RADでボタンを2つとリストボックス2つとエディットボックス2つを用意します。
ボタン1が押されたら、エディットボックス1・2からファイルパスを取得し、リストボックス1・2にそのディレクトリーの中身一覧を表示させます。
Dim buffer[1] As BytePtr
Dim Length[1] As Long
Length[0]=GetWindowTextLength(GetDlgItem(hMainWnd,EditBox1))
Length[1]=GetWindowTextLength(GetDlgItem(hMainWnd,EditBox2))
buffer[0]=malloc(Length[0]+1)
buffer[1]=malloc(Length[1]+1)
GetDlgItemText(hMainWnd,EditBox1,buffer[0],Length[0]+1)
GetDlgItemText(hMainWnd,EditBox2,buffer[1],Length[1]+1)
SendMessage(GetDlgItem(hMainWnd,ListBox1),LB_DIR,DDL_READWRITE,MakeStr(buffer[0])+"*")
SendMessage(GetDlgItem(hMainWnd,ListBox2),LB_DIR,DDL_READWRITE,MakeStr(buffer[1])+"*")
free(buffer[0])
free(buffer[1])
コマンドボタン2でリストをチェックしていきます。
Dim LB1 As Long
Dim LB2 As Long
Dim n As Long
Dim m As Long
Dim LB1_byte As Long
Dim LB2_byte As Long
Dim LB1_text As BytePtr
Dim LB2_text As BytePtr
LB1=SendDlgItemMessage(hMainWnd,ListBox1,LB_GETCOUNT,0,0)
LB2=SendDlgItemMessage(hMainWnd,ListBox2,LB_GETCOUNT,0,0)
For n=0 to LB1-1
LB1_byte=SendDlgItemMessage(hMainWnd,ListBox1,LB_GETTEXTLEN,n,0)
LB1_text=malloc(LB1_byte+1)
SendDlgItemMessage(hMainWnd,ListBox1,LB_GETTEXT,n,LB1_text)
For m=0 to LB2-1
LB2_byte=SendDlgItemMessage(hMainWnd,ListBox2,LB_GETTEXTLEN,m,0)
LB2_text=malloc(LB1_byte+1)
SendDlgItemMessage(hMainWnd,ListBox1,LB_GETTEXT,m,LB2_text)
If MakeStr(LB1_text)=MakeStr(LB2_text) Then
MessageBox(hMainWnd,"重複を発見しました。","DISCOVER",MB_OK)
Else
MessageBox(hMainWnd,"重複じゃないファイルです→"+MakeStr(LB1_text),"UN-DISCOVER",MB_OK)
End If
Next
Sleep(50)
Next
free(LB1_text)
free(LB2_text)
MessageBox(hMainWnd,"作業が終了しましたとさ","FINISH",MB_OK)
こんな感じでしょうか?
理解できなければ・・・
まあ、No1さんとまでは行きませんが、参考書を買うことをお勧めします。
あ、それと当方、独学ですので、汚い部分も多々ありますがお許しくださいな。