Несколько вопросов: о RTF, о массивах, рейтингах и т.д.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Несколько вопросов: о RTF, о массивах, рейтингах и т.д.

Сообщение Maxxx.!!!. » 17.02.2007 (Сб) 22:09

1)Как сделать UNDO в RTFBox'e? В VB.NET, помню, специальный метод под эту тему был, а VB6, что-то не найду его?

2)Хотел сделатьProgressBar: чтобы когда у меня шел цикл с вычислениями он по-маленьку прибавлялся, но вот беда - когда цикл выполняется система загружена под завязку (проц почти полностью забит) и ПрогрБар заполняется сразу на все 100% только при выходе из цикла, что не есть хорошо. Может VB просто не успевает его отрисовывать?

3)Объявляю массив в модуле (Public ZZZ(100) as String), а потом хочу его уже в форме изменить ReDim'ом, а VB выдает ошибку? А можно ли вообще изменять размер глобального массива?

4)И самое сложное: есть массив, например, ZZZ(1000) as String. Весь он запит словами. Нужно создать рейтинг слов, т.е., например, завести массив Word стринговский, и WordChart лонговский и чтобы получилось так, что, например, в Word(50) было слово, а в WordChart(50) - было указано сколько раз это слово встречалось в массиве ZZZ. У самого ума не хватает придумать корректно работающий механизм...
Заранее благодарен.
Никогда так не врут, как во время войны, после охоты и перед выборами...

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Re: Несколько вопросов: о RTF, о массивах, рейтингах и т.д.

Сообщение EUGY » 17.02.2007 (Сб) 22:24

Послать в окно SendMessage(RichTextBox1.Hwnd,EM_UNDO,0,0)
...
Использовать DoEvents в цикле для перерисовки ProgressBar
...
Redim использовать только для динамических массивов (объявленных без указания длины), Public или Private не имеет значения.

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

Сообщение GSerg » 17.02.2007 (Сб) 22:26

1) Послав EM_UNDO
2) DoEvents
3) Можно, если он динамический, а не статический, как у тебя.
4) Коллекция, каждый элемент которой - Array("слово", число).


4 вопроса.
Из них имеющихся на форуме в достатке: 4, оригинальных: 0.
И это не первый раз.
Как думаешь, Maxxx.!!!., не выписать ли тебе предупреждение за злостное неипользование поиска?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 18.02.2007 (Вс) 11:23

GSerg писал(а):4 вопроса.
Из них имеющихся на форуме в достатке: 4, оригинальных: 0.
И это не первый раз.
Как думаешь, Maxxx.!!!., не выписать ли тебе предупреждение за злостное неипользование поиска?


Простите, дурака грешного, я больше так не буду! Я буду молиться на Поиск! :roll:
Никогда так не врут, как во время войны, после охоты и перед выборами...

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Re: Несколько вопросов: о RTF, о массивах, рейтингах и т.д.

Сообщение Maxxx.!!!. » 18.02.2007 (Вс) 21:09

EUGY писал(а):Redim использовать только для динамических массивов (объявленных без указания длины), Public или Private не имеет значения.


Все-равно не работает :( Пишу в модуле
Код: Выделить всё
Public ArrWord As String

А потом в коде формы:
Код: Выделить всё
ReDim ArrWord(ii) As String

ii - это переменная типа Long

VB выдает ошибку: Compile Array: Expected array.
Вот.
Никогда так не врут, как во время войны, после охоты и перед выборами...

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

Сообщение GSerg » 18.02.2007 (Вс) 21:16

:neutral:
Скобки поставь.

Maxxx.!!!., знаешь, чтобы осуществить сложение, надо знать о существовании оператора "плюс" и о том, что он ставится между аргументами. Может пора книжку почитать "VB для чайников"? :roll: А то загружать форум такими вопросами неполезно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 18.02.2007 (Вс) 21:23

Ну чё вам, места жалко? Пусть спрашивает человек.

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 18.02.2007 (Вс) 21:30

To: Maxxx.!!!

Public ArrWord As String - 'это объявлена строка

Public ArrWord() As String - 'это объявлен динамический массив строк (без указания длины)

Public ArrWord(666) As String - 'это объявлен статический массив строк


ReDim ArrWord(ii) As String ' так не надо, это в неявном виде объявление нового массива

'В твоем случае правильно так
Public ArrWord() As String

...
Dim ii as Long
ii=666
ReDim ArrWord(ii)

Cytron
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 266
Зарегистрирован: 15.02.2007 (Чт) 21:09

Сообщение Cytron » 18.02.2007 (Вс) 21:38

Public ArrWord () As String
ReDim ArrWord(ii) As String
иначе ты обьявиш строку а потом хочешь из нее сделать массив :)

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 19.02.2007 (Пн) 8:45

