powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопросы по структуре, организации и принципам кода в VB6->
180 сообщений из 180, показаны все 8 страниц
Вопросы по структуре, организации и принципам кода в VB6->
    #36631485
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этой теме планирую задавать вопросы касающиеся программирования в VB6. Принципы, организация и обработка данных. Спасибо.

Пишу простенькую программку типа проводника в хрюшке. В разных частях программы встречается:
Код: plaintext
1.
2.
Dim db As Database
Dim rstCustomers As DAO.Recordset
Set db = OpenDatabase("C:\ADLib\DbLib\MainLib.mdb")
можно эти объявления и функцию вынести в глобальные (доступные другим частям модуля) раздела?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36631509
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiВ этой теме планирую задавать вопросы касающиеся программирования в VB6.Было бы странно здесь видеть вопросы, посвященные кулинарии))
tutti-fruttiможно эти объявления и функцию вынести в глобальные (доступные другим частям модуля) раздела?Не только можно, но и нужно, особенно Dim db и Set db.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36631518
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если объявить в модуле ( Module ) процедуру / функцию либо положить в public Connection то можно в любой части воспользоваться. Я обычно работу с базой данных запихиваю в класс, а в модуле делаю public переменную со ссылкой на созданный объект.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632557
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, можно двигать в редакторе код не по одной строке пробелами, а сразу блоком строк?
Есть возможность подсвечивать части программы различным цветом шрифта/фона?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632577
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiПодскажите, можно двигать в редакторе код не по одной строке пробелами, а сразу блоком строк?

Tab и Shift+Tab


tutti-fruttiЕсть возможность подсвечивать части программы различным цветом шрифта/фона?

нет
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632584
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tutti-frutti
> Подскажите, можно двигать в редакторе код не по одной строке пробелами, а сразу блоком строк?

Выделить несколько строк и Tab это увеличивается отступ, а Shift+Tab - уменьшается отступ. В настройках тулбаров много
кнопочек можно "вытащить" на свет и пользоватся
Я например вытаскиваю коментирование/раскоментирование

> Есть возможность подсвечивать части программы различным цветом шрифта/фона?

Нет.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632585
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiПодскажите, можно двигать в редакторе код не по одной строке пробелами, а сразу блоком строк?

Tab и Shift+Tab


tutti-fruttiЕсть возможность подсвечивать части программы различным цветом шрифта/фона?

нет

Супер:) А я пробел ломаю...0
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632751
zchvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносЯ например вытаскиваю коментирование/раскоментирование
А мне можно этому научиться? В MS Office?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632764
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: zchvv

Учу!
Делаем раз: - Открываем (мне больше нравится Ексель) Ексель.
Делаем два: - Нажимаем Alt+F11
Делаем три: - На панели инструментов, кликаем правой кнопкой и выбираем пункт "Настройка"
Делаем четыре: - Выбираем закладку "Команды". В левом списке пункт "Edit", в правом списке ищем "Comment Block" или
"Uncomment Block". Вытаскивем их в удобное место на тулбары.
Бонус: С нажатой клавишей Alt можно перемещать кнопки на тулбарах :)

Удачи!

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632769
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zchvvИгорь ГорбоносЯ например вытаскиваю коментирование/раскоментирование
А мне можно этому научиться? В MS Office?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632849
zchvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо! Всегда, комментируя построчно, думал: ну почему же ОНИ не догадались это запрограммировать? А ОНИ догадались!!!
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632861
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zchvvБольшое спасибо! Всегда, комментируя построчно, думал: ну почему же ОНИ не догадались это запрограммировать? А ОНИ догадались!!!

Полазьте там, может еще чего полезное найдете.
Я лично вытаскиваю себе еще кнопку Start With Full Compile
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36632921
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносЯ например вытаскиваю коментирование/раскоментированиеАналогично, но ещё их же в контекстное меню. Очень удобно.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36633061
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бенедиктещё их же в контекстное меню. Очень удобно.Шайтанама! Почему я не додумался?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36633144
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyШайтанама! Почему я не додумался?

Что, в контекстное меню можно что-то всунуть?

Я еще не придумал что, но как?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36633159
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БенедиктИгорь ГорбоносЯ например вытаскиваю коментирование/раскоментированиеАналогично, но ещё их же в контекстное меню. Очень удобно.я одно время пробовал вытащить это в контекстное меню, но не нашел способа. А теперь уже и не нужно, вполне хватает двух кнопок на тулбаре

P.S. Вау! Сколько знакомых ников
Всем привет
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36633444
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

Только что попробовал, все очень просто выносится в контекстные меню. Почему раньше(лет 10 назад) не получалось Х. его З.

По пунктам:
Повторяем делаем раз, два, три.
Делаем четыре: переключаемся на закладку "Панели инструментов" и ставим птичку на пункте "Контекстные меню". Появляется панель с тремя пунктами. Наш пункт второй - "Code Windows", в котором есть два подпункта - "Code Window" и "Code Window (Break)", именно то что нужно :)
Делаем пять: Выбираем закладку "Команды". В левом списке пункт "Edit", в правом списке ищем "Comment Block" или "Uncomment Block" и тащим их(по очереди ) на панельку "Контекстные меню", там распахивается каждый из пунктов, и бросаем в нужной позиции на меню "Code Window" и "Code Window (Break)".

Всё
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36633454
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь, что-то ты какую-то кривую ссылу дал...
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36633470
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProAntonariyШайтанама! Почему я не додумался?

Что, в контекстное меню можно что-то всунуть? То, что в любое меню и тулбар можно всунуть любую команду, я знал, но не догадался, что всунуть кнопки комментирования будет удобно.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36633475
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProИгорь, что-то ты какую-то кривую ссылу дал...

Сори, что-то проглючило меня с утра :)

По пунктам:
Повторяем делаем раз, два, три.
Делаем четыре: переключаемся на закладку "Панели инструментов" и ставим птичку на пункте "Контекстные меню". Появляется панель с тремя пунктами. Наш пункт второй - "Code Windows", в котором есть два подпункта - "Code Window" и "Code Window (Break)", именно то что нужно :)
Делаем пять: Выбираем закладку "Команды". В левом списке пункт "Edit", в правом списке ищем "Comment Block" или "Uncomment Block" и тащим их(по очереди ) на панельку "Контекстные меню", там распахивается каждый из пунктов, и бросаем в нужной позиции на меню "Code Window" и "Code Window (Break)".
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637550
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, можно вытащить иконки из ImageList?
Мне нужно добавить иконку "новый лист" но что-то не удается это сделать:(
Думаю ,может можно эти иконки вытащить а потом попробовать их перезалить в другой ImageList
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637594
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiСкажите, можно вытащить иконки из ImageList?

Можно

tutti-fruttiМне нужно добавить иконку "новый лист" но что-то не удается это сделать:(


Так-так-так. Не зажевываем и не мямлим.
Что именно делаем и что именно не получается.
И куда добавить?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637622
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiСкажите, можно вытащить иконки из ImageList?

Можно

tutti-fruttiМне нужно добавить иконку "новый лист" но что-то не удается это сделать:(


Так-так-так. Не зажевываем и не мямлим.
Что именно делаем и что именно не получается.
И куда добавить?

вот на картинке мой ImageList, в нем нет иконки с изображением нового листа, а мне нужно чтоб был такой пункт/кнопка. Пытаюсь добавить иконку с изображением листа пустого, но бесик выдает сообщение что мол нельзя добавить. пробую разные иконки - то же самое.
Вот если бы они эти иконки у меня были в виде иконок а не в виде существующего (мастером форму делал) ImageList, то я бы еще мог как-то примудриться залить недостающую, а так...
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637660
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiвот на картинке мой ImageList , в нем нет иконки с изображением нового листа, а мне нужно чтоб был такой пункт/кнопка .
Блин!
Можно как-нибудь по-русски?
Вам нужно, чтобы иконка попала в ImageList или на кнопку? Откуда попала, с диска, с другой кнопки, из базы? Что такое "пункт"?

tutti-fruttiПытаюсь добавить иконку с изображением листа пустого, но бесик выдает сообщение что мол нельзя добавить. пробую разные иконки - то же самое.
В дизайн-тайме? В рантайме? Как пытаетесь добавить? Какое сообщение выдает?

tutti-fruttiВот если бы они эти иконки у меня были в виде иконок
Что такое "иконки в виде иконок"? В виде файлов? Называйте вещи своими именами


Будете так голову морочить - надоест отвечать. Излагайте ваши мысли, мы не умеем копаться в вашей голове, это к психиатрам на форум.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637686
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro


В дизайн-тайме, при попытке добавить новую иконку к ImageList получаю сообщение об ошибке:

Иконок из ImageList у меня нет ,посмотреть что там у них за тип соответственно нет возможности.
Но мне эти иконки подходят в плане дизайна (классические)

Как быть?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637689
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что вам непонятно в данном сообщении?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637726
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЧто вам непонятно в данном сообщении?
Понятно все. Не ясно шо с этим делать?
Я не могу добавить иконку (пох в связи с чем) и не могу создать новый имиджлист, так как именно таких иконок у меня нет.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637733
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiПонятно все. Не ясно шо с этим делать?
Я не могу добавить иконку (пох в связи с чем)

Можете
Устранив то, что написано в сообщении.

tutti-fruttiи не могу создать новый имиджлист, так как именно таких иконок у меня нет.

Этот набор слов я вообще не понимаю. Почему вы не можете создать имиджлист? (пох, что у вас нет иконок)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637754
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того ,чтоб устранить, то что написано в собщении, нужно знать какие именно иконки лежат в имедже. Не просто размеры а всякие там особености типа глубины цвета и кол-ва размеров.
Ну вот если бы они у меня были, то я бы еще что-то мог предположить, но так как я сделал все мастером в VB6, то фиг его знает какие мне иконки подобрать, чтоб этот конкретный имидж их схавал

Имидж новый я могу создать, но с ДРУГИМИ иконками, так как таких в виде *.ico файлов у меня нет.
(и совсем не пох что у меня нет иконок!)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637772
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiДля того ,чтоб устранить, то что написано в собщении, нужно знать какие именно иконки лежат в имедже. Не просто размеры а всякие там особености типа глубины цвета и кол-ва размеров.
Для того ,чтоб устранить, то что написано в собщении, нужно просто перевести сообщение на русский язык. Там написано буквально - "ImageList не может быть модифицирован, пока он связан с другим контролом". Я же спросил, что непонятно в сообщении.


tutti-fruttiИмидж новый я могу создать, но с ДРУГИМИ иконками, так как таких в виде *.ico файлов у меня нет.
(и совсем не пох что у меня нет иконок!)

Для создания ImageList иконки не нужны, поэтому я просил вас выражать мысли по-русски.

А вообще:
1) выделяем ImageList
2) Copy
3) Paste
4) Вротмненоги - мы имеем копию имиджлиста со всеми иконками. Как ты это сделал, нет, Дэвид Блейн, нет!
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637812
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что касается того, как в принципе достать иконку откуда бы то ни было - неужели вы никогда не слышали про клавишу PrintScreen? Правда? Никогда-никогда?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637858
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА что касается того, как в принципе достать иконку откуда бы то ни было - неужели вы никогда не слышали про клавишу PrintScreen? Правда? Никогда-никогда?

