文字列操作          <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