Страница: 1 |
|
Вопрос: Помогие. WinSock. UserControl. Run Time Error 28.
|
Добавлено: 27.04.07 16:31
|
|
Автор вопроса: Programmer
|
Сделал свой сокет на основе WinSock. Для удобства. Вроде тьага сервера. Сделал в нем свойоство FilePath$().
Ктото коннектица - ReDim Preserver m_file(1 to Index).
Так вот. Мой прога получает файлы. Каждый раз, при получении сообщения, проверяеться, если свойство sock.FilePath(ID) = "", то оно присваеваеться, иначе данные записываються в файл. В один прекрассный раз, при сравнивании:
If Len(sock.FilePath(ID)) = 0 Then
я получил такое сообщение - недостаточно места в стеке, ошибка времени выполнения номер 28.
Что делать???
Ответить
|
Номер ответа: 1 Автор ответа: Programmer
Вопросов: 71 Ответов: 246
|
Профиль | | #1
|
Добавлено: 27.04.07 16:33
|
Вот код моего socket`a:
Event Accepting( ByVal ID As Long, ByVal IP As String)
Event Closing( ByVal ID As Long, ByVal IP As String)
Event Data( ByVal ID As Long, ByVal IP As String, ByVal Data As String)
Dim m_port As Long, m_file$()
Public Sub Listen( ByVal Port As Long)
If ws. UBound <> 0 Then
For i = 1 To ws. UBound
Unload ws(i)
Next
End If
ws(0).Close
ws(0).LocalPort = Port
m_port = Port
ws(0).Listen
End Sub
Private Sub ws_Close(Index As Integer)
On Error Resume Next
RaiseEvent Closing(Index, ws(Index).RemoteHostIP)
Unload ws(Index): m_file(Index) = ""
End Sub
Private Sub ws_ConnectionRequest(Index As Integer, ByVal requestID As Long)
On Error Resume Next
n = ws. UBound + 1
Load ws(n): On Error Resume Next: ReDim Preserve m_file(1 To n)
m_file(n) = ""
ws(n).Accept requestID
RaiseEvent Accepting(n, ws(n).RemoteHostIP)
End Sub
Private Sub ws_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim strData$
ws(Index).GetData strData
If InStr(1, strData, ".SESSION" = 0 Then
RaiseEvent Data(Index, ws(Index).RemoteHostIP, strData)
Else
s = Split(strData, ".SESSION"
For i = 0 To UBound(s)
If Len(s(i)) <> 0 Then RaiseEvent Data(Index, ws(Index).RemoteHostIP, s(i))
Next
End If
End Sub
Private Sub ws_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
If Index <> 0 Then RaiseEvent Closing(Index, ws(Index).RemoteHostIP)
End Sub
Public Sub CloseThis( ByVal ID As Long)
On Error Resume Next
If ID <> 0 Then Unload ws(ID): On Error Resume Next: m_file(ID) = ""
End Sub
Public Property Get LocalHost() As Variant
LocalHost = ws(0).LocalHostName
End Property
Public Property Get ListenPort() As Variant
ListenPort = m_port
End Property
Public Property Get FilePath( ByVal ID As Long) As String
If ID = 0 Then Exit Sub
FilePath = m_file(ID)
End Property
Public Property Let FilePath( ByVal ID As Long, ByVal vNewValue As String)
On Error Resume Next
m_file(ID) = vNewValue
End Property
Public Sub SendData( ByVal ID As Long, ByVal Data)
On Error Resume Next
ws(ID).SendData ".SESSION" & Replace(Data, ".SESSION", ""
End Sub
Ответить
|
Страница: 1 |
Поиск по форуму