Вот я сегодня специально для Вас украду конфетку в супермаркете. Страшно будет на кассах, но ничего, постараюсь выдержать суровые взгляды блюстителей.
Знаете для чего? А для того ,чтоб Ваша характеристика в мой адрес, заполучила в финале жирный и яркий аккорд. :)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637861
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiВот я сегодня специально для Вас украду конфетку в супермаркете. Страшно будет на кассах, но ничего, постараюсь выдержать суровые взгляды блюстителей.
Знаете для чего? А для того ,чтоб Ваша характеристика в мой адрес, заполучила в финале жирный и яркий аккорд. :)

Когда сделаете, пишите в мыло - дам адрес, куда ее выслать.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637872
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiВот я сегодня специально для Вас украду конфетку в супермаркете. Страшно будет на кассах, но ничего, постараюсь выдержать суровые взгляды блюстителей.
Знаете для чего? А для того ,чтоб Ваша характеристика в мой адрес, заполучила в финале жирный и яркий аккорд. :)

Когда сделаете, пишите в мыло - дам адрес, куда ее выслать.

Я передумал. Как-то уж слишком Вы ко мне потребительски отнеслись..бгг
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36637878
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiЯ передумал. Как-то уж слишком Вы ко мне потребительски отнеслись..бгг

Хорошо. Тогда не будет возможного трехлетнего перерыва в нашем общении. :)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640293
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подмагните советом:

Нужно по двойному клику на элементе Листвью открыть некую форму, в поля которой записать значения связанные с полями записи в лист боксе. Отредактировать их в случае необходимости, а потом закрыть форму и вернуть элементу Листвью его отредактированные поля.

Я представляю себе это так: По двойному клику я открываю форму и каким-то образом прописываю некоторому (.Tag?) свойству формы индекс элемента (совпадает с уникальным ключем в базе данных)
В форме делаю запрос к базе с фильтром по этому ключу, и по значению этого ключа вытаскиваю инфу в поля формы. После редактирования обновляю инфу в базе данных и закрываю форму.
Не ясно сейчас, как мне после закрытия формы редактирования проапдейтить инфу непосредственно на Листвью!?
И вообще, как вам такой ход? :)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640298
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно форме отдать переменную типа ListItem со ссылкой на редактируемый элемент листвью.

Тогда форма сама сможет и индекс у него считать и обновить его при необходимости.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640302
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProМожно форме отдать переменную типа ListItem со ссылкой на редактируемый элемент листвью.

Тогда форма сама сможет и индекс у него считать и обновить его при необходимости.

Круть, а как форме передать ListItem ???
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640309
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сейчас открываю форму вот так:
Код: plaintext
1.
2.
        With Forms.Add("frmPropComponents")
        .Show
        End With
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640315
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiКруть, а как форме передать ListItem ???

Ну, например, объявить на форме публичную переменную типа ListItem
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640317
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
        With Forms.Add("frmPropComponents")
        .Show
        .MyListItem=ListView1.SelectedItem
        End With

...типа
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640319
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiКруть, а как форме передать ListItem ???

Ну, например, объявить на форме публичную переменную типа ListItem

Интересненький Вы молодой человек! Так яж попаду в другую форму, и что-же я там буду иметь? Область видимости переменной заканчивается модулем формы, што же это получится такое? Мне в форме А нужно иметь ListItem из формы Б
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640321
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только надо понимать, что Form_Load сработает раньше, чем переменная будет передана.
Так что нужно будет объявить еще что-то вместо Form_Load. Можно даже сразу с параметром нужным

Код: plaintext
1.
2.
3.
        With Forms.Add("frmPropComponents")
        .Show
        .StartForm ListView1.SelectedItem
        End With
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640324
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiОбласть видимости переменной заканчивается модулем формы

Вы испытываете мое терпение, неся бред уже в третий раз.

Область видимости будет такая, какой вы ее объявите
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640335
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiОбласть видимости переменной заканчивается модулем формы

Вы испытываете мое терпение, неся бред уже в третий раз.

Область видимости будет такая, какой вы ее объявите

Мы нуждаемся друг в друге приблизительно одинаково, просто Вы еще об этом не догадываетесь. Но здоровье и душевное равновесие форума, и его лучших представителей, превыше всего ,и поэтому прошу Вас больше не помогать мне ни в какой форме, в том числе и в умозрительной, я понимаю, что две три таких "тутти" и потом на коже пятна выступают.
Но я не хочу показаться заразой эдакой и по настоящему, от чистого сердца, выражаю Вам свое спасибо за всю помощь, которую Вы мне оказали!:)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640341
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiпрошу Вас больше не помогать мне ни в какой форме

предложение отклоняется

Если сочли это оскорблением, простите - в следующий раз поставлю смайлик
Просто не утверждайте в категоричной форме, а просто задайте вопрос
"Разве область видимости переменной не ограничивается модулем формы"?

И тогда я мягко предложу вам посмотреть определение переменных со словом Public

Впрочем, это вам и не нужно. Определите в вызываемой форме метод:
Код: plaintext
Public StartForm(MyListItem As ListItem)

А как вызвать - я привел выше.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640347
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiпрошу Вас больше не помогать мне ни в какой форме

предложение отклоняется

Если сочли это оскорблением, простите - в следующий раз поставлю смайлик
Просто не утверждайте в категоричной форме, а просто задайте вопрос
"Разве область видимости переменной не ограничивается модулем формы"?

И тогда я мягко предложу вам посмотреть определение переменных со словом Public

Впрочем, это вам и не нужно. Определите в вызываемой форме метод:
Код: plaintext
Public StartForm(MyListItem As ListItem)

А как вызвать - я привел выше.

Ну хорошо, на первый раз прощаю. Но предупреждаю, я взглядом умею останавливать кулера на боксовых АМдехах и выпрашивать скидки на одежду.
Завтра продолжим, очень нужна программа, еще почистить ее от гадости и глупости не забыть нуна.
Спасибо за помощь еще раз.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36640352
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Код: plaintext
Public StartForm(MyListItem As ListItem)


конечно же
Код: plaintext
Public Sub StartForm(MyListItem As ListItem)
сорри
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642279
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажите, можно сделать невидимым ListItem у ListView?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642293
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tutti-frutti
> Скажите, можно сделать невидимым ListItem у ListView?

Удалить или прокрутить вверх или вниз до состояния невидимости

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642297
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Me.ListView1.ListItems(1).Height = 0
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642320
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: tutti-frutti
> Скажите, можно сделать невидимым ListItem у ListView?

Удалить или прокрутить вверх или вниз до состояния невидимости



Удалить у меня не получается. Если я удаляю ListItem внутри цикла, то цикл разрушается.
Код: plaintext
1.
2.
3.
4.
5.
        Dim TempListItem As ListItem
        For Each TempListItem In Me.lvListView.ListItems
        ...
        Next TempListItem

...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642336
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_OneMe.ListView1.ListItems(1).Height = 0
Пишет, что только чтение:(
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642340
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tutti-frutti
> Удалить у меня не получается. Если я удаляю ListItem внутри цикла, то цикл разрушается.

А ты делай правильный цикл, от общего количества итемов, к 1 и удаляй сколько угодно, ничего не разрушится

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642341
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiKonst_OneMe.ListView1.ListItems(1).Height = 0
Пишет, что только чтение:(

тогда удаляйте, только в цикле без foreach в обратном порядке
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642347
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Onetutti-fruttiKonst_OneMe.ListView1.ListItems(1).Height = 0
Пишет, что только чтение:(

тогда удаляйте, только в цикле без foreach в обратном порядке
А это мысль.. Сейчас буду разбираться. Ты сатри, ка все хитренько получается:)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642367
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, все получилось. А я его вперед кутил, индесами минусил ,а все равно не получалось.
Ну вы тут и черти однако...
Спасибо! (но я еще не закончил, бууду спрашивать)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642369
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как? Эта тема и без меня?

tutti-fruttiСкажите, можно сделать невидимым ListItem у ListView?
сотрите его название, все subitem-ы и иконку
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642390
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удаляя Node TreeView делаю так:
Код: plaintext
1.
2.
            On Error Resume Next
            Me.tvTreeView.Nodes.Remove (TempListItem.Key)
            On Error GoTo  0 
на случай, если в дереве нет ключа TempListItem.Key (в дереве хранятся только папки)
как по другому/правильнее проверить существование Node?

И самое главное ,где вообще можно САМОМУ посмотреть ответы на свои вопросы?
У меня есть только Object Browser, но там все в виде оглавления к книге, а мне нужно контекстно смотреть и может быть с примерами. Ходил на сайт микрософот, но так как-то коряво все так..
Вот мне нужно много чего еще: сортировки по кликам на столбцах, копирование, вставка, я вас заморю тут распросами.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642401
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-frutti
как по другому/правильнее проверить существование Node?

Только если перебрать всю коллекцию, но это глупо, проще так.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642406
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiИ самое главное ,где вообще можно САМОМУ посмотреть ответы на свои вопросы?

У вас поразительная скорость обучения и развитый метод тыка.
Приятно с вами работать.

Я никак только не пойму, у вас есть опыт программирования в принципе? Если нет - то вы просто гений. Хотя есть предположение, что вы когда-то программировали на линейных языках, без использования ООП.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642421
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiИ самое главное ,где вообще можно САМОМУ посмотреть ответы на свои вопросы?

У вас поразительная скорость обучения и развитый метод тыка.
Приятно с вами работать.

Я никак только не пойму, у вас есть опыт программирования в принципе? Если нет - то вы просто гений. Хотя есть предположение, что вы когда-то программировали на линейных языках, без использования ООП.

Мне нужно в течении этого года написать не сложную программу, если не напишу, то буду вынужден и дальше проживать под одной крышей с Тещей. И я далеко не спроста написал "Теща" с большой буквы.
До этого немного работал с Access. Планирую читать книги по С# и решать что мне будет сподручнее:
Access,VB,VB.Net,C++,C#
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642435
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-frutti,

Наличие стимула - великая вещь. Она позволяет сдвинуть в горы и полететь в космос.
Я выражаю вам горячую поддержку! *THUMBS UP*
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642474
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую делать копирование элементов ListView.
Для этого хочу определить глобальный массив динамического типа в котором буду хранить ключи элементов. Заливать в него данные буду перебирая коллекцию ListItems проверяя свойство Selected ListItem.
Выделять память под элементы массива буду с помощью ReDim, аргументом выступает размер будущего массива.

Можно ли получить количество выделенных элементов ListView без перебора и анализа зн. свойства Selected?

Сейчас у меня вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim i, CountSelected As Integer

CountSelected =  0 

    For i =  1  To lvListView.ListItems.count
        If (lvListView.ListItems.Item(i).Selected) Then
            CountSelected = CountSelected +  1 
        End If
    Next i
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642480
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiДля этого хочу определить глобальный массив динамического типа ...
Выделять память под элементы массива буду с помощью ReDim, аргументом выступает размер будущего массива.

Вместо динамического массива лучше, удобнее использовать объект типа Collection
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642931
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую пользоваться Collection, есть парочка вопросов.
а) Если я определил CollectionCopyItems глобально, то правильно ли я очищаю CollectionCopyItems конструкцией
Код: plaintext
Set CollectionCopyItems = Nothing
?
б) У Collection есть метод .Add аргументами которого выступает (Item, [Key], [Before], [After]). Я прописываю в PopUpMenuListViewCopy_Click первый аргумент CollectionCopyItems.Add (StrKey) тоже не ясно правильно ли я это делаю ,зачем остальные аргументы?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Dim CollectionCopyItems As New Collection
...
Private Sub PopUpMenuListViewCopy_Click()
Dim TempListItem As ListItem
Dim i  As Integer
Dim StrKey As String