GSerg писал(а)::neutral:
Скобки поставь.

Maxxx.!!!., знаешь, чтобы осуществить сложение, надо знать о существовании оператора "плюс" и о том, что он ставится между аргументами. Может пора книжку почитать "VB для чайников"? :roll: А то загружать форум такими вопросами неполезно.


Есть у меня книги For Teapot. Только там ни хрена не написано про создание динамических массивов. Поэтому и спрашиваю. И я думаю, что чем больше в форуме контента, пусть даже такого бестолкового, тем лучше. Но, может быть, я не прав...
Никогда так не врут, как во время войны, после охоты и перед выборами...

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 19.02.2007 (Пн) 8:50

EUGY писал(а):To: Maxxx.!!!

Public ArrWord As String - 'это объявлена строка

Public ArrWord() As String - 'это объявлен динамический массив строк (без указания длины)

Public ArrWord(666) As String - 'это объявлен статический массив строк


ReDim ArrWord(ii) As String ' так не надо, это в неявном виде объявление нового массива

'В твоем случае правильно так
Public ArrWord() As String

...
Dim ii as Long
ii=666
ReDim ArrWord(ii)



Спасибо! Ступил я конкретно... Из строки, действительно, массив вряд ли получится :lol:
Никогда так не врут, как во время войны, после охоты и перед выборами...

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 19.02.2007 (Пн) 10:01

Maxxx.!!!. писал(а):Есть у меня книги For Teapot. Только там ни хрена не написано про создание динамических массивов. Поэтому и спрашиваю.


Ну ты все же не игнорируй клавишу F1 - ее нажатие зачастую освобождает от необходимости задавать подобные вопросы. А знать английский в объеме прочтения Help-a - просто необходимо - без этого никак...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 19.02.2007 (Пн) 17:42

Ну ты все же не игнорируй клавишу F1 - ее нажатие зачастую освобождает от необходимости задавать подобные вопросы. А знать английский в объеме прочтения Help-a - просто необходимо - без этого никак...[/quote]

Я бы и рад на нее нажать, только когда я пару лет наза покупал VB, то на диске не было MSND. А теперь, когда мне он по зарез нужен, я не где его не могу найти. Вот полный VS Studio 2005 с MSND у меня есть, только он для .NET платформы и про VB6.0 там ни слова... Так и живу...
Никогда так не врут, как во время войны, после охоты и перед выборами...

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Re: Несколько вопросов: о RTF, о массивах, рейтингах и т.д.

Сообщение Maxxx.!!!. » 19.02.2007 (Пн) 17:49

EUGY писал(а):Послать в окно SendMessage(RichTextBox1.Hwnd,EM_UNDO,0,0)


Не получается. В модуле написал:
Код: Выделить всё
Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long

А в нужной процедуре на форме:
Код: Выделить всё
SendMessage frmRTF.rtfbox.hWnd, EM_UNDO, 0, 0

Но - никаких действий не происходит. Я, наверное, где-то что-то пропустил?
Никогда так не врут, как во время войны, после охоты и перед выборами...

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

Сообщение GSerg » 19.02.2007 (Пн) 18:23

Объявление EM_UNDO, по всей видимости?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 19.02.2007 (Пн) 22:08

GSerg писал(а):Объявление EM_UNDO, по всей видимости?


Хмм... В каком-то примере я нашел такой код:
Код: Выделить всё
Const EM_UNDO = &H304

Я в модуде и написал:
Код: Выделить всё
Public  Const EM_UNDO = &H304

