Вопрос про константы 8( ...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
xenomorph
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 508
Зарегистрирован: 18.04.2004 (Вс) 11:41
Откуда: это не важно - на сегодня у меня есть алиби ...

Вопрос про константы 8( ...

Сообщение xenomorph » 11.09.2004 (Сб) 17:52

Вот кусок кода:

Dim arrBuffer(1 To MAX_BUFFER_LENGTH) As Byte

Это - буфер приёма данных с сокета ...
Загвоздка в том, что мне необходимо менять его размер динамически ...
но при попытке заменить MAX_BUFFER_LENGTH на Long etc, IDE требует константу ...

Если так:

ReDim arrBuffer(1000) бла ... бла ... бла ...

То вроде работает, но (!) данные не приходят - то есть так тоже не катит ...
(сурьёзно подозреваю что это связано со структурой переменной 8)

Иициализировать несколько констант под одним именем - маразм 8).
Парсировать в функцию константу - тоже низя 8( ...

"Что делать?" [copyrights Чернышевский и ко] ...

Заранее спасибо ...
... Dpkjvfnm dc`xnj itdtkbnmcz, f tckb yt itdtkbnmcz hfcitdtkbnm b dpkjvfnm !!! ...

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.09.2004 (Сб) 18:36

А что ты с буфером потом делаешь? Если в VB используешь как стоку, то конвертани его с помощью strconv.

Может показаться что ответ не в тему, но раз для твоей функции есть константа максимального размера буфера, то скорее всего функция больше не обработает. Хотя можно попробовать послать не по ссылке, а адрес первого байта массива. Это будет так: ByVal Varptr(arrBuffer(0)).
Или можно вручную создавать статический массив байт. Это GSerg тебе может подсказать.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.09.2004 (Сб) 19:56

Я думаю, xenomorph имеет в виду оператор ReDim:
Код: Выделить всё
Dim Massiv() As Byte
ReDim Massiv(Rnd * 1024) As Byte
Изображение

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.09.2004 (Сб) 20:17

Так вроде ж у него динамический массив не работает. Ему нужен именно статический. Подозреваю что он устроен по другому.

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

Сообщение GSerg » 11.09.2004 (Сб) 20:21

Если он ещё объяснит, чем динамический массив VB отличается от статического с точки зрения сокета... :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.09.2004 (Сб) 20:24

Хм, наверное ничем. Это было предположение. Ведь статический у него нормально работает.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.09.2004 (Сб) 20:43

От себя замечу, что статический и динамический массивы устроены и работают совершенно одинаково.
Изображение

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 11.09.2004 (Сб) 21:01

xenomorph, если я правильно понял, у тебя массив обнуляется при переопределении, делай
ReDim Preserve arrBuffer(1000)
Старые данные в массиве не будут затираться.

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.09.2004 (Сб) 21:26

А что такое тогда SafeArrayCreateVector?

BP
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 17.02.2004 (Вт) 5:34
Откуда: Украина

Сообщение BP » 11.09.2004 (Сб) 21:28

Юстас,
по моему он его один раз определяет перед отправкой.

Юстас
Бывалый
Бывалый
 
Сообщения: 200
Зарегистрирован: 24.10.2003 (Пт) 5:05

Сообщение Юстас » 11.09.2004 (Сб) 21:58

xenomorph
Вообще-то неплохо было бы сначала продумать вопрос и правильно и корректно его сформулировать, чтобы народ не терялся в догадках: а о чем собственно речь? Или кусок кода показать, если это не государственная тайна.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.09.2004 (Сб) 22:54

BP писал(а):А что такое тогда SafeArrayCreateVector?

Функция для создания одномерного массива.


Или ты это на FADF_FIXEDSIZE так туманно намекаешь? Ну так в сути-то разницы нету, там SAFEARRAY и тут SAFEARRAY.
Изображение


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

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

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

    TopList