Set CollectionCopyItems = Nothing
   
    For i =  1  To lvListView.ListItems.count
        If (lvListView.ListItems.Item(i).Selected) Then
            StrKey = Mid(lvListView.ListItems.Item(i).Key,  2 , Len(lvListView.ListItems.Item(i).Key))
            CollectionCopyItems.Add (StrKey)
            Debug.Print StrKey
        End If
    Next i
    
    Me.lvListView.SelectedItem = Nothing

End Sub


Private Sub PopUpMenuListViewPaste_Click()

   Dim TempStr As String
   Dim i As Integer
   ...
   For i =  1  To CollectionCopyItems.count
      TempStr = CollectionCopyItems.Item(i)
      ...
   Next i
   ...

End Sub


...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642957
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiПробую пользоваться Collection, есть парочка вопросов.
а) Если я определил CollectionCopyItems глобально, то правильно ли я очищаю CollectionCopyItems конструкцией

Чтобы не запутаться в терминологии.
Очищают коллекцию методом .Clear
А вы ее уничтожаете
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642964
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiПробую пользоваться Collection, есть парочка вопросов.
а) Если я определил CollectionCopyItems глобально, то правильно ли я очищаю CollectionCopyItems конструкцией

Чтобы не запутаться в терминологии.
Очищают коллекцию методом .Clear
А вы ее уничтожаете

.Clear нету, есть .Remove
Но это нужно перебирать всю ее и по одному удалять, а если я делаю:
Код: plaintext
Set CollectionCopyItems = Nothing
, то как же потом не вызывает ошибки
Код: plaintext
CollectionCopyItems.Add (StrKey)
, ведь Collection уничтожена? И вообще нормально так делать? Мне нужно перед каждым копированием очистить этот самый Collection, чтоб в нем после заполнения были только данные актуальные.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642965
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiб) У Collection есть метод .Add аргументами которого выступает (Item, [Key], [Before], [After]). Я прописываю в PopUpMenuListViewCopy_Click первый аргумент CollectionCopyItems.Add (StrKey) тоже не ясно правильно ли я это делаю ,зачем остальные аргументы?

Key играет ту же роль, что и Key в ListItem. То есть
а) Он должен быть уникальным
б) По нему можно обращаться к элементу коллекции (а не по индексу)

Кроме того, коллекцию можно перебрать с помощью For Each

А еще элементом коллекции может быть не только переменная, но и экземпляр объекта. То есть можно соорудить свой класс с блэкджеком и шлюхами, плодить его экземпляры и класть в коллекцию (но это на будущее, тут вам это не нужно).

Ну а Before,After очевидно нужды для того, чтобы добавить элементы в коллекцию перед или после какого-нить элемента. Смысл имеет только если вы хотите перебирать коллекцию по индексу и последовательность элементов имеет значение. Лично я никогда не пользовался.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642969
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiведь Collection уничтожена? И вообще нормально так делать? Мне нужно перед каждым копированием очистить этот самый Collection, чтоб в нем после заполнения были только данные актуальные.

Тогда определяйте переменную коллекции так:
Код: plaintext
Dim CollectionCopyItems As Collection

Перед использованием делайте так:
Код: plaintext
Set CollectionCopyItems = New Collection

Ну и уничтожайте как уничтожаете.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36642973
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок. Спасибо.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36643332
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот нужно мне пододвинуть элемент на форме не на шаг а на половину шага сетки формы, где это настроить/как это сделать?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36643349
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiВот нужно мне пододвинуть элемент на форме не на шаг а на половину шага сетки формы, где это настроить/как это сделать?

в дизайнтайме?
шаг сетки в настройках редактора можно менять.

А вообще, если сетку не хочется кадлый раз перестраивать, можно просто менять руками свойства Top и Left элемента.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644344
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите какое событие возникает в тот момент ,когда форма становится активной?
Мне нужно после закрытия диалогового окна, в сл. необходимости, выполнить некоторые действия на вызывающей этот диалог форме.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644346
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiПодскажите какое событие возникает в тот момент ,когда форма становится активной?
Мне нужно после закрытия диалогового окна, в сл. необходимости, выполнить некоторые действия на вызывающей этот диалог форме.

Вы не поверите. Activate.

Тока эта... у вас диалоговое окно случайно не модальное?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644355
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiПодскажите какое событие возникает в тот момент ,когда форма становится активной?
Мне нужно после закрытия диалогового окна, в сл. необходимости, выполнить некоторые действия на вызывающей этот диалог форме.

Вы не поверите. Activate.

Тока эта... у вас диалоговое окно случайно не модальное?

Я хотел его сделать модальным, но сходу что-то не нашел проперти такой. Ну короче, должно быть модальным. Обратите внимание, как я элегантно вплел в один вопрос другой.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644361
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiЯ хотел его сделать модальным, но сходу что-то не нашел проперти такой. Ну короче, должно быть модальным. Обратите внимание, как я элегантно вплел в один вопрос другой.

У метода Show формы есть параметр, позволяющий показать ее модально.
И тогда такой интересный момент - выполнение кода вызвавшей формы приостанавливается до закрытия модельной формы. То бишь не нужно вам никакое событие Activate.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644362
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiОбратите внимание, как я элегантно вплел в один вопрос другой.
Обратите внимание, как я эленгантно намекнул о бессмысленности первого вопроса
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644373
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiОбратите внимание, как я элегантно вплел в один вопрос другой.
Обратите внимание, как я эленгантно намекнул о бессмысленности первого вопроса

Да, спасибо большущее! Мне есть чему учиться, а благодаря нашему с Вами общению - есть у кого.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644376
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок. пойду поставлю себе нерукотворный памятник...
очередной....
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644921
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вот такая переменная:
Код: plaintext
Dim TempStrClip As String

В программе она инициализируется. В результате она (переменная) беременна вот этим:
Код: plaintext
1.
2.
3.
4.
5.
6.
"ID	ParentID	Name	Library Ref	Footprint Ref
2671	1235	1k	Res	RES0850
2672	1235	2k	Res	RES0850
2673	1235	3k	Res	RES0850
2674	1235	4k	Res	RES0850
"
Нужно разобрать на части эту "табличку" и каждый элемент обработать.

Планирую использовать функции, которые будут искать "энтеры" и таким образом разбивать инфу на строки, а потом искат в каждой строке "табы" и разбивать ее на отдельные слова.
Скажите правильно ли я потрачу время вгрызаясь в спецсимволы и индексы итераций?
Спасибо.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644932
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри функцию Split

ЗЫ: после того, что между нами было, предлагаю на "ты"
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644935
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал диалоговое окно модальным:
Код: plaintext
1.
2.
3.
...
.Show vbModal
...
На форме диалога грид (GridEX 2000), в случае если в гриде несколько строк- не вызывается контекстное меню для этой формы, вот код для его (меню) открытия:
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub GridEX1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
    
    If (Button =  2 ) Then
        frmPropComponents.PopupMenu PopUpMenuProperty
    End If
    
End Sub

Если модальность зерэмить ,то работает четко.
Шо за дела? Спасибо.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644941
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, на то оно и модальное, чтобы карась не дремалне открывалось на нем что попало
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644942
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПосмотри функцию Split

ЗЫ: после того, что между нами было, предлагаю на "ты"

Да, конечно, с удовольствием.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644950
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProПохоже, на то оно и модальное, чтобы карась не дремалне открывалось на нем что попало

Интересно, то что если строка в гриде одна, то срабатывает и при модальном режиме открытия этой формы. Траблы только если строк на гриде много.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36644960
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiИнтересно, то что если строка в гриде одна, то срабатывает и при модальном режиме открытия этой формы. Траблы только если строк на гриде много.

Вот и не пользуюсь я сторонними компонентами...
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36646165
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiИнтересно, то что если строка в гриде одна, то срабатывает и при модальном режиме открытия этой формы. Траблы только если строк на гриде много.

Вот и не пользуюсь я сторонними компонентами...

Я нашел хелп к компоненту, буду читать.

Вот у меня еще один вопрос родился в промежутке между чисткой картофеля и уборкой рабочего стола:
А как быть если необходимо удалить одну "строку" в двухмерном массиве? Допустим я знаю индекс строки, получается, что мне нужно всем остальным (большим) индексам строк присвоить значения равные текущим минус один? А потом еще ReDim ом его пожать?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36646167
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiВот у меня еще один вопрос родился в промежутке между чисткой картофеля и уборкой рабочего стола:
А как быть если необходимо удалить одну "строку" в двухмерном массиве? Допустим я знаю индекс строки, получается, что мне нужно всем остальным (большим) индексам строк присвоить значения равные текущим минус один? А потом еще ReDim ом его пожать?

Вот поэтому я люблю коллекции
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36646208
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProВот поэтому я люблю коллекции

Тем более, если речь идет о таком массиве.
Он ведь по смыслу не массив двумерный. Это по сути - набор записей. И поэтому работать-то с ним удобнее именно в такой концепции. Объявить пользовательский тип с перечисленными полями, а экземпляры этого типа засовывать в коллекцию.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36647964
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спсибо, решил вовсе отказаться от массива а использовать существующую коллекцию ListItems объекта ListView. Вот все бы ничего, но не получается из формы В добавить ListItem на ListView в форме А

Код: plaintext
1.
2.
3.
4.
'По нажатию кнопки
Private Sub Command1_Click()
Dim itmX As Object
Set itmX = frmMain.lvListView.ListItems.Add(, "@" & "1000", "Hello!")
End Sub

что я не так делаю?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36647996
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiчто я не так делаю?

Не приводите текст ошибки
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36647998
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаю
Как вызываете форму?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648002
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЗнаю
Как вызываете форму?

Ошибки не генерит компилятор.
форму диалога открываю так:
Код: plaintext
1.
2.
    With Forms.Add("frmPropComponents")
        .Show 
    End With
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648029
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы точно в VB 6 работаете?

Код: plaintext
frmPropComponents.Show
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648084
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiShocker.ProЗнаю
Как вызываете форму?

Ошибки не генерит компилятор.
форму диалога открываю так:
Код: plaintext
1.
2.
    With Forms.Add("frmPropComponents")
        .Show 
    End With


Тогда на при попытке обратиться к форме так, как ты привел, приводит к запуску ЕЩЕ ОДНОЙ формы.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648090
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТогда на при попытке обратиться к форме так, как ты привел, приводит к запуску ЕЩЕ ОДНОЙ формы.

Невидимой, потому ты и не врубаешься, что происходит.

Я тебе уже где-то приводил, как можно передать в другую форму ссылку на объект.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648643
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фух, немножко освободился, поподробнее объясню.

Дело в том, что если пишешь Form1.Show или Form1.ListView1.ListItems, то VB неявно создает экземпляр формы Form1, если таковой не был создан ранее. Причем Form1.Show сразу этот экземпляр показывает, все остальные вызовы - нет.
Это удобно для студентов с двумя формами, но неудобно для серьезной программы, в частности потому, что нельзя таким способом сделать несколько экземпляров одной формы.

