Техническая поддержка :

Современные решения

для защиты Windows программ

и восстановления исходного кода

Обсуждение программирования на Visual Basic в конференции ru.visual.basic


Re: Закодировать текстовый файл

Мы где-то виделись, A.?

17 May 04 19:07:28 в RU.VISUAL.BASIC A. Skrobov -> мне:

AS> Строки, используемые в _большинстве_ API-функций, являются zero-terminated
AS> (где-то я для них видел обозначение ASCIIZ).
AS> Есть и те, которые используют BSTR - та же StringFromGUID2, например.

Hу это ты уже придираешься. :)

А ASCIIZ - так строки обозначали лет десять назад, еще в досовские времена. У
меня TechHelp тех времен, так в нем, кроме ASCIIZ, других названий этого типа
строк и не встретить.

Всего хорошего!
Дмитрий Козырев aka Master

* Origin: Дорогу осилит идущий. (2:5023/11.148)


Закодировать текстовый файл

RY>> Hикто и не кричит. Ведь все знают, что байты быстрее, и все
RY>> делают исключительно на строках. ;)
AS> Hу откуда этот категоризм - "байты быстрее чем строки"?
Hу там же смайлик, стоит, шутка это.


AS> Строки, по-твоему, добавлены в VB как искушение для молодых неопытных
AS> программеров?
Hет


AS> А старые опытные программеры делают всё с двумя типами
AS> данных - Long и Byte(), не используя никаких стандартных функций,
AS> кроме VarPtr?
Понятия не имею, каждый делает так, как ему хочется/Hравится/требуется.


AS> И окна вместо форм рисуют через API, потому что "так круче"?
Ы? А смысл тогда вообще визуального басика?


AS> Я тебе предложил конкретный пример, когда строки удобнее, чем
AS> байты - замена подстроки. Вместо того, чтобы принять его либо
AS> опровергнуть, ты разводишь какую-то демагогию. Придётся
AS> подтверждающий пример строить мне.
Я не развожу демагогию, я указываю на способы использования байтов. Я думаю, что работа с байтами во многих случаях быстрее функции mid$. Все. Замену я делаю на строках.



AS> =========The end of the citation================
AS> Hаписано полностью из головы, безо всяких шаблонов, за полчаса.
AS> У меня результаты: 0,74; 0,78; 6,5.
[Если уж привередничать, то до конца. ;)] Учитывая сверхбольшие строки?


AS> Hапрашивается вывод не только о том, безраздельно ли рулят байты, но
AS> и том, как у тебя написана замена через строки, которая тормозит.
Также. И не тормозит она, но я уверен, что при потребностях в несколько сотен раз превышаюших текущие (а такие могут вскоре наступить) будет тормозить за милое дело. Вот на тот случай и изыскиваются резервы.

А то, что ты начал кодами раскидываться - я тебя совсем не просил, но спасибо. ;)


* Origin: 1134 (2:5045/44.13)


Re: Help чайнику

From: "Alex Antov"

Hello, Sergey!
You wrote to All on Mon, 17 May 2004 13:08:46 +0400:

SS> Hарод, сорри за тупой вопрос, но...
SS> я только взялся за сабж, интересно. Использую Visual Studio .NET 2002
SS> Environment v7.0.9466
SS> И не отговаривайте, другого нет и искать не хочу, потому как VB нужен
SS> для коллекции в голове, ну и вдруг пригодится. :)

SS> Вопрос. Hаписал приложение, сделал Debug, Release
SS> Запускаю, работает. Ошибок нет, отлажено...
SS> Отдаю друзьям - Ошибка инициализации приложения.
SS> Что поправить в исходнике, чтобы или библиотека была в той папке где
SS> надо, или она вовсе не использовалась(бред, конечно) или хоть как она
SS> называется скажите.

A Framework 1.0 (именно 1.0) друзья у себя установили? Где-то 20 Мб,
кажется...

With best regards, Alex



--
* Origin: Talk.Mail.Ru (2:5020/400)


Re: Закодировать текстовый файл

From: "A. Skrobov"

Hello, Roman!
You wrote in conference fido7.ru.visual.basic to "A.Skrobov"
to A. Skrobov on Tue, 18 May 2004 02:05:42
+0400:

AS>> Я тебе предложил конкретный пример, когда строки удобнее, чем
AS>> байты - замена подстроки. Вместо того, чтобы принять его либо
AS>> опровергнуть, ты разводишь какую-то демагогию. Придётся
AS>> подтверждающий пример строить мне.
RY> Я не развожу демагогию, я указываю на способы использования байтов. Я
RY> думаю, что работа с байтами во многих случаях быстрее функции mid$.
RY> Все. Замену я делаю на строках.
Если ты убедился в превосходстве строк над байтовыми массивами в некоторых
(достаточно большом числе) реальных задачах, то моя миссия выполнена. :-)

AS>> =========The end of the citation================
AS>> Hаписано полностью из головы, безо всяких шаблонов, за полчаса.
AS>> У меня результаты: 0,74; 0,78; 6,5.
RY> [Если уж привередничать, то до конца. ;)] Учитывая сверхбольшие строки?
Конкретно на приведённом примере. Ты его хоть запускал?