Или как-то по другому надо это объявить?
Никогда так не врут, как во время войны, после охоты и перед выборами...

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

Сообщение GSerg » 19.02.2007 (Пн) 22:16

Да нет, так и надо, в принципе...
И ещё надо последний 0 byval...
Хотя и первый тоже, раз у тебя такое объявление.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 19.02.2007 (Пн) 23:19

RamMerlabs писал(а):Сколько живу, всегда строку считают массивом...
По крайней мере не в VB. Народ, учите ASM!

Нервы... нервы... А ведь казалось бы, ну пропусти ты этот пост, и предыдущий с манифестом...

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 19.02.2007 (Пн) 23:33

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

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

Сообщение GSerg » 19.02.2007 (Пн) 23:40

RamMerlabs писал(а):Сколько живу, всегда строку считают массивом...
По крайней мере не в VB. Народ, учите ASM!

:roll:
Ну сделай мне из строки массив строк :neutral:

Ибо, имхо, весьма некрасиво вырывать фразу из контекста. Для целей данного топика не имеет никакого значения, представляет ли строка из себя массив байт, шортов или чего-то ещё. И подобное замечание о природе строки, на мой взгляд, ничем, кроме как неполезным показанием собственной крутизны, не является.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

EUGY
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 214
Зарегистрирован: 09.11.2006 (Чт) 22:51
Откуда: Мурманск

Сообщение EUGY » 19.02.2007 (Пн) 23:51

Call Split("устное_предупреждение_модератору", "_")
Последний раз редактировалось EUGY 20.02.2007 (Вт) 2:42, всего редактировалось 2 раз(а).

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

Сообщение GSerg » 20.02.2007 (Вт) 0:32

Я его и до того перечитал, и сейчас перечитал ещё раз. Это ты перечитай топик с начала, а потом ту фразу Maxxx.!!!., на которую ты отреагировал. И посмотри, какой массив имелся в виду, и сравни его с тем, о котором говорил ты.
Результат - в моих глазах - выглядит как ничем не обоснованный понт на тему "а я знаю, что там в строке, а вы нет".
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение GSerg » 20.02.2007 (Вт) 0:39

Тебя так смутил объяснительный оборот, выделенный тире? :roll:
Ок...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение tyomitch » 20.02.2007 (Вт) 9:35

RamMerlabs писал(а):Я просто обратил внимание, на то что строка в нормальных языках - массив байтов.

Так, повод для холивара готов :-)

В Жаве строка -- это массив двухбайтных юникодных символов.
Стало быть, Жава -- это ненормальный язык?
Изображение

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 20.02.2007 (Вт) 11:44

с таким подходом, переменная или же массив ЛЮБОГО типа есть массив байтов
Весь мир матрица, а мы в нем потоки байтов!

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

Сообщение GSerg » 20.02.2007 (Вт) 13:12

Не вижу разницы между содержимым первых кавычек и вторых.
Более того, данным постом автор опровергает сказанное !Viper!ом при помощи подтверждения сказанного !Viper!ом, что само по себе забавно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение GSerg » 20.02.2007 (Вт) 13:32

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

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 20.02.2007 (Вт) 14:30

GSerg писал(а):Да нет, так и надо, в принципе...
И ещё надо последний 0 byval...
Хотя и первый тоже, раз у тебя такое объявление.


Блин, ну если все правильно, то почему же не работает? В модуле я эту функцию объявил, конствнту тоже. Я даже пробовал перед Declare ставить Public - никакой реакции... Даже понять не могу, где я еще мог ступить :?
Никогда так не врут, как во время войны, после охоты и перед выборами...

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

Сообщение GSerg » 20.02.2007 (Вт) 14:36

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

Maxxx.!!!.
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 114
Зарегистрирован: 13.03.2006 (Пн) 17:10
Откуда: Барнаул

Сообщение Maxxx.!!!. » 20.02.2007 (Вт) 17:56

GSerg писал(а):
GSerg писал(а):И ещё надо последний 0 byval...
Хотя и первый тоже, раз у тебя такое объявление.


А это как понимать? Т.е., еще что-то надо объявить?
Никогда так не врут, как во время войны, после охоты и перед выборами...

След.

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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 34

    TopList