Поэтому, не обращай внимание на замечание Konst_One, подход через Forms.Add более серьезен. Однако тогда не надо пользоваться обращением к форме напрямую по имени (потому что в этом случае создастся еще один экземпляр, невидимый). Тут два варианта: либо вести реестр запущенных форм (это может быть нужно с разными целями), либо передавать ссылку на конкретный экземпляр формы другой форме.

Ну либо, если нужно по простому и несколько экземпляров не требуется, можно обращаться через Form1.Что-то, но тогда и грузить форму надо через Form1.Show
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648744
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форма "frmMain" - Главная форма моей программы
Форма "frmPropComponents" - Диалоговая форма

В форме frmMain, по определенному событию делаю:
Код: plaintext
1.
2.
3.
       With Forms.Add("frmPropComponents")
        .Show
        .StartForm lvListView
        End With
таким образом передаю ссылку на lvListView форме frmPropComponents


в диалоговой форме "frmPropComponents" делаю так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim LocalMyListView As ListView
...
Public Sub StartForm(MyListView As ListView)
...
Set LocalMyListView = MyListView
...
End Sub

таким образом создаю еще одну переменную которая будет ссылаться на lvListView формы frmMain


где-то там, в недрах процедур и функций формы "frmPropComponents" делаю :
Код: plaintext
1.
2.
3.
4.
5.
 
...   
Dim itmX As Object
Set itmX = LocalMyListView.ListItems.Add(, "@" & "1001", "Hello!")
...

Вот так и нужно?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648749
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, один из вполне приемлемых вариантов.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648857
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, спасибо, получилось. Правда пришлось
Код: plaintext
1.
Dim LocalMyListView As ListView
задвинуть в модуль класса, если я правильно называю этот модуль, и объявить его так:
Код: plaintext
Public LocalMyListView As ListView
Не знаю почему, но если он (объект) был объявлен на уровне модяля формы, то в определенный момент он разрушался и было невозможно сквозь него работать с коллекциями ListItems исходного ListView
Ну да бог с ним, тут я смотрю нужно что-то почитать, и за один подход фик осилить.

Чищу код в первом приближении, и хочу вот эту повторяющуюся сущность:
Код: plaintext
1.
2.
Dim db As Database
Dim rstCustomers As DAO.Recordset
Set db = OpenDatabase("C:\ADLib\DbLib\MainLib.mdb")

описать один раз в модуле класса.
Так и сделал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public db As Database
Public rstCustomers As DAO.Recordset

Sub Main()
    Set db = OpenDatabase("C:\ADLib\DbLib\MainLib.mdb")
    Set fMainForm = New frmMain
    fMainForm.Show
End Sub

Все было нормально, пока я не добрался до рекурсивной функции/процедуры. Дело в том, что если функция вызывает сама себя, то переменная (а рекордсет это тоже переменная) должна быть автоматической и определенной/инициализированной на уровне функции. Короче говоря, у меня не получилось заставить рекурсивную функцию работать с внешним рекордсетом.

---
Есть ли какие-то общие правила по оформлению кода в VB?
ПО размещению функций, переменных, объектов. Стили коментирования и т.д.
Спасибо!
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648859
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у меня в программе испоьзуется сторонний грид, который я инсталлировал у себя на машине с помощью фирменного инсталятора, то как мне распространять свою программу? Нужно найти программу которая будет создавать инсталяху, и учится интегрировать в нее активХ компоненты, файлы и прочее? Правильно я все понимаю?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648879
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiНе знаю почему, но если он (объект) был объявлен на уровне модяля формы, то в определенный момент он разрушался и было невозможно сквозь него работать с коллекциями ListItems исходного ListView
Странно, не должно быть до момента выгрузки формы.

tutti-fruttiВсе было нормально, пока я не добрался до рекурсивной функции/процедуры. Дело в том, что если функция вызывает сама себя, то переменная (а рекордсет это тоже переменная) должна быть автоматической и определенной/инициализированной на уровне функции. Короче говоря, у меня не получилось заставить рекурсивную функцию работать с внешним рекордсетом.
Без бутылкикода не разберемся

tutti-fruttiЕсть ли какие-то общие правила по оформлению кода в VB?
ПО размещению функций, переменных, объектов. Стили коментирования и т.д.

Ну это каждый свое нарабатывает.
Я, например, завожу модули под группы публичных функций и глобальные переменные.

Ну и естественно, инкапсуляция и еще раз инкапсуляция. Под работы над определенными объектами по максимуму делаю классы. Делаю классы-надстройки над стандартными объектами - в частности формами, а все контролы формы пихаю в юзерконтролы (фактически из стандартных контролов использую только кнопки и метки).
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648887
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiЕсли у меня в программе испоьзуется сторонний грид, который я инсталлировал у себя на машине с помощью фирменного инсталятора, то как мне распространять свою программу? Нужно найти программу которая будет создавать инсталяху, и учится интегрировать в нее активХ компоненты, файлы и прочее? Правильно я все понимаю?

Тут я плохой советчик, потому что пользуюсь штатным P&D Wizard - просто у меня к инсталлятору минимальные требования, он меня удовлетворяет, причем все штатные библиотеки, плюс референсы на некоторые внешние библиотеки подтянул автоматом на основе анализа файла проекта.

Но тут этот инсталлятор - моветон. Народ рекомендует InnoSetup, я его не видал.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36648900
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiВсе было нормально, пока я не добрался до рекурсивной функции/процедуры. Дело в том, что если функция вызывает сама себя, то переменная (а рекордсет это тоже переменная) должна быть автоматической и определенной/инициализированной на уровне функции. Короче говоря, у меня не получилось заставить рекурсивную функцию работать с внешним рекордсетом.

А может и догадался, о чем ты.
У рекордсета есть метод Clone
Попробуй его. Типа
Код: plaintext
1.
Dim LocalRs As DAO.Recordet
Set LocalRs = rstCustomers.Clone
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36657040
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно перебрать всю ветку в TreeView и удалить из нее ноды, кроме первого
Делаю так:
Код: plaintext
1.
2.
            For i = tvTreeView.SelectedItem.Parent.LastSibling.Index To (tvTreeView.SelectedItem.Parent.Index) +  1  Step - 1 
                tvTreeView.Nodes.Remove (tvTreeView.Nodes(i).Key)
            Next i
что скорее всего неправильно. Подсоветуйте правильный путь. Спасибо!
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36657041
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну соответственно нод, с которого нужно начинать удаление выделен.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36657054
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо Child у меня Parent. Спасибо, разрулил.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36657249
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiСпасибо, разрулил.
Не за что! Мы мысленно с тобой. Мы помним про Тещу.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665198
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiСпасибо, разрулил.
Не за что! Мы мысленно с тобой. Мы помним про Тещу.

Видали бы вы, как она рыбу чистит...
ладно не буду о грустном.

Итак сегодня появилась свободная минутка и вот хочу спросить, как правильно обрабатывать ошибки в небольшой программке по типу виндового проводничка? Как, в сл. ошибки метнутся в обработчик, распознать по номеру ошибку и среагировать ВНУТРИ функции понятно, но как это все увязать вместе, ведь ошибка может произойти "асинхронно" со всякого рода разумными домыслами относительно ее природы и прочего.
Что же я получу в работающей программе: аварийные сообщения с текстом и номерами траблов? Как правильно делать? Спасибо.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665200
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть у меня рекурсивная функци, которая строит дерево. Нельзя сказать, что она хорошо написана, но вопрос у меня не о чистоте и разумности кода а о логике работы с RecordSet. Скажите, когда и где именно правильно закрывать (.Close) RecordSetЫ? Вот код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Private Sub BuildSecondaryNode(Parent As Integer)

    Dim S1, S2 As String
    Dim RecursRecordSet1, RecursRecordSet2  As DAO.Recordset
    
    Set RecursRecordSet1 = db.OpenRecordset("SELECT [T_Components].ID, [T_Components].ParentID, [T_Components].Name FROM [T_Components] WHERE ((([T_Components].ParentID)=" & Parent & ") AND (([T_Components].[Footprint Ref]) is null)) ORDER BY T_Components.ID;", , dbOpenForwardOnly)
    If RecursRecordSet1.RecordCount <>  0  Then
        RecursRecordSet1.MoveFirst
        
        While Not RecursRecordSet1.EOF
            S1 = "OneClosed"
            S2 = "OneOpen"
            
            Set RecursRecordSet2 = db.OpenRecordset("SELECT * FROM [T_Components] WHERE ((([T_Components].ParentID)=" & RecursRecordSet1!ID & ")) ;", , dbOpenForwardOnly)
            If RecursRecordSet2.RecordCount <>  0  Then
                RecursRecordSet2.MoveFirst
                S1 = "ManyClosed"
                S2 = "ManyOpen"
            End If
            
            RecursRecordSet2.Close
            tvTreeView.Nodes.Add "@" & Parent, tvwChild, "@" & RecursRecordSet1!ID, RecursRecordSet1!Name, S1, S2
            
            Call BuildSecondaryNode(RecursRecordSet1!ID)
            
            RecursRecordSet1.MoveNext
            
        Wend
        
    End If
    
End Sub
Трудности вызывают рекурсивные вызовы функции.
Спасибо.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665206
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как правильно проверять на наличие записей в рекодсете? Еще я задвигаю указатель на первую структуру данных. У меня сейчас везде так:
Код: plaintext
1.
2.
3.
If RecursRecordSet1.RecordCount <>  0  Then
RecursRecordSet1.MoveFirst
...
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665208
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiВидали бы вы, как она рыбу чистит...
Неужели с хвоста?

tutti-fruttiведь ошибка может произойти "асинхронно" со всякого рода разумными домыслами относительно ее природы и прочего.

Вообще-то это требует пояснений.
Ибо, при работе с внешними источниками (БД, файлами и т.п.) ошибки очевидно должны заворачиваться в On Error-ы.

В то же время a=a+1 в общем-то заворачивать не надо. Ты можешь возразить, что мол в этом случае может возникнуть переполнение. И я отвечу - да может, если ты сам <censored>. И далее что? Вот возникла ошибка, что ты будешь делать? Покажешь пользователю текст и предложишь работать дальше? А если нельзя? Если в результате этой ошибки ты дальше поломаешь структуру данных в БД? Лично я те места, где ошибки НЕ ДОЛЖНЫ ВОЗНИКНУТЬ согласно алгоритму программы, не заворачиваю. Пусть лучше пользователь ее обнаружит и мне по голове настучит, чем проигнорирует, а потом мне удивляться результатам.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665219
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Private Sub BuildSecondaryNode(Parent As Integer)

    Dim S1, S2 As String
    Dim RecursRecordSet1, RecursRecordSet2  As DAO.Recordset
    
    Set RecursRecordSet1 = db.OpenRecordset("SELECT [T_Components].ID, [T_Components].ParentID, [T_Components].Name FROM [T_Components] WHERE ((([T_Components].ParentID)=" & Parent & ") AND (([T_Components].[Footprint Ref]) is null)) ORDER BY T_Components.ID;", , dbOpenForwardOnly)
    If RecursRecordSet1.RecordCount <>  0  Then
        RecursRecordSet1.MoveFirst
        
        While Not RecursRecordSet1.EOF
            S1 = "OneClosed"
            S2 = "OneOpen"
            
            Set RecursRecordSet2 = db.OpenRecordset("SELECT * FROM [T_Components] WHERE ((([T_Components].ParentID)=" & RecursRecordSet1!ID & ")) ;", , dbOpenForwardOnly)
            If RecursRecordSet2.RecordCount <>  0  Then
                RecursRecordSet2.MoveFirst
                S1 = "ManyClosed"
                S2 = "ManyOpen"
            End If
            
            RecursRecordSet2.Close
            Set RecursRecordSet2=Nothing
            tvTreeView.Nodes.Add "@" & Parent, tvwChild, "@" & RecursRecordSet1!ID, RecursRecordSet1!Name, S1, S2
            
            Call BuildSecondaryNode(RecursRecordSet1!ID)
            
            RecursRecordSet1.MoveNext
            
        Wend
    End If
    RecursRecordSet1.Close
    Set RecursRecordSet1=Nothing
        
    
