- Код: Выделить всё
Private Declare Function SysAllocStringByteLen Lib "oleaut32.dll" (ByVal bStr As String, ByVal len_Bstr As Long) As String
Private Declare Function SysStringByteLen Lib "oleaut32.dll" (ByVal bStr As Long) As Long
Private Declare Sub GetMem2 Lib "msvbvm60.dll" (ByRef Source As Any, ByRef Destination As Any)
Private Function SelectString(strIn As String) As String
Dim lng_PtrStart As Long
Dim lng_PtrPos As Long
Dim lng_PtrEnd As Long
Dim intTmpChr As Integer
lng_PtrStart = StrPtr(strIn)
lng_PtrEnd = lng_PtrStart + SysStringByteLen(ByVal lng_PtrStart)
For lng_PtrPos = lng_PtrStart To lng_PtrEnd Step 2
Call GetMem2(ByVal lng_PtrPos, intTmpChr)
If intTmpChr = 0 Then
SelectString = SysAllocStringByteLen(strIn, (lng_PtrPos - lng_PtrStart) \ 2)
Exit For
End If
Next lng_PtrPos
End Function
Собственно вопрос: Нужно ли вызывать SysFreeString после SysAllocStringByteLen(strIn, (lng_PtrPos - lng_PtrStart) \ 2) ?
Если не нужно то почему?
Если нужно, то что передавать в SysFreeString?
Заранее благодарен за потраченное на мой вопрос время.