Winsock и пользовательские структуры

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Winsock и пользовательские структуры

Сообщение Snussi » 30.11.2004 (Вт) 15:20

Здавствуйте, господа!

Честно пролопатил весь форум, но не нашел ответа :(
Итак, у меня есть структура

Код: Выделить всё
Public Type Connection_Session_Start
    ClientVersion As String
    UserName As String
    Passworded As Boolean
    UserPass As String
    ComputerName As String
    ComputerIP As String
End Type

описанная в одном из модулей.
Очень хотца ее передать через Winsock.
Для этого я пытаюсь сделать так:
Код: Выделить всё
    Dim txtSend2 As Connection_Session_Start
    ' заполняю эту переменную
    sckConnect.SendData txtSend2

и получаю ошибку Only public user defined types defined in public object modules can be used as parameters or return types for public procedures of class modules or as fields of public user defined types

Попытка объявить txtSend2 в модуле как публичной тоже ни к чему не привела :(

Объясните, что такое. И, может есть другой способ посылки структуры через винсок?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.11.2004 (Вт) 15:22

Объясняю. Ты не сможешь передавать через WinSock пользовательские типы. Преобразуй их в строку или байтовый массив, а на другом конце собирай обратно.
Lasciate ogni speranza, voi ch'entrate.

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 30.11.2004 (Вт) 15:27

Отсюда логичный вопрос - а как преобразовать?
И вообще, можно ли на VB как на C манипулировать данными, преобразовывая одну структуру в другую через указатели?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.11.2004 (Вт) 15:29

Если у тебя в структуре не было бы строк, то очень легко, через CopyMemory. А так сложнее будет.
Lasciate ogni speranza, voi ch'entrate.

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 30.11.2004 (Вт) 15:36

Ну, если я строки фикс. длины сделаю (это - не вопрос :) - то как?
Функции CopyMemory не нашел :(

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.11.2004 (Вт) 15:47

Это API-функция.
http://msdn.microsoft.com/library/defau ... memory.asp
Строки фиксированной длины - Name As String*80.
Lasciate ogni speranza, voi ch'entrate.

Snussi
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 151
Зарегистрирован: 21.07.2004 (Ср) 18:08
Откуда: Москва, Россия

Сообщение Snussi » 30.11.2004 (Вт) 16:48

Так если строка фиксированнлой длины - то можно копировать - или нет?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.11.2004 (Вт) 17:01

Ну попробуй, думаю можно.
Мне просто проверить не на чем.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.11.2004 (Вт) 18:46

Можно, можно... Только тогда lenb при копировании юзай...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 85

    TopList