End Sub

В общем, при правильном форматировании кода - на том же уровне вложенности, где он был открыт
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665223
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiКак правильно проверять на наличие записей в рекодсете? Еще я задвигаю указатель на первую структуру данных. У меня сейчас везде так:
Код: plaintext
1.
2.
3.
If RecursRecordSet1.RecordCount <>  0  Then
RecursRecordSet1.MoveFirst
...

Не совсем уверен за DAO, но в ADO просто проверяешь на EOF (без всякого MoveFirst)
RecordCount в определенных случаях может быть -1, так что стараюсь им не пользоваться.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665229
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, У меня вся програмка построена на вызовах функций и "ввыливание" в функции при определенных событиях.
Заворачивать в обработчики я могу соответственно только части функций. Но функция это кусочек целого! Ну например речь идет о механизме добавления новой записи в базу данных, через грид на форме, которую вызвала главная форма.
Вот пользователь ввел значения и переходит на новую запись/нажимает кнопу сохранить. В моем случае происходит куча всяких телодвижений: записывается инфа в базу, потом она оттуда вынимается для того чтобы получить ключи сгенерированые СУБД, потом заполняется сам грид и по мелочи еще проц инфу дергает туда сюда. В результате нагромождается целый вагон с прицепчиком источников ошибок, да и результат этих сбоев в логике может быть самый разный.
Если я все правильно понял, то я беру этот логически оформленный кусочек кодов (добавление записи через грид на форме вызванной из другой формы), анализирую его на предмет вероятных мест ошибок, потом каждое из найденных мест обрамляю обработчиком, и в тексте сообщения уведомляю пользователя о каком именно месте идет речь. В случае чего останавливаю выполнение программы. Пральна?
Сори за такие вопросы, просто совсем, что-то сиреневый туман..
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665237
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiПральна?

Ну тут надо смотреть конкретно.

Можно (и это более правильно, но сложнее) каждой подозрительной функции делать обработчик ошибок, который во-первых сообщит (или не сообщит) юзеру о проблеме при выполнении какой-то операции. И возвращает "наверх" код состояния (типа выполнилась/не выполнилась). Вышестоящая функция тоже принимает решение (уже без всякого обработчика, просто ориентируясь на вернутый код состояния), сообщать (или не сообщать) пользователю об ошибке и что делать дальше. Наверно ты видел такие примеры, когда у тебя выдается на одну ошибку два-три сообщения: сначала "кончилось место на диске" (вложенная функция), потом "не удалось скопировать файл" (вышестоящая функция).

А можно просто обернуть в On Error самый верхний вызов, он и обработает все ошибки, возникшие ниже.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665240
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
   
    RecursRecordSet1.Close
    Set RecursRecordSet1=Nothing
Я все врямя только лишь закрывал рекордсет, никогда его не уничтожал.
У меня в программе, для того ,чтобы не создавать в каждой функции новый рекордсет, используется Public рекордсет. В нужных местах я его открываю, работаю с ним, а потом закрываю.
Определяется и инициализируется ен у меня от так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public db As Database
Public rstCustomers, rstCustomers2 As DAO.Recordset

Sub Main()
    Dim PathToBaseProject As String
    
    PathToBaseProject = App.Path & "\MainLib.mdb"
    Set db = OpenDatabase(PathToBaseProject)
...
End Sub

Я так понял ,что кильнуть его можно и нужно один раз при закрытии главного окна прграммы. Пральна?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665245
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по поводу рекордсетов для рекурсивных функций понял, сейчас поправлю код. Я для именно рекурсивных функций инициализирую два автоматических (внутренних) рекордсета, они типа особенные и не паблик.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665251
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiУ меня в программе, для того ,чтобы не создавать в каждой функции новый рекордсет, используется Public рекордсет. В нужных местах я его открываю, работаю с ним, а потом закрываю.
Нифига не так.
Код: plaintext
Set RecursRecordSet2 = db.OpenRecordset(
создает НОВЫЙ рекордсет, а не открывает старый. И это никак не связано с Public
Держать неуничтоженный экземпляр закрытого рекордсета нет никакого смысла, это ничего не меняет, зато иногда приводит к глюкам. В общем, после Close делай =Nothing.

И еще. Такой подход чреват логическим глюком. Вот работаешь ты с глобальным рекордсетов в какой-то функции. Потом вызываешь вложенную функцию, которая тоже его использует. Ну и понимаешь, к чему это приведет.
Если глобальный коннекшн держать смысл есть (и то только при условии, что он постоянно открыт), то рекордсет, к тому же еще и закрытый - нету.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665253
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiА по поводу рекордсетов для рекурсивных функций понял, сейчас поправлю код. Я для именно рекурсивных функций инициализирую два автоматических (внутренних) рекордсета, они типа особенные и не паблик.
Ну как я уже сказал выше - паблик рекорсет и не нужен.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665256
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro , спасибо! Сейчас заварю кофе и буду размалывать глыбы мыслей и догадок которыми меня в очередной раз засыпало с Вашей легкой руки:)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665557
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-frutti,

Я прошу прощения, что влажу в вашу высокоинтеллектуальную беседу, но скажите, милейшие, а нет ли в возможности в акцессе сделать что-то наподобии хранимой процедуры?
И если это можно сделать, то может проще сделать такую процедуру, что-бы она пробегалась по дереву и строила упорядоченный рекордсет для построения. Тогда вся задача сведётся к запросу рекордсета из процедуры и цикла по всем записям с построением дерева. И не будет нужды в отслеживании рекордсетов. :) Я так строю дерево данными из SQLServer'а

Кстати, вот здесь:
Код: plaintext
tvTreeView.Nodes.Add "@" & Parent, tvwChild, "@" & RecursRecordSet1!ID
Мне кажется удобнее было добавлять собаку после числа, тогда получение кода из выбранной ноды сведется к Val(tvTreeView.SelectedItem.Key).
Да и вообще я использую такую запись:
Код: plaintext
tvTreeView.Nodes.Add CStr(Parent), tvwChild, CStr(RecursRecordSet1!ID)
Так, доступ к ноде у меня получается сразу по коду, преобразованному в строку, без дополнительных телодвижений.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665568
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос,

В принципе, безо всякой хранимки можено сделать запрос на базе UNION ALL и ORDER BY, который вернет пригодную для загрузки в дерево субстанцию. Но я пока не рискую предлагать это ТС - всему свое время....

Вот типовая загрузка моих деревьев:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Do Until tm.EOF
  On Error Resume Next
  If DeNull(tm("Parent")) = "" Then
    Set j = ls.Nodes.Add(, , tm("Key"), tm("Name"), CStr(tm("Icon")))
  Else
    Set j = ls.Nodes.Add(CStr(tm("Parent")), tvwChild, tm("Key"), tm("Name"), CStr(tm("Icon")))
  End If
  If Err =  0  Then
    j.Expanded = tm("Expanded") =  1 
    j.Tag = tm("Tag")
    If Not IsNone(tm("ForeColor")) Then j.ForeColor = tm("ForeColor")
  End If
  On Error GoTo  0 
  If ls.Nodes.Count =  1  Then j.Selected = True
  tm.MoveNext
Loop
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665577
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

А как юнионами? Нет! до завтра подумаю :)

А вот я строю дерево :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Select(m_alias)
Go Top
This.Visible = .F.
o = This.Nodes
o.Clear
This.ImageList = Thisform.olecontrol1
Scan 
	If Alltrim(Str(code_top)) = '0'
		If read_only = .T. Then
			N = o.Add(,  1 , Transform(Code)+"_", Alltrim(Name),  5 ,  5 )
			N.ForeColor = Rgb( 127 ,  127 ,  127 )
		Else
			N = o.Add(,  1 , Transform(Code)+"_", Alltrim(Name),  2 ,  1 )
		Endif
	Else
		If read_only = .T. Then
			N = o.Add(Transform(code_top)+"_",  4 , Transform(Code)+"_", Alltrim(Name),  5 ,  5 )
			N.ForeColor = Rgb( 127 ,  127 ,  127 )
		Else
			N = o.Add(Transform(code_top)+"_",  4 , Transform(Code)+"_", Alltrim(Name),  2 ,  1 )
		Endif
	Endif
	N.Tag = Transform(Code)
Endscan
Правда на фокспро
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665580
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносА как юнионами? Нет! до завтра подумаю :)
в смысле, не подсказывать?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36665812
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Shocker.Pro
> в смысле, не подсказывать?

Ну да
В принципе юнионами знаю, но это для ограниченного числа потомков. Что то типа(для трёх вложений)
Код: plaintext
1.
2.
3.
4.
5.
6.
select code, parent from t where code =  1  or parent =  1 
union all
select code, parent from t where parent in (select code from t where code =  1  or parent =  1 )
union all
select code, parent from t where parent in (
select code from t where parent in (select code from t where code =  1  or parent =  1 )
)
Или ты имел в виду что-то другое?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36666125
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбоносtutti-frutti,

нет ли в возможности в акцессе сделать что-то наподобии хранимой процедуры?

Нет, такой возможности нет. Можно использовать последние версии Access с интегрированными SQL серверами лайт версий, также можно в запросах использовать вызовы функций, но результатом работы конкретно моей программы будет поставка запросов инженерному комплексу, а он (зараза) отказывается втаскивать в свой функционал запросы с вызовами функций.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36666146
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбоносtutti-frutti,
Тогда вся задача сведётся к запросу рекордсета из процедуры и цикла по всем записям с построением дерева. И не будет нужды в отслеживании рекордсетов. :) Я так строю дерево данными из SQLServer'а

Не совсем понял что мы в результате выигрываем? Так или иначе, нужно перебрать все записи в таблице для того , чтобы "обнодить" дерево, или я чего-то не понимаю?

Что касается ключей нодов, то я учту. В самом начале пробовал подсовывать ему Str(recordSet1!ID) метот Add артачился и недавался, пришлось лепить вот этот @
Спасибо! :)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36666174
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tutti-frutti
> Нет, такой возможности нет.

Понятно, жаль. Но я все равно отделил-бы получение рекордсета от построения дерева. И в зависимости от дерева, возможно
развернул-бы все в линейный цикл, а не рекурсию. Хотя ... Но разделение пролучения и построения это в любом
случае! Потому что потом приходится возвращятся и разрисовывать строящееся дерево :). И это проще сделать в простом
цикле, чем отслеживать дебри рекурсии

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36666226
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tutti-frutti
> Не совсем понял что мы в результате выигрываем? Так или иначе, нужно перебрать все записи в таблице для того ,
> чтобы "обнодить" дерево, или я чего-то не понимаю?