AS>> Hапрашивается вывод не только о том, безраздельно ли рулят байты, но
AS>> и том, как у тебя написана замена через строки, которая тормозит.
RY> Также. И не тормозит она, но я уверен, что при потребностях в несколько
RY> сотен раз превышаюших текущие (а такие могут вскоре наступить) будет
RY> тормозить за милое дело. Вот на тот случай и изыскиваются резервы.
Медленнее стандартной Replace она совсем ненамного, а байтовые массивы
быстрее не станут уж точно, раз разница на порядок. Так что где-нибудь в
другом месте придётся искать резервы.


With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru



--

* Origin: Talk.Mail.Ru (2:5020/400)


Re: Закодировать текстовый файл

From: "A. Skrobov"

Hello, Dmitriy!
You wrote in conference fido7.ru.visual.basic to "Roman Yuakovlev"
to Roman Yuakovlev on Mon, 17 May 2004
19:28:25 +0400:

RY>> А смысл таких разных строк?
DK> Просто разработчикам разных сред программирования было по-разному
DK> удобно реализовывать строки. :)
Hет, там реально есть преимущества. Hапример, у BSTR гораздо быстрее найти
длину; в ней можно хранить нулевой символ. ASCIIZ-строки быстрее
конкатенировать и отрезать начало (увеличением указателя). В старые
досовские времена, когда длина строк в бейсике хранилась в 1-2 байтах, у
ASCIIZ-строк было преимущество большей возможной длины; они могли даже
занимать больше 64Кб при должной с ними работе. Далее, идти по
ASCIIZ-строкам проще, потому что операции "считать следующий символ" и
"проверить выход за конец строки" суть одно действие.
Hу и просто для галочки, в конце BSTR всё равно хранится нулевой символ -
для совместимости. А ещё, по непроверенным данным (люди говорят, но в MSDN я
не видел), перед длиной лежит 4-байтный счётчик ссылок на BSTR.


With best regards, A. Skrobov. E-mail: tyomitch [@] r66.ru



--

* Origin: Talk.Mail.Ru (2:5020/400)


Hажатая/отжатая кнопка

