文字列操作 <TOP>
文字列を操作する関数をテストします
lstrcat ある文字列の末尾に別の文字列を結合
lstrcmp 2つの文字列を比較(大文字と小文字を区別する)
lstrcmpi 2つの文字列を比較(大文字と小文字を区別しない)
lstrcpy 文字列をコピーする
lstrcpyn バッファにソース文字列から指定した数の文字をコピーする
lstrlen 指定された文字列のバイトまたは文字の長さを返す
CharLowerBuff バッファの大文字を小文字に変換する
'================================================================ '= 文字列操作 '= (StringFunctions.bas) '================================================================ #include "Windows.bi" ' ある文字列の末尾に別の文字列を結合 Declare Function Api_lstrcat& Lib "kernel32" Alias "lstrcatA" (ByVal lpString1$, ByVal lpString2$) ' 2つの文字列を比較(敏感なケース) Declare Function Api_lstrcmp& Lib "kernel32" Alias "lstrcmpA" (ByVal lpString1$, ByVal lpString2$) ' 2つの文字列を比較(敏感ではないケース) Declare Function Api_lstrcmpi& Lib "kernel32" Alias "lstrcmpiA" (ByVal lpString1$, ByVal lpString2$) ' 文字列をコピーする Declare Function Api_lstrcpy& Lib "Kernel32" Alias "lstrcpyW" (lpszString1 As Any, lpszString2 As Any) ' バッファにソース文字列から指定した数の文字をコピーする Declare Function Api_lstrcpyn& Lib "kernel32" Alias "lstrcpynA" (ByVal lpString1$, ByVal lpString2$, ByVal iMaxLength&) ' 指定された文字列のバイトまたは文字の長さを返す Declare Function Api_lstrlen& Lib "kernel32" Alias "lstrlenA" (ByVal lpString$) ' バッファの大文字を小文字に変換する Declare Function Api_CharLowerBuff& Lib "user32" Alias "CharLowerBuffA" (ByVal lpsz$, ByVal cchLength&) Var Shared List1 As Object Var Shared Edit1 As Object Var Shared Edit2 As Object Var Shared Button1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Edit2.Attach GetDlgItem("Edit2") : Edit2.SetFontSize 14 Button1.Attach getDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Txt1 As String Var Txt2 As String Var Buff As String Var Ret As Long Txt1 = Edit1.GetWindowText Txt2 = Edit2.GetWindowText List1.ResetContent '----- 2つの文字列を結合 ----- List1.AddString "■lstcat" Buff = String$(Api_lstrLen(Txt1) & Api_lstrLen(Txt2), 0) Ret = Api_lstrcat(Buff, Txt1) 'バッファにTxt1を結合 Ret = Api_lstrcat(Buff, Txt2) '更にTxt2を結合 List1.AddString " '" & Txt1 & "'と'" & Txt2 & "'を結合 → " & Buff '----- 文字列をバッファにコピー ----- List1.AddString "■lstrcpy" Buff = String$(Api_lstrLen(Txt1), 0) 'バッファ Ret = Api_lstrcpy(Buff, Txt1) 'バッファにTempをコピー List1.AddString " バッファに'" & txt1 & "'をコピー → " & Buff '----- 文字列を小文字に変換 ----- List1.AddString "■CharLowerBuff" Buff = Txt1 Ret = Api_CharLowerBuff(Buff, Api_lstrLen(Buff)) List1.AddString " '" & Txt1 & "'を小文字に変換 → " & Buff '----- 文字列が同じであるかをチェック:大文字小文字を区別する ----- List1.AddString "■lstrcmp(大文字小文字を区別する)" If Api_lstrcmp(Txt1, Txt2) = 0 Then List1.AddString " '" & Txt1 & "'と'" & Txt2 & "'は同じ" Else List1.AddString " '" & Txt1 & "'と'" & Txt2 & "'は異なる" End If '----- 文字列が同じであるかをチェック:大文字小文字を区別しない ----- List1.AddString "■lstrcmpi(大文字小文字を区別しない)" If Api_lstrcmpi(Txt1, Txt2) = 0 Then List1.AddString " '" & Txt1 & "'と'" & Txt2 & "'は同じ" Else List1.AddString " '" & Txt1 & "'と'" & Txt2 & "'は異なる" End If '----- バッファにソース文字列から指定した数の文字をコピー ----- List1.AddString "■lstrcpyn" Ret = Api_lstrcpyn(Buff, Txt1, 5 + 1) '5文字 + 1(Nullの分を含める) List1.AddString " '" & Txt1 & "'から 5 文字分をコピー → " & Buff End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End