А ты посмотри на наши с Shocker.Pro коды построения деревьев. У меня идет сразу "цветовая дифференциация
штановнод", у Shocker.Pro кроме цвета ещё и восстанавливается распахнутость всех нод. У меня это делается
следующим проходом, потому что при моих 200-х пользователях и веб-сервисе я эти данные оставляю у пользователей на
компе(если они хотят). А ещё там несколько пересчетов, которые в итоге отображаются в лейблах нод, а ещё .... , а ещё
совсем недавно, каких-то пару лет назад это было простое деревце

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36666278
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Рекомендую уважаемой публике срочно вкурить nested sets , не пожалеете.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36666364
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Antonariy

Спасибо, я читал похожую статью на sql.ru, даже со скриптами сопровождения для MSSQL. Но действительно, не полностью
"въехал" в идею. Значит почитаем ещё :)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36666377
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос , кажись я понял о чем речь. Вы имеете в виду необходимость предварительной подготовки данных перед непосредственным построением дерева!? Типа, наполнить рекордсет (на основании которого будут наполняться ноды) вспомогательной инфой, которая поможет разукрасить и пробразить TreeView?
В принципе это наверное правильно ,так как сам рекордсет может быть сформирован и передан разными макарами. Учту на будущее.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36666554
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: Antonariy

Спасибо, я читал похожую статью на sql.ru, даже со скриптами сопровождения для MSSQL. Но действительно, не полностью
"въехал" в идею. Значит почитаем ещё :)

Подарю две самые сложные процедуры, остальные легко перевести на mssql самостоятельно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
ALTER PROCEDURE [dbo].[mp_TreeRecalc]
@ARG varchar( 50 ),
@RefID int,
@Level int,
@LeftKey int OUTPUT,
@RightKey int OUTPUT,
@RecCount int OUTPUT
as


SET @Level = @Level +  1 

DECLARE @Qry nvarchar( 4000 ), @s varchar( 20 ), @tbl varchar( 53 ), @pk varchar( 50 )

set @tbl = @ARG

select	top  1   @pk = c.column_name
from	INFORMATION_SCHEMA.KEY_COLUMN_USAGE c 
inner join INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS b on c.constraint_name = b.unique_constraint_name
where	c.table_name = @tbl

select @s = cast(@RefID as varchar( 20 ))

SET @Qry = '
DECLARE @' + @pk + ' int, @LeftKey int, @RightKey int, @Level int, @RK int, @RecCount int
SET @LeftKey = ' + cast(@LeftKey as varchar( 10 )) + '
SET @RightKey = ' + cast(@RightKey as varchar( 10 )) + '
SET @Level = ' + cast(@Level as varchar( 10 )) + '

DECLARE treecursor' + @s + ' CURSOR fast_forward FOR
SELECT ' + @pk + '
FROM  ' + @tbl + ' 
WHERE (RefID = ' + @s + ')
/*ORDER BY Name_RU*/

OPEN treecursor' + @s + '

FETCH next FROM treecursor' + @s + ' INTO @' + @pk + '

WHILE @@FETCH_STATUS = 0 BEGIN
	SET @LeftKey = @RightKey + 1
	SET @RightKey = @LeftKey + 1

	UPDATE ' + @tbl + '
	SET [Level] = @Level, LeftKey = @LeftKey
	WHERE (' + @pk + ' = @' + @pk + ')
	SET @RK = @RightKey - 1
	EXEC mp_TreeRecalc ''' + @ARG + ''', @' + @pk + ', @Level, @LeftKey out, @RK out, @RecCount out
	IF (@RK = @RightKey - 1) 
		SET @RightKey = @RK + 1 
	ELSE 
		SET @RightKey = @RK 
	UPDATE ' + @tbl + '
	SET RightKey = @RightKey, ChildCount = @RecCount
	WHERE (' + @pk + ' = @' + @pk + ')
	FETCH next FROM treecursor' + @s + ' INTO @' + @pk + '
END

CLOSE treecursor' + @s + '
DEALLOCATE treecursor' + @s 
EXEC (@Qry)

set @Qry = 'SELECT @RecCount = COUNT(' + @pk + ') FROM ' + @tbl + ' WHERE RefID = ' + cast(@RefID as varchar( 50 ))
exec sp_executesql @Qry, N'@RecCount int out', @RecCount = @RecCount out

IF @RecCount >  0  BEGIN
	set @Qry = 'SELECT @LeftKey = MAX(LeftKey) + 1, @RightKey = MAX(RightKey) + 1
		FROM ' + @tbl +  ' WHERE RefID = ' + cast(@RefID as varchar( 50 ))
	--print @Qry
	exec sp_executesql @Qry, N'@LeftKey int out, @RightKey int out', 
		@LeftKey = @LeftKey out, @RightKey = @RightKey out

END
Эта процедура считает левые и правые ключи на основании отношения Id-ParentId.
Здесть ParentId это RefID. Для расчета всего дерева во все параметры нужно передать нули. Первый параметр — название таблицы.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
ALTER PROCEDURE [dbo].[mp_TreeMove]
@ARG varchar( 50 ),
@ID int, 
@new_parent_id int = - 1 , 
@id_befor int = - 1 ,
@Step int =  0 
as 

SET NOCOUNT ON 

declare @Qry nvarchar( 4000 ), @tbl as varchar( 53 ), @pk varchar( 50 ), @IDVal varchar( 50 )

set @tbl = @ARG

select	top  1   @pk = c.column_name
from	INFORMATION_SCHEMA.KEY_COLUMN_USAGE c 
inner join INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS b on c.constraint_name = b.unique_constraint_name
where	c.table_name = @tbl


	--IF (@new_parent_id = -1) and (@id_befor = -1)  RETURN
	DECLARE @Level varchar( 50 ), @LeftKey varchar( 50 ), @RightKey varchar( 50 ), @RefID varchar( 50 )
	DECLARE @level_up varchar( 50 ), @parent_Lk varchar( 50 ), @parent_Rk varchar( 50 ), @Rk_near varchar( 50 ) 

	--Ключи и уровень перемещаемого узла 
	set @Qry = 'SELECT @Level = [Level], @LeftKey = LeftKey, @RightKey = RightKey, @RefID = RefID FROM ' + @tbl + ' WHERE ' + @pk + ' = ' + @IDVal
	exec sp_executesql @Qry, N'@Level varchar(50) out, @LeftKey varchar(50) out, @RightKey varchar(50) out, @RefID varchar(50) out', 
		@Level = @Level out, @LeftKey = @LeftKey out, @RightKey = @RightKey out, @RefID = @RefID out

	--Ключи и уровень нового родительского узла 
	IF (@new_parent_id <> - 1 ) BEGIN
		set @Qry = 'SELECT @level_up = [Level] FROM ' + @tbl + ' WHERE (' + @pk + ' = ' + cast(@new_parent_id as varchar( 50 )) + ')'
		exec sp_executesql @Qry, N'@level_up varchar(50) out', @level_up = @level_up out

		set @Qry = 'UPDATE	' + @tbl + ' SET RefID = ' + cast(@new_parent_id as varchar( 50 )) + ' WHERE ' + @pk + ' = ' + @IDVal 
		exec (@Qry)
	END ELSE 
		IF (@RefID >  0 ) begin
			set @Qry = 'SELECT @level_up = [Level] FROM ' + @tbl + ' WHERE (' + @pk + ' = ' + @RefID + ')'
			exec sp_executesql @Qry, N'@level_up varchar(50) out', @level_up = @level_up out
		end ELSE
			SELECT @level_up =  1  

	IF (@new_parent_id = - 1 ) BEGIN
		IF (@id_befor = - 1 ) BEGIN --select @RK_near = LeftKey + 1 from tblOwnerCtlg where OwnerCtlgID = @new_parent_id 
			IF (@Step = - 1 )	begin
				set @Qry = 'SELECT @Rk_near = RightKey FROM ' + @tbl + ' WHERE ([Level] = ' + @Level + ') AND (LeftKey = ' + @RightKey + ' + 1)'
				exec sp_executesql @Qry, N'@Rk_near varchar(50) out', @Rk_near = @Rk_near out
			end
			IF (@Step =  1 )	BEGIN 
				set @Qry = 'SELECT @Rk_near = RightKey FROM ' + @tbl + ' WHERE  ([Level] = ' + @Level + ') AND (RightKey = (SELECT LeftKey - 1 FROM ' + @tbl + ' WHERE RightKey = ' + @LeftKey + ' - 1))'
				exec sp_executesql @Qry, N'@Rk_near varchar(50) out', @Rk_near = @Rk_near out
				IF (@Rk_near IS NULL) begin
					set @Qry = 'SELECT @Rk_near = LeftKey FROM ' + @tbl + ' WHERE ([Level] = ' + @Level + ' - 1) AND (LeftKey = (SELECT LeftKey - 1 FROM ' + @tbl + ' WHERE RightKey = ' + @LeftKey + ' - 1))'
					exec sp_executesql @Qry, N'@Rk_near varchar(50) out', @Rk_near = @Rk_near out
				end
			END
			IF (@Step =  0 ) or (@Rk_near IS NULL) SELECT @Rk_near = @LeftKey -  1 
		END
	END
	ELSE BEGIN
		IF (@id_befor = - 1 ) begin --select @RK_near = LeftKey + 1 from tblOwnerCtlg where OwnerCtlgID = @new_parent_id 
			set @Qry = 'SELECT @Rk_near = RightKey - 1 FROM ' + @tbl + ' WHERE (' + @pk + ' = ' + cast(@new_parent_id as varchar( 50 )) + ')' 
			exec sp_executesql @Qry, N'@Rk_near varchar(50) out', @Rk_near = @Rk_near out
		end ELSE begin
			set @Qry = 'SELECT @Rk_near = RightKey FROM ' + @tbl + ' WHERE (' + @pk + ' = ' + cast(@id_befor as varchar( 50 )) + ')'
			exec sp_executesql @Qry, N'@Rk_near varchar(50) out', @Rk_near = @Rk_near out
		end
	END
	--делаем по необходимости корректировку 
	IF (@Rk_near is null) SELECT @Rk_near = '0' 
	PRINT @Rk_near
	--Определяем хар-ки перемещения 
	DECLARE @skew_level varchar( 50 ), @skew_tree varchar( 50 ) 
	SET @skew_level =CAST(cast(@level_up as int) - cast(@Level as int) +  1  AS varchar( 50 ))
	SET @skew_tree = cast(cast(@RightKey as int) - cast(@LeftKey as int) +  1  as varchar( 50 ))

	--Перемещаем 
	DECLARE @skew_edit varchar( 50 ) 
	IF (cast(@RightKey as int) < cast(@Rk_near as int)) BEGIN 
		SET @skew_edit = cast(@Rk_near as int) - cast(@LeftKey as int) +  1  - @skew_tree 
		--PRINT @skew_edit
		set @Qry = 'UPDATE	' + @tbl + ' 
		SET		LeftKey =  CASE WHEN RightKey <= ' + @RightKey + ' THEN LeftKey + ' + @skew_edit + ' ELSE CASE WHEN LeftKey > ' + @RightKey + ' THEN LeftKey - ' + @skew_tree + ' ELSE LeftKey END END, 
				[Level] = CASE WHEN RightKey <= ' + @RightKey + ' THEN [Level] + ' + @skew_level + ' ELSE [Level] END, 
				RightKey =  CASE WHEN RightKey <= ' + @RightKey + ' THEN RightKey + ' + @skew_edit + '  ELSE CASE WHEN RightKey <= ' + @Rk_near + ' THEN RightKey - ' + @skew_tree + ' ELSE RightKey END END 
		WHERE	(RightKey > ' + @LeftKey + ') and 
				(LeftKey <= ' + @Rk_near + ')'
	END ELSE BEGIN 
		SET @skew_edit = cast(@Rk_near as int) - cast(@LeftKey as int) +  1  
		--PRINT @skew_edit
		set @Qry = 'UPDATE	' + @tbl + ' 
		SET		RightKey =  CASE WHEN LeftKey >= ' + @LeftKey + ' THEN RightKey + ' + @skew_edit + ' ELSE CASE WHEN RightKey < ' + @LeftKey + ' THEN RightKey + ' + @skew_tree + ' ELSE RightKey END END, 
				[Level] = CASE WHEN LeftKey >= ' + @LeftKey + ' THEN [Level] + ' + @skew_level + ' ELSE [Level] END, 
				LeftKey =  CASE WHEN LeftKey >= ' + @LeftKey + ' THEN LeftKey + ' + @skew_edit + ' ELSE CASE WHEN LeftKey > ' + @Rk_near + ' THEN LeftKey + ' + @skew_tree + ' ELSE LeftKey END END 
		WHERE	(RightKey > ' + @Rk_near + ') and 
				(LeftKey < ' + @RightKey + ')'
	END 
	exec(@Qry)