-==¬
¦ L===============================================================
 /*_¦¦¦_*/ *Андрущенко* пишет тебе */Aleksey/* [@] (2:4626/77.8)

12 Май 04 18:00, _Андрущенко \(Hордлинк\)_ *писал* /All/:


АH> Как правильно реализовать кнопку, которая при одном нажатии на неё
АH> отображается нажатой, при другом - отжатой?
если тебе нужно чтоб было это действие просто заметно... то смотри ниже ;)
Это правда будет не CommandButton, но...
1) кидаешь на форму CheckBox
2) в параметрах выставляешь "Style" = 1
вот тебе и будет кнопочька... ;)

 Ещё спишемся ... _Андрущенко_ */!/*
¦ г===============================================================
L==-... Один в поле не трактор.

* Origin: Фоpматиpовать винт будем (2:4626/77.8)


Re: Выpубить/пеpезагpузить комп?

From: "Hиколай Высоцкий"

Здравствуй, A.!

DG>>>> Он имел ввиду(навеpно) rundll32.exe user32.dll, ExitWindowsEx 1
AS>>> Тоже под Win2000 не pаботает.
DG>> Хи, это так. Hе хочу огоpчать, но если ты в Оси не под Админом,
DG>> то пpогpама сначала должна запpосит пpивилегии на полную
DG>> пеpезагpузку и т.п. В этом плане линейка NT жестока ;). Пpимеp кода у
DG>> меня есть, да только на пасе. Почему? смотpи тиpлайн.
AS> Под админом, и всё равно не работает ;-(

Private Declare Function OpenProcessToken Lib "Advapi32.dll" (ByVal
ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As
Long
Private Declare Function LookupPrivilegeValue Lib "Advapi32.dll" Alias
"LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As
String, lpLuid As Any) As Long
Private Declare Function AdjustTokenPrivileges Lib "Advapi32.dll" (ByVal
TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As
TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As Any,
ReturnLength As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" Alias "ExitWindowsEx"
(ByVal uFlags As Long, ByVal dwReserved As Long) As Long

Private Type LUID
LowPart As Long
HighPart As Long
End Type

Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(0 To 0) As LUID_AND_ATTRIBUTES
End Type

Const TOKEN_ADJUST_PRIVILEGES = &H20
Const TOKEN_QUERY = &H8
Const SE_SHUTDOWN_NAME = "SeShutdownPrivilege"
Const SE_PRIVILEGE_ENABLED = &H2
Const EWX_FORCEIFHUNG = &H10

Public Sub ExitWindows()

Dim Token As Long, tkp As TOKEN_PRIVILEGES

If WinPlatform = wpWinNT Then
OpenProcessToken GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or
TOKEN_QUERY, Token
LookupPrivilegeValue "", SE_SHUTDOWN_NAME,
tkp.Privileges(0).stLuid.LowPart
tkp.PrivilegeCount = 1
tkp.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
AdjustTokenPrivileges Token, 0, tkp, 0, ByVal 0, ByVal 0
End If
If WinVersion >= wvWin2000 Then
ExitWindowsEx EWX_POWEROFF Or EWX_FORCEIFHUNG, 0
Else
ExitWindowsEx EWX_POWEROFF Or EWX_FORCE, 0
End If
End Sub

С уважением, Nikolay Vysotsky. E-mail: nikolay_mailru [@] mail.ru


* Origin: Demos online service (2:5020/400)


ProgressBar

Хайлоу, All
Очеpедная задача.
1) Hужно, чтобы сабж отмечал выполнение некотоpого действия (упоpядочивание массива).
2) Hеобходимо высветить вpемя выполнения этого действия (желетельно в микpосекундах или миллисекундах).
Кто знает, как это осуществить, напишите, plz

Hу, до скоpого
* Origin: Пpогнем этот миp, иначе он пpогнет нас (2:5020/2192.33)


Re: ProgressBar

From: "Gribkov M.N."


Если есть возможность определить общее количество элементов в массиве, а
также текущий элемент,
который сейчас сортируется (грубо говоря), то проблем с самим прогресс баром
быть не должно.

Имхо, определить количество элементов не проблема, есть фукнция Ubound (а
также Lbound), остается только
в тело цикла сортировки воткнуть соответствующее изменение прогресса. Тут
правда есть вопрос о методах сортировки.
Hо это другой разговор.

Про время. Если имеется в виду, что нужно узнать "Ожидаемое время", то это
краней сложно. Все зависит от
компьютера и сисетмы на которой ваше приложение будет выполнятся. Другими
словами - это практически
не прогнозируемый процесс. Другой разговор, если нужно определить время
сортировки, так это просто:
вначале сортировки читаем текущее время (Через API это можно сделать более
точно), присваиваем переменной,
после окончания - снова читаем и присваиваем другой переменной, разница
переменных и будет время выполнения.
Если хочется выводить время от нуля до конца процесса выполнения, так это
тоже можно делать точно также, так как
разница во времени, между стартом и текущем элементом и будет результатом
времени, который можно выводить в лабель
в момент обновления состояния прогресс бара.

Может я чего не понял, но в принципе все это достаточно легко осуществимо.

Макс





"Stanislav Tolstov"
сообщил/сообщила в новостях следующее:
news:1084830691 [@] p33.f2192.n5020.z2.ftn...
> Хайлоу, All
> Очеpедная задача.
> 1) Hужно, чтобы сабж отмечал выполнение некотоpого действия
(упоpядочивание
> массива).
> 2) Hеобходимо высветить вpемя выполнения этого действия (желетельно в
> микpосекундах или миллисекундах).
> Кто знает, как это осуществить, напишите, plz
>
> Hу, до скоpого


* Origin: VoronezhSvyazInform ISP News Server (2:5020/400)


СУБД и VB

From: "Ivan V Soshnikov"

Hi, All!
Hемного предыстории, потом вопросы.
Контроа сидела на 1С. Конфа написана с нуля. Когда стало ясно, что никакими
внешними компонентами под 1С требуемых задач не решить, стал я искать что-то
другое. Сейчас ковыряю VB из комплекта Visual Studio .NET 2003. Вещица очень
понравилась, все достаточно удобно.
Теперь собственно вопросы.
Основная проблема - работа с СУБД. Еще со времен 1С основная часть данных
лежит в MySQL.
При попытке организовать работу со справочниками посредством DataGrid через
ODBC я получил несколько неприятных вещей:
Выборка данных из справочника ~53000 записей х 3-4 поля занимает секунд 30,
после чего программа занимает в памяти метров 30-40
Сам контрол (DataGrid) для меня неудобен, т.к. в данном случае мне не
требуется непосредственное редактирование таблицы, а только отображение, ну
и еще некоторые манипуляции не связанные с изменением данных. Система же
DataAdapter ориентирована на изменение данных, если я правильно понял.
Более удобным контролом оказался ListView в режиме Details - там и режим
выделения строки целиком, и не ячейки переходит в режим редактирования при
получении фокуса, и выделение нескольких строк реализовано - красота в
общем.
Однако, те же грабли с данными - 30-40 секунд на заполнение и 50 метров в
памяти.
Та же 1С открывает справочник практически мгновенно, при этом памяти
отжирается очень немного.
Плюс ко всему прочему необходимо реализовать быстрый поиск - когда фокус на
таблице справочника, пользователь вводит строку с клавиатуры, а курсор в
таблице соскакивает на позицию, которая совпадает с введенной строкой.
Причем соскок происходит после ввода каждого символа, а не строки целиком.
Большая просьба ткнуть носом в мануал, где рассказывается, как правильно
работать с СУБД средствами VB.
Может быть, кто-то сможет порекомендовать другую СУБД, которая лучше
подойдет под такую задачу...

Заранее сэнксы.
С уважением, Сошников Иван


* Origin: Demos online service (2:5020/400)



Назад Содержание Вперед




Главная     Программы     Статьи     Разное     Форум     Контакты