Листинг 1. Функции ParseName и ParseString для работы со строковыми переменными.
Function ParseName(s$, n%) As String
Dim Ret$
If InStr(s$, ",") Then
' есть запятая, тогда пишется Фамилия, Имя
If n% = 1 Then ' имя
Ret$ = ParseString(s$, ",", 2)
Else
Ret$ = ParseString(s$, ",", 1)
End If
Else ' пусть Фамилия и Имя разделяются пробелом
If n% = 1 Then ' имя
Ret$ = ParseString(s$, " ", 1)
Else
Ret$ = ParseString(s$, " ", 2)
End If
End If
If Ret$ = "" Then Ret$ = s$
' если пустая строка. установим ее равной исходной
ParseName = Ret$ End Function
Function ParseString(s$, del$, n) As String
' синтаксический анализ строки на наличие разделителя,
' возвращает n-ое значение
Dim pos As Long, i As Integer, pos2 As Long
ParseString = s$
pos = InStr(s$, del$)
If pos Then ' если есть del$
If n = 1 Then
ParseString = Left$(s$, pos - 1)
Else
For i = 1 To n - 1 ' подсчет элементов данных
pos2 = InStr(pos + 1, s$, del$)
If pos2 = 0 Then ' конец строки
If i = n - 1 Then
ParseString = Trim(Mid$(s$, pos + Len(del$)))
' длина разделителя
Else
ParseString = ""
' n-ый элемент данных не найден
End If
Exit Function
End If
ParseString = Trim(Mid$(s$, pos + Len(del$), _
pos2 - pos - Len(del$)))
pos = pos2
Next
End If
ElseIf n > 1 Then
ParseString = "" ' n-ый элемент данных не найден
End If End Function