Эта процедура используется для перемещения узла по дереву.
Если задан параметр @new_parent_id, но не задан @id_befor, узел будет последним у родителя. Если @id_befor задан, узел вставится после заданного. Параметр @Step используется для перемещения узла вверх (-1) или вниз (+1) по родителю, @new_parent_id и @id_befor должны быть при этом равны -1.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36667557
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь ГорбоносВ принципе юнионами знаю, но это для ограниченного числа потомков. Что то типа(для трёх вложений)

Или ты имел в виду что-то другое?


Скажем так - для фиксированного числа вложений, иначе без курсора не обойтись.

Ну я имел ввиду что-то похожее, только я не очень люблю IN, предпочитаю JOIN-ы.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36667560
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiНе совсем понял что мы в результате выигрываем? Так или иначе, нужно перебрать все записи в таблице для того , чтобы "обнодить" дерево, или я чего-то не понимаю?

Выигрываем то, что внутренний цикл переносится на сторону SQL-
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36667568
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiНе совсем понял что мы в результате выигрываем? Так или иначе, нужно перебрать все записи в таблице для того , чтобы "обнодить" дерево, или я чего-то не понимаю?

Выигрываем то, что внутренний цикл переносится на сторону SQL-

БЛИН, иногда задеваю Ctrl-Enter...

Выигрываем то, что внутренний цикл переносится на сторону SQL-движка. Если все происходит на одной машине, это может и не критично. Если же ты используешь клиент-серверную архитектуру - использовать запросы внутри цикла - моветон. Большие накладные расходы на отправку запросов и получение ответов. Проще заставить сервер, чтобы он вернул тебе один ответ - сразу все дерево.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36667575
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiИгорь Горбонос , кажись я понял о чем речь. Вы имеете в виду необходимость предварительной подготовки данных перед непосредственным построением дерева!? Типа, наполнить рекордсет (на основании которого будут наполняться ноды) вспомогательной инфой, которая поможет разукрасить и пробразить TreeView?
В принципе это наверное правильно ,так как сам рекордсет может быть сформирован и передан разными макарами. Учту на будущее.

Важно не сколько наполнение инфой о цвете, тэгах и т.п. - это-то как раз просто всякие вкусняшки. Важно то, что не насилуется канал до сервера внутренним циклом запросов.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36667585
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyПодарю две самые сложные процедуры, остальные легко перевести на mssql самостоятельно

Пока просмотрел статью по диагонали и...

Я-то подумал, что там организовывается структура, которая позволяет сделать выборку дерева с помощью запроса, без использования рекурсии. Однако, в том что ты привел я вижу курсоры - тогда уж ничего не понимаю... В принципе, для создания дерева достаточно одного-единственного поля - родитель (если сортировка, скажем, идет не по алфавиту, то еще и сортировочный номер), а там какие-то боковые номера....

Впрочем, обязательно выделю время на курение статьи
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36667736
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЯ-то подумал, что там организовывается структура, которая позволяет сделать выборку дерева с помощью запроса, без использования рекурсии. Так и есть.
Shocker.ProОднако, в том что ты привел я вижу курсоры - тогда уж ничего не понимаю... Курсоры используются для первичного построения дерева согласно принципам nested sets из исходного дерева, построенного по принципам parent-children, в статье этот момент не разжеван. Там есть основные вещи — выборка всего дерева, подчиненных ветвей, родительской ветки.

А вот более интересный пример, который выбирает только те ветки дерева, в которых присутствуют узлы определенного типа, то есть дерево с обрубленными лишними ветвями:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT	DISTINCT 
	OC.OwnerCtlgID, 
	OC.RefID, 
	OC.Name_RU, 
	OC.LeftKey, 
	OC.RightKey, 
	OC.[Level]
FROM    dbo.tblOwnerCtlg AS OC 
INNER JOIN dbo.tblOwnerCtlg AS OCt ON 
	OCt.LeftKey >= OC.LeftKey AND 
	OCt.RightKey <= OC.RightKey
WHERE     (OCt.Type =  5 )
Попробуй сделать такую выборку через parent — вывихнешь моск.
С nested sets работа с деревьями превращается в песню.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36667751
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: Antonariy
> С nested sets работа с деревьями превращается в песню.

+1
Из той статью, что читал я, главная трудоемкость заключалась в реорганизации самого дерева, если перетаскивается или
удаляется кустик :)
А сами запросы были простейшими

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36677668
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть необходимость менять значение поля(лей) в тексте запроса. Речь идет о полях константах , которые прописываются в виде заключенных в кавычки строк и которым назначаются алиасы.
Ну например, вот текст запроса, который выбирает из таблицы записи и добавляет к каждой записи два поля Library_Path и Footprint_Path.
(Так нужно для той программы ,которая потом возьмет результаты выполнения этого запроса)

Код: plaintext
1.
2.
SELECT Library_Ref, Footprint_Ref, "C:\ADLib\SchLib\Discrete.SchLib" AS [Library_Path], "C:\ADLib\PcbLib\Discrete.PcbLib" AS [Footprint_Path] 
FROM
T_Components

Я планирую открыть соединение с акцессом, удалить запрос, сформировать текст нового на основании новых значений констант, а потом создать запрос в базе акцесс. Принципиально это возможно?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36677678
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Речь идет о программе в VB6.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36677686
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
делайте через отсоединённый рекордсет
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36677716
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Oneделайте через отсоединённый рекордсет

А почему именно так? Мне нужно иметь в базе ацес именно запрос. Этот запрос потом подтянет программа (Altium Designer) именно ради результатов этого запроса весь сыр-бор. То есть грубо говоря, моя программа (на басике) строит дерево, дает возможность его наполнить/изменить и прочее, а результатом всего этого будет вот этот запрос, который предоставит возможность пользователю серьезной инженерной программы выбрать компонент из многомиллионной базы компонентов.
в этом запросе должны указыватся пути к составным частям библиотеки компонентов. Я планирую создать раздел "настройка" в программе и положить туда эти пути, которые можно будет изменять и изменения в которых будут транслироваться в этот самый запрос.
Пока писал понял, что можно не пересоздавать запрос, а просто дооснастить его связями с таблицей в которой и буду лежать пути.
Спасибо! :)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36678739
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
    strMessage = "Не удается установить связь с базой данных" & vbCrLf & "Укажите путь к файлу *.mdb"
MsgBox strMessage

Окошко MsgBox выскакивает с шапкой в которой прописан Project1. Имя проекта я изменил. Шо делать? :)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36678752
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-frutti
Код: plaintext
1.
    strMessage = "Не удается установить связь с базой данных" & vbCrLf & "Укажите путь к файлу *.mdb"
MsgBox strMessage

Окошко MsgBox выскакивает с шапкой в которой прописан Project1. Имя проекта я изменил. Шо делать? :)

там ещё параметры есть у этого метода
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36678757
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_Onetutti-frutti
Код: plaintext
1.
    strMessage = "Не удается установить связь с базой данных" & vbCrLf & "Укажите путь к файлу *.mdb"
MsgBox strMessage

Окошко MsgBox выскакивает с шапкой в которой прописан Project1. Имя проекта я изменил. Шо делать? :)

там ещё параметры есть у этого метода

У какого именно метода? MsgBox? Хорошо ,сейчас порыскаю в нете.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36678765
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiKonst_Onetutti-frutti
Код: plaintext
1.
    strMessage = "Не удается установить связь с базой данных" & vbCrLf & "Укажите путь к файлу *.mdb"
MsgBox strMessage

Окошко MsgBox выскакивает с шапкой в которой прописан Project1. Имя проекта я изменил. Шо делать? :)

там ещё параметры есть у этого метода

У какого именно метода? MsgBox? Хорошо ,сейчас порыскаю в нете.


MsgBox "gbdshbdg",,,
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36679857
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
offtutti-fruttiНо предупреждаю, я взглядом умею останавливать кулера на боксовых АМдехах и выпрашивать скидки на одежду.


Это ты?
http://ithappens.ru/story/2536
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36680043
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro+
offtutti-fruttiНо предупреждаю, я взглядом умею останавливать кулера на боксовых АМдехах и выпрашивать скидки на одежду.


Это ты?
http://ithappens.ru/story/2536

Да, некоторая связь безусловно прослеживается.
К сож. не могу рассказывать о себе слишком много, так как формат и предметная область форума не располагают к общению на вольные темы, но могу Вас уверить, что если на планету Земля однажды упадет большущий метеорит, и нашей планете будет суждено погибнуть, то в эпицентре большущего взрыва непременно окажется ваш покорный слуга.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36680103
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: tutti-frutti
> ... но могу Вас уверить, что если ...


Вот наивный! Этим местом буду Я

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36680114
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь Горбонос
> Автор: tutti-frutti
> ... но могу Вас уверить, что если ...


Вот наивный! Этим местом буду Я


Гм. Похоже, ближе к катастрофе вы будете снимать квартиру на двоих. Причем достатчоно далекто от Москвы
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #36697371
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то автор давно у нас ничего не спрашивал. Вероятно, он достиг просветления, это хорошо, но жаль, что мы его потеряли.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264082
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток!
Озадачен такой игрушечной задачкой: нужно отправить и принять некоторый пакет данных (самый минимальный, пусть даже один бит) вокруг Земли по каналам интернета.
В принципе, как такой вопрос решить? Пусть даже чисто умозрительно. Спасибо!
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264106
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-frutti,

А-а-а-а! Ты вернулся! Я так по тебе скучал, не поверишь!

