by 雷電 » 2006年7月16日(日) 21:54
抜けていました。
しかし、コンパイルしてもINIファイルをのぞくと毎回違う値がPassWordのところに書かれています。
一応コードを載せておきますので間違っている点がありましたら訂正お願いします。
コマンドボタンを押したときの動作 [ここをクリックすると内容が表示されます] [ここをクリックすると非表示にします]コード: 全て選択
Sub MainWnd_CommandButton1_Click()
Dim ret As Long
Dim Letter As String
Dim User As String
Dim Str$ As String
Dim Pass2 As String
Dim P[SIZE] As Byte
Dim aaa As Long
Dim Str_Size As Long '文字列の長さ
Dim Chr_Num As Integer '文字コードの番号
Dim I As Long
GetDlgItemTextStr(hMainWnd,EditBox1,User)
GetDlgItemTextStr(hMainWnd,EditBox2,Str$)
GetDlgItemTextStr(hMainWnd,EditBox3,Pass2)
If User="" Then
MessageBox(hMainWnd,"ユーザー名が入力されていません","入力エラー",MB_OK)
End If
GetPrivateProfileString("Data","PassWord","",P,SIZE,".\System.ini")
lstrcpy(Str$,P)
'複合化する
For I = 0 To Str_Size
'文字コード番号を取得する
Chr_Num = Str$
'文字コード番号から暗号化定数を引く
Chr_Num -= X
'↓エラー防止のための処理↓ここから
While Chr_Num < 0
Chr_Num += 255
Wend
While 255 < Chr_Num
Chr_Num -= 255
Wend
'↑エラー防止のための処理↑ここまで
'文字コード番号を書き換える
Str$ = Chr_Num
Next I
If lstrcmp(Str$,P)<>0 Then
aaa=MessageBox(hMainWnd,Ex"ユーザー名、又はパスワードがiniファイルに保存されているデータと違います。\r\nデータを書き換えますか?","確認",MB_YESNO)
If aaa=IDYES Then
MessageBox(0,"書き換えます","書き換え",MB_OK)
/* 暗号化するとき */
'文字列の長さを調べて保存する
Str_Size = Len(Str$)
'1Byteずつ暗号化する
For I = 0 To Str_Size
'文字コード番号を取得する
Chr_Num = Str$
'文字コード番号に暗号化定数を加える
Chr_Num += X
'↓エラー防止のための処理↓ここから
While Chr_Num < 0
Chr_Num += 255
Wend
While 255 < Chr_Num
Chr_Num -= 255
Wend
'↑エラー防止のための処理↑ここまで
'文字コード番号を書き換える
Str$ = Chr_Num
Next I
/*ここまで暗号化*/
WritePrivateProfileString("Data", "User", User, ".\System.ini")
WritePrivateProfileString("Data", "PassWord", Str$, ".\System.ini")
EndDialog(hMainWnd,1)
Else
MessageBox(0,"再入力してください","再入力",MB_OK)
SetDlgItemText(hMainWnd,EditBox2,"")
SetDlgItemText(hMainWnd,EditBox3,"")
Exit Sub
End If
End If
If lstrcmp(Str$,Pass2)=0 Then
If Str$="" Then
MessageBox(hMainWnd,"パスワードが入力されていません","入力エラー",MB_OK)
Exit Sub
End If
Else
MessageBox(hMainWnd,"パスワードが一致しません","入力エラー",MB_OK)
Exit Sub
End If
Letter="ユーザー:" + User + Ex"\r\n" + "パスワード:" + Str$ + Ex"\r\n" + "これでよろしいですか?"
ret=MessageBox(hMainWnd,Letter,"確認",MB_YESNO)
If ret=IDYES Then
MessageBox(hMainWnd,"分かりました","了解",MB_OK)
/* 暗号化するとき */
'文字列の長さを調べて保存する
Str_Size = Len(Str$)
'1Byteずつ暗号化する
For I = 0 To Str_Size
'文字コード番号を取得する
Chr_Num = Str$
'文字コード番号に暗号化定数を加える
Chr_Num += X
'↓エラー防止のための処理↓ここから
While Chr_Num < 0
Chr_Num += 255
Wend
While 255 < Chr_Num
Chr_Num -= 255
Wend
'↑エラー防止のための処理↑ここまで
'文字コード番号を書き換える
Str$ = Chr_Num
Next I
/*ここまで暗号化*/
WritePrivateProfileString("Data", "User", User, ".\System.ini")
WritePrivateProfileString("Data", "PassWord", Str$, ".\System.ini")
EndDialog(hMainWnd,1)
Else
MessageBox(hMainWnd,"再入力をお願いします","再入力",MB_OK)
SetDlgItemText(hMainWnd,EditBox1,"")
SetDlgItemText(hMainWnd,EditBox2,"")
SetDlgItemText(hMainWnd,EditBox3,"")
Exit Sub
End If
End Sub
抜けていました。
しかし、コンパイルしてもINIファイルをのぞくと毎回違う値がPassWordのところに書かれています。
一応コードを載せておきますので間違っている点がありましたら訂正お願いします。
[hide=コマンドボタンを押したときの動作][code]Sub MainWnd_CommandButton1_Click()
Dim ret As Long
Dim Letter As String
Dim User As String
Dim Str$ As String
Dim Pass2 As String
Dim P[SIZE] As Byte
Dim aaa As Long
Dim Str_Size As Long '文字列の長さ
Dim Chr_Num As Integer '文字コードの番号
Dim I As Long
GetDlgItemTextStr(hMainWnd,EditBox1,User)
GetDlgItemTextStr(hMainWnd,EditBox2,Str$)
GetDlgItemTextStr(hMainWnd,EditBox3,Pass2)
If User="" Then
MessageBox(hMainWnd,"ユーザー名が入力されていません","入力エラー",MB_OK)
End If
GetPrivateProfileString("Data","PassWord","",P,SIZE,".\System.ini")
lstrcpy(Str$,P)
'複合化する
For I = 0 To Str_Size
'文字コード番号を取得する
Chr_Num = Str$[I]
'文字コード番号から暗号化定数を引く
Chr_Num -= X
'↓エラー防止のための処理↓ここから
While Chr_Num < 0
Chr_Num += 255
Wend
While 255 < Chr_Num
Chr_Num -= 255
Wend
'↑エラー防止のための処理↑ここまで
'文字コード番号を書き換える
Str$[I] = Chr_Num
Next I
If lstrcmp(Str$,P)<>0 Then
aaa=MessageBox(hMainWnd,Ex"ユーザー名、又はパスワードがiniファイルに保存されているデータと違います。\r\nデータを書き換えますか?","確認",MB_YESNO)
If aaa=IDYES Then
MessageBox(0,"書き換えます","書き換え",MB_OK)
/* 暗号化するとき */
'文字列の長さを調べて保存する
Str_Size = Len(Str$)
'1Byteずつ暗号化する
For I = 0 To Str_Size
'文字コード番号を取得する
Chr_Num = Str$[I]
'文字コード番号に暗号化定数を加える
Chr_Num += X
'↓エラー防止のための処理↓ここから
While Chr_Num < 0
Chr_Num += 255
Wend
While 255 < Chr_Num
Chr_Num -= 255
Wend
'↑エラー防止のための処理↑ここまで
'文字コード番号を書き換える
Str$[I] = Chr_Num
Next I
/*ここまで暗号化*/
WritePrivateProfileString("Data", "User", User, ".\System.ini")
WritePrivateProfileString("Data", "PassWord", Str$, ".\System.ini")
EndDialog(hMainWnd,1)
Else
MessageBox(0,"再入力してください","再入力",MB_OK)
SetDlgItemText(hMainWnd,EditBox2,"")
SetDlgItemText(hMainWnd,EditBox3,"")
Exit Sub
End If
End If
If lstrcmp(Str$,Pass2)=0 Then
If Str$="" Then
MessageBox(hMainWnd,"パスワードが入力されていません","入力エラー",MB_OK)
Exit Sub
End If
Else
MessageBox(hMainWnd,"パスワードが一致しません","入力エラー",MB_OK)
Exit Sub
End If
Letter="ユーザー:" + User + Ex"\r\n" + "パスワード:" + Str$ + Ex"\r\n" + "これでよろしいですか?"
ret=MessageBox(hMainWnd,Letter,"確認",MB_YESNO)
If ret=IDYES Then
MessageBox(hMainWnd,"分かりました","了解",MB_OK)
/* 暗号化するとき */
'文字列の長さを調べて保存する
Str_Size = Len(Str$)
'1Byteずつ暗号化する
For I = 0 To Str_Size
'文字コード番号を取得する
Chr_Num = Str$[I]
'文字コード番号に暗号化定数を加える
Chr_Num += X
'↓エラー防止のための処理↓ここから
While Chr_Num < 0
Chr_Num += 255
Wend
While 255 < Chr_Num
Chr_Num -= 255
Wend
'↑エラー防止のための処理↑ここまで
'文字コード番号を書き換える
Str$[I] = Chr_Num
Next I
/*ここまで暗号化*/
WritePrivateProfileString("Data", "User", User, ".\System.ini")
WritePrivateProfileString("Data", "PassWord", Str$, ".\System.ini")
EndDialog(hMainWnd,1)
Else
MessageBox(hMainWnd,"再入力をお願いします","再入力",MB_OK)
SetDlgItemText(hMainWnd,EditBox1,"")
SetDlgItemText(hMainWnd,EditBox2,"")
SetDlgItemText(hMainWnd,EditBox3,"")
Exit Sub
End If
End Sub[/code][/hide]