Задача не очень понятна - смысл в том, чтобы отправить пакет или в том, чтобы разработать маршрут пакета? И какого рода пакет? И кто должен выступать в качестве промежуточных станций - обычные маршрутизаторы или специально предназначенные для этого серверы?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264132
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-frutti,

А-а-а-а! Ты вернулся! Я так по тебе скучал, не поверишь!

Задача не очень понятна - смысл в том, чтобы отправить пакет или в том, чтобы разработать маршрут пакета? И какого рода пакет? И кто должен выступать в качестве промежуточных станций - обычные маршрутизаторы или специально предназначенные для этого серверы?

Здравствуйте! Я тож. Вам оч. благодарен за помощь в создании софта.

Пожалуйста не стоит относиться к этому вопросу уж оч. так серьезно, но и само по себе (без вашего участия) оно никак не сделается и поэтому еще раз о задаче:
не знаю что именно будет выступать в качестве промежуточных станций, желательно чтоб это было что-то быстрое и не требующее затрат с моей стороны. Я хочу сделать настольную лампу, которая бы включалась и выключалась сигналом который огибает Землю (по интернету) перед действием.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264188
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiсигналом который огибает Землю
Если ты не пояснишь, что ты в это вкладываешь, тут тебе никто не поможет. К тому же сигнал и пакет - это все же не одно и то же.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264241
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiсигналом который огибает Землю
Если ты не пояснишь, что ты в это вкладываешь, тут тебе никто не поможет. К тому же сигнал и пакет - это все же не одно и то же.

Это не принципиально. Пусть это будет байт данных, пусть даже бит данных.
То есть: я нажимаю кнопу в программе на компьютере, который подключен к интернету. Софт формирует информационную посылку (не знаю что это может быть и как это сделать), которая достигая нескольких перевалочных пунктов (например Украина, Эфиопия, Индонезия, Япония, США, Англия, Греция, Украина) возвращается назад при этом огибая планету Земля. После получения сигнала софт формирует управляющие сигналы которые коммутируют освещение на моем рабочем месте.
Спасибо!
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264269
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стало яснее.
Но.
Тебе потребуется либо
а) организовать эти перевалочные пункты (ну типа бесплатные хостинги в этих точках), создать на них какой-то софт, обеспечивающий пересылку
б) изучить IP маршрутизацию и понять, можно ли заставить например ICMP-пакет двигаться по определенному маршруту.

в любом случае это тема не для ветки VB, на котором ты просто напишешь отправку сигнала и его получение после того, как разберешься со всем остальным
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264278
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясно, спасибо! :)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264279
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Находишь сервера, располагающиеся в интересующих странах, ломаешь их, устанавливаешь программку, которая ожидает сигнал с одного сервера и передает его на другой.
Или покупаешь готовую зомби-сеть.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264316
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyНаходишь сервера, располагающиеся в интересующих странах, ломаешь их, устанавливаешь программку, которая ожидает сигнал с одного сервера и передает его на другой.
Или покупаешь готовую зомби-сеть.

Может Вы и учились в Кембридже, зато я почётный выпускник Академии Звёздного Флота! Пожалуйста, прошу Вас не флудить в этой ветке!
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264504
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Флуд??? Shocker.Pro сказал что делать, я сказал как. Разве что смайлик забыл:
tutti-fruttiПожалуйста не стоит относиться к этому вопросу уж оч. так серьезно
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264598
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyломаешь их
Ты всегда был сторонником законных средств. Зачем ломать, ежели полно бесплатных хостингов, на которых можно будет крутить простейший php-скрипт, принимающий инфу и отправляющий ее другому серверу. Тут мы, конечно вылезаем на самый верх модели OSI сразу через несколько ступеней, теряя в скорости, зато это самый простой способ реализации.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264664
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это ж я не всерьез. Абсурдность способа реализации как бы намекала на это, а еще на то, что смысл поставленной задачи теряется на фоне сложности или дороговизны решения. Зато сразу виден фронт и класс работ.

Бесплатные хостинги есть не во всех странах. Впрочем, если хотя бы на Эфиопию можно наплевать, других, более развитых стран достаточно для реализации. Но даже с бесплатными хостингами это огромный объем работы. Найти их, проверить расположение, зарегистрироваться... И без какой-либо гарантии, что сигнал таки пойдет "вокруг", а не зигзагами. Маршрут в ту же Эфиопию может идти через Америку, а может через Японию. И ради чего? Зажечь лампочку?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37264684
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyИ ради чего? Зажечь лампочку?
Нет, именно ради маршрута сигнала и демонстрации этого кому-то. Но тогда придется писать еще некий интерфейс для предъявления маршрута, иначе все это смысла не имеет, не себе же самому это надо доказывать.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37265719
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy И без какой-либо гарантии, что сигнал таки пойдет "вокруг", а не зигзагами. Маршрут в ту же Эфиопию может идти через Америку, а может через Японию.
Ну например делать на бесплатных хостингах-сайтах, тогда по пути сигнала будут контрольные точки и можно будет с уверенностью сказать что сигнал сначала достиг саудовской аравии, затем кореи например, японии и так далее. Ведь в скриптах/кодах сайтов будет заложен именно такой алгоритм: Принять сигнал от Украины и передать его в Корею, в Корейском сайте: принять сигнал от аравии и передать его Японии и т.д.
То есть сигнал точно будет последовательно двигаться от Украины и вокруг Земли. А что там у него за судьба между узлами, как уж там его "катает" глобальная сеть - мне пофик.

Antonariy И ради чего? Зажечь лампочку?
Мужчина не должен протирать штаны, нужно делом заниматься.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37265724
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Shocker.Pro]Antonariy смысла не имеет, не себе же самому это надо доказывать.
Почему нет? Мне это интересно.
Я вот еще вынашиваю идею в коврик перед дверью интегрировать GPRS и GPS модуль, аккумуляторную батарею и радиотрансивер.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37265732
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-frutti,

Хорошо, так вопросы остались? :)
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37265758
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-frutti,

Хорошо, так вопросы остались? :)

Ну конечно!
1. Как разместить на бесплатном хостинге для картинок картинку из файла?
Ну например: есть сайт для размещения на нем картинок, есть файл "1.jpg" на диске С в папочке Temp. Вот как программно отправить на данный хостинг картинок файл?

2. Как программно "залезть" вот сюда и вытащить от туда температуру воздуха в 18.00? В смісле в программе как получить это значение?

3. Как научить программу говорить? Читать (синтезировать речь) по любому тексту? Можно ли записать с помощью таких инструментов файл аудио на диск компьютера? Ну например есть текст: "Трудно быть совершенством.." как мне услышать эту фразу имее РС и как мне получить аудио файл с этой фразой?

Пока вот данные вопросы интересуют.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37265801
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-frutti1. Как разместить на бесплатном хостинге для картинок картинку из файла?
Ну например: есть сайт для размещения на нем картинок, есть файл "1.jpg" на диске С в папочке Temp. Вот как программно отправить на данный хостинг картинок файл?
ну например на этом сайте есть капча, предназначенная специально для того, чтобы боты, написанные tutti-frutti не могли туда картинки класть. Так что придется тебе сначала написать искуственный интеллект, который сможет распознавать капчу. Замечу, достойные внимания алгоритмы для ИИ до сих пор не созданы, хотя бьются над ними со времен Тьюринга

tutti-frutti2. Как программно "залезть" вот сюда и вытащить от туда температуру воздуха в 18.00? В смісле в программе как получить это значение?
Поищи тут по слову MSXML2
На сайте полно примеров, как это сделать.

tutti-frutti3. Как научить программу говорить? Читать (синтезировать речь) по любому тексту? Можно ли записать с помощью таких инструментов файл аудио на диск компьютера? Ну например есть текст: "Трудно быть совершенством.." как мне услышать эту фразу имее РС и как мне получить аудио файл с этой фразой?
Записать Wav-файлы для каждой буковки и воспроизводить. Очевидно, придется создавать файлы для отдельных сочетаний букв. Потом, когда качество тебя не удовлетворит, ты поймешь, что надо делать словарь исключений со своим произношением, словарь ударений... не ведь программа все равно не будет знать, с каким ударением прочитать слово "замок", пока не будет понимать смысла написанного (замечу, не каждым людям это удается, я часто слушаю аудиокниги и слышал немало отвратительных дикторов). Так что опять возвращаемся к созданию искусственного интеллекта.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37265826
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я только что попробовал разместить на хостинге файл и я нигде никаких препятствий не заметил. Просто выбрал файл, кликнул на страничке "Загрузить" и вуаля..

По поводу "говорилки", так тут велик тош не стоит изобретать, ведь есть готовие движки для этих целей, и я даже пробовал софт специально за точеный под данные цели
Вопрос в том, как все это прикрутить в минимальном обвесе с своему софту?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37265843
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiЯ только что попробовал разместить на хостинге файл и я нигде никаких препятствий не заметил. Просто выбрал файл, кликнул на страничке "Загрузить" и вуаля..
А теперь сотри куки в браузере для сайта http://piccy.info/ и попробуй еще раз. Вуаля?

tutti-fruttiПо поводу "говорилки", так тут велик тош не стоит изобретать, ведь есть готовие движки для этих целей, и я даже пробовал софт специально за точеный под данные цели
Вопрос в том, как все это прикрутить в минимальном обвесе с своему софту?
Программа умеет работать с различными версиями пакета речевых функций Microsoft Speech API (SAPI).
RTFM, я думаю
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37265885
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiЯ только что попробовал разместить на хостинге файл и я нигде никаких препятствий не заметил. Просто выбрал файл, кликнул на страничке "Загрузить" и вуаля..
А теперь сотри куки в браузере для сайта http://piccy.info/ и попробуй еще раз. Вуаля?

tutti-fruttiПо поводу "говорилки", так тут велик тош не стоит изобретать, ведь есть готовие движки для этих целей, и я даже пробовал софт специально за точеный под данные цели
Вопрос в том, как все это прикрутить в минимальном обвесе с своему софту?
Программа умеет работать с различными версиями пакета речевых функций Microsoft Speech API (SAPI).
RTFM, я думаю

буду 20го. спасибо за любую информацию.
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37270869
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день! Ну так как ничего интересненького нет по моему вопросу?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37270907
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiДобрый день! Ну так как ничего интересненького нет по моему вопросу?Какому? ты задал их массу. И разве ты не получил ответов?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37270917
tutti-frutti
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Protutti-fruttiДобрый день! Ну так как ничего интересненького нет по моему вопросу?Какому? ты задал их массу. И разве ты не получил ответов?

Сори не понял просто сразу что "RTFM" это ответ.
Почитаю на досуге о этой штуке.

Кстати вот вчера еще вспомнил о том, что к аське есть некие примочки, которые позволяют писать простенькие скрипты для анализа контекста передаваемой информации.. Не помните что за программные штуки такие?
...
Рейтинг: 0 / 0
Вопросы по структуре, организации и принципам кода в VB6->
    #37271071
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tutti-fruttiКстати вот вчера еще вспомнил о том, что к аське есть некие примочки
При установке аськи в Референсах появляются ссылки на ее библиотеки. Так что можно подключить, посмотреть через F2 структуру, почитать хелп, если есть, поэкспериментировать.
...
Рейтинг: 0 / 0
180 сообщений из 180, показаны все 8 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопросы по структуре, организации и принципам кода в VB6->
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]