← Июнь 2003 → | ||||||
1
|
||||||
---|---|---|---|---|---|---|
3
|
4
|
5
|
7
|
8
|
||
10
|
11
|
12
|
13
|
15
|
||
16
|
18
|
19
|
20
|
22
|
||
24
|
25
|
26
|
28
|
29
|
||
За последние 60 дней ни разу не выходила
Сайт рассылки:
http://vbnet.ru
Открыта:
31-07-2001
Статистика
0 за неделю
Visual Basic: новости сайтов, советы, примеры кодов. Выпуск 172.
Информационный Канал Subscribe.Ru |
Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 172.
VBNet
VBMania
Голосование: Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Обратите внимание на раздел "VBNet CD '06 2003"!
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Citycat by Email Программа Citycat by Email позволяет работать с сервером Subscribe.ru с помощью электронной почты. Теперь Вам не нужно тратить деньги на работу в online и просматривать мегабайты рекламы для того, чтобы подписаться на нужную рассылку! Вам просто необходимо скачать небольшую базу данных по всем рассылкам каталога с нашего сайта, после чего Вы сможете подписываться и отписываться от рассылок, заказывать архивы прошлых выпусков, выполнять поиск по каталогу рассылок и многое другое. Программу Citycat by Email можно бесплатно загрузить с сайта http://sapisoft.h1.ru. наверх VBNet CD '06 2003 VBNet.Ru представляет новый компакт диск "VBNet CD '06 2003"! CD содержит только новые материалы, почти всё, содержавшееся на предыдущих CD было удалено! Что же нового на CD? Добавлено 19 программ в раздел "Софт". Главная программа на этом CD - DirectX 9 SDK. Это пакет для разработки мультимедийных приложений (графика, 3D, звук и т.д.). Имеются примеры, в том числе и на VB .NET. Другие программы:
Добавлено 11 интересных книг о Visual Basic и .NET на английском языке. В разделе "Примеры" несколько новых примеров на Visual Basic .NET по работе с Direct3D 9 и .NET Framework. 10 примеров по программированию под новую версию Office - Office 2003. А также движок форума на ASP .NET с исходниками! В разделе "Эксклюзив" моя новая статья о криптографии в .NET и несколько примеров на Visual Basic .NET о симметричном шифровании и использовании WMI. А также коллекция музыки в формате MIDI и болшая коллекция иконок! Ну и конечно свежая версия сайта VBNet.Ru. С момента выхода предыдущего выпуска "VBNet CD" на VBNet.Ru появилось 7 статей, 8 ActiveX-контролов, 44 примера и около 5000 сообщений в форуме! Полное содержание диска можно скачать здесь: http://vbnet.ru/vbshop/vbnetcd062003.zip. Цена диска, включая почтовые расходы: 100 рублей. Диск распространяется по почте наложенным платежом. Магазин компакт-дисков был немного улучшен. Теперь он больше похож на солидные интернет-магазины. Вы можете заказать сразу несколько дисков (сейчас в нашем магазине продаётся 4 диска). Действует система скидок постоянным покупателям. Наш магазин расположен по адресу http://vbnet.ru/vbshop/cdshop.asp Мы всегда рады Вас видеть! наверх Новости сайта VBNet
Последние 20 тем форума на VBNet.Ru: 18:14 / 22 июн. Resource in EXE | Хитов: 15 | Ответов: 1 16:46 / 21 июн. VBA + Excel | Хитов: 16 | Ответов: 0 15:44 / 21 июн. OffTopic: Сетевикам(от сетевого чайника) | Хитов: 17 | Ответов: 0 15:34 / 21 июн. Использование WINAPI в VB.NET | Хитов: 18 | Ответов: 0 15:31 / 21 июн. Combo - как получить выбранный элемент? | Хитов: 28 | Ответов: 4 14:18 / 21 июн. Internet Explorer | Хитов: 16 | Ответов: 0 14:07 / 21 июн. DataGrid+Аdodc сортировка? | Хитов: 10 | Ответов: 0 10:45 / 21 июн. Куда можно засунуть ТАКОЙ текст? | Хитов: 64 | Ответов: 8 10:33 / 21 июн. Off: программеры и админы | Хитов: 48 | Ответов: 5 22:29 / 20 июн. Новое сообщение без темы | Хитов: 6 | Ответов: 0 19:18 / 20 июн. Нужна компонента | Хитов: 23 | Ответов: 0 16:54 / 20 июн. Отсылка файлов на сервер методом POST? | Хитов: 21 | Ответов: 1 14:28 / 20 июн. Как имитировать нажатие клавиш? | Хитов: 22 | Ответов: 1 14:00 / 20 июн. Как посчитать время цикла? | Хитов: 46 | Ответов: 6 14:00 / 20 июн. Как посчитать время во цикла? | Хитов: 9 | Ответов: 0 11:09 / 20 июн. число не влазит в переменную! (я чайник) | Хитов: 75 | Ответов: 16 10:54 / 20 июн. Работа с cookies! | Хитов: 17 | Ответов: 0 09:39 / 20 июн. как программно... | Хитов: 39 | Ответов: 0 08:09 / 20 июн. А можно без IP и имени компа? | Хитов: 42 | Ответов: 3 07:42 / 20 июн. Как защетить по времени свою программу? | Хитов: 38 | Ответов: 2 Последние поступления в Библиотеку кодов: Новости от VBNet-чиков!: наверх Новости сайта VBMania наверх Новости сайта Азбука VB наверх Новости сайта MSDN наверх Новости сайта GotdotNet
Новые статьи:
наверх Новости сайта dotSite Новые статьи: Новые примеры: наверх Один момент из жизни форума: Чтение/запись файла в VB .NET Вопрос: Автор вопроса: thelost Как прочитать и записать текст из файла в Visual Basic .NET? Ответы: Атор: Павел Для чтения/записи файлов юзай объекты из пространства имён System.IO: FileStream, StreamReader и StreamWriter. Автор: thelost Ну если я бы знал как их юзать... я б вопросы не задавал. Все познается на примерах, а даже их у меня нет... Автор: Павел Ну расскажу про чтение... Сначала создаём объект FileStream Dim fs As New IO.FileStream("c:\путь\имя файла", IO.FileMode.Open, IO.FileAccess.Read) Дальше создаём StreamReader Dim sr As New IO.StreamReader(fs, System.Text.Encoding.GetEncoding(1251)) Обрати внимание, вторым параметром мы указываем, что читаем файл в кодировке Windows-1251, то есть родную виндовскую кирилицу. Дальше читаем файл в строковую переменную. Dim str As String str = sr.ReadToEnd() Закрываем объекты. sr.Close fs.Close Аналогично запись. Сначала создаёшь FileStream, потом StreamWriter. Затем пишешь в StreamWriter инфу. Автор: thelost Аналогично это, как? Допустим начну так (по аналогии): Dim fs As New IO.FileStream(SaveFileDialog1.FileName, IO.FileMode.Create, IO.FileAccess.Write) Dim sr As New IO.StreamWriter(fs, System.Text.Encoding.GetEncoding(1251)) А как инфу записать в StreamWriter? зы: понимаю смешно, но после с++, VB .net мне понять еще сложнее, чем наоборот. Автор: Павел sr.Write (текст) Уж можно было заглянуть в Object Browser или в MSDN и глянуть методы StreamWriter'а! наверх Доска объявлений Ищу телеработу.
наверх Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Авторы: Шатрыкин Иван и Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Сергей Ответ ожидается по этому адресу Подскажите, пожалуйста… Можно ли сделать так, чтобы FileListBox Отображал файлы отсортированные не по имени, а по чему либо другому..? Например по дате, или по расширению? Автор вопроса: SHADE Ответ ожидается по этому адресу Привет люди помогите решить проблему есть класс, а в нем процерура: Dim ws As Object Sub wsInit() Set ws = CreateObject("MSWinsock.Winsock") End Sub которая создает обьект Winsock. Как известно, у него есть событие DataArrival. Так вот мне необходимо его перехватить. Есть мой вариант того, как это зделать: Private Sub ws_DataArrival(ByVal bytesTotal As Long) Dim tmp as String ws.GetData tmp MsgBox tmp End Sub Но он не работает (по крайней мере у меня). Автор вопроса: ]CBK[C...R...a...S...H Ответ ожидается по этому адресу Люди в Visual Studio есть очень реальная утилита Depends она служит для получения API функций из библиотек, программ и т.д. Но в ней есть баг она не пишет какие данные необходимо передавать в ту или иную функцию, кто знает что с этим делать Автор вопроса: .::neo::. Ответ ожидается по этому адресу Есть ли какая-нибудь прога, которая показывает к какому классу относится окно? Например,манипулятор панели яадач- "Shell_TrayWnd"... Автор вопроса: Роман Ответ ожидается по этому адресу Для использования базы DBF (FoxPro 3.0), использую Data и DBGrid. При попытке изменить, удалить или добавить записи в базу, выдается сообщение, где сказано: Ощибка 3027 "Невозможно обновить. База данных или объект только для чтения" P.S. Data.ReadOnly=False Автор вопроса: Ladyzhenkov Alexander Ответ ожидается по этому адресу Такой вопрос: Я создаю панель инструментов типа MS Office. Пишу код: Private Sub Form_Load() 'Раямеры и положение формы formMain.Height = Screen.Height formMain.Left = Screen.Width - formMain.Width End Sub т.е. форма раямещается в правом углу экрана. Как сделать, чтобы другие окна в развёрнутом виде располагались слева от этой формы и не закрывали её (как с панелью инструментов)? Автор вопроса: dima Ответ ожидается по этому адресу Как можно послать сообщение на email? Автор вопроса: Vao Ответ ожидается по этому адресу Раярабатывал я тут приложение - редактор тестов с выборочными ответами, работающее с БД Access. Краткое описание: прога соядает, ияменяет, удаляет таблицы в которых хранятся данные тестовых яаданий. Заметил, что раямер файлов БД постоянно увеличивается, даже если не добавляются новые таблицы. Почему это происходит? Автор вопроса: Дмитрий Ответ ожидается по этому адресу Подскажите plz, как можно в текстовый файл (*.txt) вставить стрку в произвольную позицию (имеется ввиду между некоторыми другими строками), не загужая, при этом, содержимое файла в TextBox? Автор вопроса: Максим Ответ ожидается по этому адресу В vb.net теперь нет контрола webbrowser. Чем можно заменить? Автор вопроса: Oleks Ответ ожидается по этому адресу Нужно в VB6 построить амплитудно-частотную хар-ку звукового .wav - файла. Ответы: Вопрос: Как можно прикрепить звук (wav,mp3) к программе, чтобы потом его воспроизвести (через Mci)? Ответ: Автор ответа: Максим Запихни в ресурсы, при запуске проги сохрани в temp – папку, и запускай. Вопрос: Как узнать загруженность процессора? Ответ: Автор ответа: Vao По поводу замера степени использования степени использования процессора привожу статью Михаила Кассирова. -----Начало цитаты----- Замер степени использования процессора Недавно в статье, посвящённой недокументированным возможностям Windows, я обнаружил интересный способ измерения степени использования процессора. Дело в том, что в Windows 9x существуют счётчики Performance Counters, которые можно включить из реестра, и в реестр же они будут посылать результаты замеров. Например загруженности процессора. Есть они и в NT, но доступ к ним сложнее. К моему собственному удивлению результат перевода С на человеческий VB отлично заработал! По-сему, если Вашей программе нужно знать загруженность проца, или если Вы заинтересуетесь доступом в реестр из WinApi32, то Вы можете познакомиться с простеньким примером. Разумеется в полном варианте нужно было бы вставить проверку типа Windows (например через GetWindowsVersion), сворачивание в SysTray и т.п., но в "укороченном" виде Вам будет проще приспособить данную фичу Windows к своим потребностям. Итак. Если у Вас не NT. Расположите на форме кнопочку. Назовём её cmdStart. Как водится, в раздел General Declarations вставляем: 'Открыть нужный ключ: Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" ( _ ByVal hkey As Long, _ ByVal pSubKey As String, _ ByVal ulOptions As Long, _ ByVal samDesired As Long, _ phkResult As Long) As Long 'hkey, lpSubKey - пути к ключу, 'ulOptions - зарезервировано: должно быть ноль, 'samDesired - тип доступа: комбинация предопределённых констант, 'phkResult - переменная, получающая хэндл нужного ключа. Не забудьте потом закрыть. 'Получить тип и значение параметра из ранее открытого ключа: Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" ( _ ByVal hkey As Long, _ ByVal lpValueName As String, _ ByVal lpReserved As Long, _ lpType As Long, _ lpData As Any, _ lpcbData As Long) As Long 'hkey - хэндл открытого ранее ключа, 'lpValueName - имя параметра, который нужно прочитать, 'lpReserved - зарезервировано: должно быть ноль, 'lpType - переменная, в которую будет возвращаться тип параметра 'можно передать ноль, если тип не требуется (нам, кстати, передаст 3 - REG_BINARY), 'lpData - то, что нас интересует, 'lpcbData - переменная, которая содержит длину буфера под lpData, 'после выполнения будет содержать кол-во в действительности переданных байт 'у нас - длина слова: 4. Если переменную заменить просто на 4 - тоже работает 'Закрытие ранее открытого ключа: Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hkey As Long) As Long 'Некоторые константы из API Viewer: Private Const HKEY_DYN_DATA = &H80000006 Private Const STANDARD_RIGHTS_ALL = &H1F0000 Private Const READ_CONTROL = &H20000 Private Const STANDARD_RIGHTS_READ = (READ_CONTROL) Private Const KEY_QUERY_VALUE = &H1 Private Const KEY_SET_VALUE = &H2 Private Const KEY_CREATE_SUB_KEY = &H4 Private Const KEY_ENUMERATE_SUB_KEYS = &H8 Private Const KEY_NOTIFY = &H10 Private Const KEY_CREATE_LINK = &H20 Private Const SYNCHRONIZE = &H100000 Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL OR _ KEY_QUERY_VALUE OR KEY_SET_VALUE OR _ KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or _ KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE)) Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or _ KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or _ KEY_NOTIFY) And (Not SYNCHRONIZE)) 'Для служебных нужд: 'Самый ресурсощедящий способ выждать паузу (в миллисекундах): Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'Всегда пригодится: Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _ ByVal hWndInsertAfter As Long, _ ByVal x As Long, _ ByVal y As Long, _ ByVal cx As Long, _ ByVal cy As Long, _ ByVal WFlags As Long) As Long 'А это наше: Dim hkey As Long Dim dwCPUUsage As Long Dim lpcbData As Long'по-моему действительно лучше выкинуть, 'подставив в нужных местах 4. Ау, теоретики! Dim bStart As Boolean Private Sub Form_Load() SetWindowPos Me.hwnd, -1, 0, 0, 0, 0, 3 'видим всегда End Sub Private Sub cmdStart_Click() bStart = Not bStart 'bStart - это Вкл-Выкл. См. далее If bStart Then 'если - True - начинаем cmdStart.Caption = "&Stop" 'меняем название кнопочки 'Включаем счётчик, считывая значение соответствующего ключа: If RegOpenKeyEx(HKEY_DYN_DATA, "PerfStats\StartStat", 0, KEY_ALL_ACCESS, _ hkey) <> 0 Then Exit Sub lpcbData = 4 RegQueryValueEx hkey, "KERNEL\CPUUsage", 0, 0, dwCPUUsage, lpcbData RegCloseKey hkey 'закрыть ключ 'Считываем значение прямо из реестра: If RegOpenKeyEx(HKEY_DYN_DATA, "PerfStats\StatData", 0, KEY_READ, _ hkey) <> 0 Then Exit Sub Do While bStart 'пока ещё раз не нажмём на кнопочку < RegQueryValueEx hkey, "KERNEL\CPUUsage", 0, 0, dwCPUUsage, lpcbData Sleep 500 'интервал опроса - полсекунды Caption = Str$(dwCPUUsage) & "%" 'Любуемся!!! DoEvents 'даём жить Loop RegCloseKey hkey 'закрыть ключ 'останавливаем счётчик. Если Вы прервали выполнение программы 'до этого момента, остановить счётчик можно только перезагрузившись!!! 'Проверено:(( If RegOpenKeyEx(HKEY_DYN_DATA, "PerfStats\StopStat", 0, KEY_ALL_ACCESS, _ hkey) <> 0 Then Exit Sub lpcbData = 4 RegQueryValueEx hkey, "KERNEL\CPUUsage", 0, 0, dwCPUUsage, lpcbData RegCloseKey hkey 'помним всегда! Else cmdStart.Caption = "&Start" 'меняем название кнопочки и... Caption = "Stoped..." 'не даем себе впасть в уныние глядя на зависшие 100% End If End Sub Private Sub Form_Unload(Cancel As Integer) If bStart Then cmdStart_Click End If 'ленивые меня поймут;-) End Sub ----Конец цитаты---- Вопрос: Как поместить в панель задач иконку, клик по которой позволит открыть программу, контекстное меню. Ответ: Автор ответа: Максим Как разместить иконку программы в TrayBar Вам необходимо добавить модуль 'КОД МОДУЛЯ Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Integer Public Const NIM_ADD = 0 Public Const NIM_MODIFY = 1 Public Const NIM_DELETE = 2 Public Const NIF_MESSAGE = 1 Public Const NIF_ICON = 2 Public Const NIF_TIP = 4 Type NOTIFYICONDATA cbSize As Long hWnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 64 End Type Public Function SetTrayIcon(Mode As Long, hWnd As Long, Icon As Long, tip As String) As Long Dim nidTemp As NOTIFYICONDATA nidTemp.cbSize = Len(nidTemp) nidTemp.hWnd = hWnd nidTemp.uID = 0& nidTemp.uFlags = NIF_ICON Or NIF_TIP nidTemp.uCallbackMessage = 0& nidTemp.hIcon = Icon nidTemp.szTip = tip & Chr$(0) SetTrayIcon = Shell_NotifyIconA(Mode, nidTemp) End Function 'КОД ФОРМЫ 'Затем уже в событиях формы вы можете пользоваться вышеприведеными API-функциями. 'Запустите программу. Иконка появится в трее. Наведите на нее курсор, и вы увидите 'надпись "Проверка", теперь кликните в любом месте формы и снова наведите на иконку... Private Sub Form_Click() SetTrayIcon NIM_MODIFY, Me.hWnd, Me.Icon, "Работает? Работает!" End Sub Private Sub Form_Load() SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Проверка" End Sub Private Sub Form_Unload(Cancel As Integer) SetTrayIcon NIM_DELETE, Me.hWnd, 0&, "" End Sub Вопрос: Есть такая проблема при посимвольной обработке строки... Dim TMP As String Dim TMP2 As String Dim X As Integer For X = 1 to Len(TMP) Step 0 TMP2 = TMP2 & Mid(TMP, X, 1) X = X + 1 Next X Проблема в том, что перебор строки состоящий всего из 10 тыс. символов занимает самое малое минуту, а если требуется перебрать 5 000 000 символов, например файл обработать... как можно повысить скорость работы? Повышал приоритет программы до RealTime, но это почти не заметно... Буду благодарен любому совету, или примеру намыленному на SoundMuzic@narod.ru; Ответ: Автор ответа: RaZoom Tmp2=Tmp Так, кажется, проще... А это просто СУПЕР!!! For X = 1 to Len(TMP) Step 0 ... X = X + 1 Next X Ответ: Автор ответа: ]CBK[C...R...a...S...H М.... да Тебе просто необходимо из файла прочитать не строку а массив байт dim Mass() as byte и потом работать с ними Скорость возрастет очень реально Ответ: Автор ответа: RaZoom А, вообще-то, если действительно нужен посимвольный перебор, то лучше сделать так: Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Private Sub Form_Load() Dim aPtr&, bPtr&, a$, b$, i& 'Создаем БАААльшую строку For i = 1 To 100000 'Оччень медленная строка, а у тебя в примере используется именно такой 'вариант a$ = a$ & Chr(Int(Rnd * 255 + 0.5)) DoEvents Next i aPtr = VarPtr(a) bPtr = VarPtr(b) ' Самое интересное место :) For i = 0 To Len(a) - 1 CopyMemory ByVal bPtr + i, ByVal aPtr + i, 1 DoEvents Next i End Sub При такой длине строки у меня второй цикл отрабатывает раз в 50 быстрее первого, т.к. программе все время приходится переопределять место для хранение строки. Так, что если нужно работать с действительно большими объемами, то лучше сразу выделять необходимую память под строку, например так: a = Space(100000) For i = 1 To 100000 Mid(a$, i, 1) = Chr(Int(Rnd * 255 + 0.5)) DoEvents Next i Работает на порядок быстрее первого варианта. А самый-самый лучший вариант - преобразовать строки в массив, тогда и АПИ не будет нужен. Ответ: Автор ответа: Vir Во первых вместо: for x=1 to len(tmp) step 0 x=x+1 next x Можно написать: For x=1 to len(tmp) next Скорость это не увеличит; в данном случае можно написать tmp2=tmp, если идет только данный код, а в остальном нужно разбирать саму программу, некоторые участки кода можно заменить встроенными функциями, их масса, а если код никак не усовершенствовать то для ускорения поможет только C++ Ответ: Автор ответа: P@Ssword Если потребуется 5 000 000 символов, то вообще работать не будет :), т.к. у X как у Integer максимальное значение - 32767. FAS_WL, что есьм конструкция сия делает, коли не секрет (если можно - на мыло pas_sword@tut.by): For X = 1 to Len(TMP) Step 0 X = X + 1 Next X ? Ну, ладно. Секрет, так секрет. А проблема заключается в том, что при добавлении к строке символа происходит изменение её длины, что не есть весьма быстрая операция. А если её повторить несколько тысяч, а то и миллионов раз, да если и строка становится всё длиннее, то дело может чуть затянуться. Предлагаю два решения: 1) TMP2 = TMP ' или Space(Len(TMP)), или String(Len(TMP),0) For X = 1 to Len(TMP) Step 0 Mid$(TMP2, X, 1) = Mid(TMP, X, 1) X = X + 1 Next X т.е., сразу создаём строку нужной длины и потом её посимвольно изменяем (многие не знают, что Mid можно использовать не только справа от знака равенства, но и слева). 2) А нужны ли строки? По-моему, для посимвольной обработки больше подходят массивы. Например, так: Dim Temp1() As Byte Dim Temp2() As Byte Dim Ind As Long Temp1 = StrConv(TMP, vbFromUnicode) Redim Temp2(Ubound(Temp1)) For Ind = 0 To Ubound(Temp1) Temp2(Ind) = Temp1(Ind) Next Ind TMP2 = StrConv(Temp2, vbUnicode) ' Если надо, но по-моему, лучше всё заточить под массивы и обойтись без строк. Сильно не пугаться, строки и байтовые массивы совместимы по присваиванию в обе стороны %-) Вопрос: У меня возник такой вопрос>>> Имеется база данных Аксэс. Как можно сделать,чтобы например со странички Searhc.asp ввести в поле слово и в базе данных это все проверилось на наличее этого слова в тексте и если такое слово присутствует, вывести на страничку текст, в котором это слова есть. Другими словами мне нужем поиск по базе данных для ASP программирования! Прошу помочь в моей сложной работе. Ответ: Автор ответа: ]CBK[C...R...a...S...H Вот процедура написанная мной для поиска документов по заданным данным <% 'Открытие базы set cnn1 = server.createobject("ADODB.connection") cString= "Inet_Baza" cnn1.open cString 'Создание RecordSeta set rsMbrs=server.createobject("ADODB.recordset") Dim cStringZ(10) for i=0 to 6 cStringZ(i)=Request.Form("box" & i+1) cStringZ(i)=Replace(cStringZ(i),"*","%") next i=0 sql="SELECT Поиск.* FROM Поиск " & _ "WHERE (((Поиск.Название) Like '" & cStringZ(0) & "') AND ((Поиск.Номер) Like '" & cStringZ(1) & "') AND " & _ "((Поиск.Дата_принятия) Like '" & cStringZ(2) & "') AND ((Поиск.Дата_вступления) Like '" & cStringZ(3) & "') AND ((Поиск.Орган_приневший) Like '" & cStringZ(4) & "') AND ((Поиск.Ключивые_слова) Like '" & cStringZ(5) & "'))" rsMBrs.open sql ,cnn1, adOpenForwardOnly, adLockReadOnly, adCmdText %> 'вывод данных из базы <P align=center> <TABLE cellSpacing=1 cellPadding=1 width="100%" border=3> <%do while not rsmbrs.EOF i=i+1 %> <%Response.Write "<TR>" +vbCrLf & _ "<TD>" & i & "</TD>" & _ "<TD>" & rsmbrs.Fields(7) & "</TD></TR>" rsmbrs.MoveNext loop %> </TABLE></P> <%if i=0 then Response.Write "Найдено документов 0" %> <% cnn1.close set cnn1=nothing %> <P></P> Вопрос: Как отсортировать двумерный массив раямерностью 10Х3 по первому столбцу, но при этом сохранить первоначальную свяяь между строками массива, если можно пришлите кусок кода? Ответ: Автор ответа: Vir В сортировке сортируеш по 1 столбцу сравнивая например A(x,1) и A(y,1) если они меняются то меняются и все оставшиеся A(x,2..10), A(y,2..10) Вопрос: Люди кто может сказать реально VB.NET отличается от VB? Ответ: Автор ответа: vmv ]CBK[C...R...a...S...H что, точек в голове не хватает нажать ссылку VB.Net или статьи. хотя бывает, что если и читано, то не понято... Ответ: Автор ответа: Oleks Отличается очень сильно - даже по духу (идеологии). Вопрос: Имеется некоторая проблема: нашел очень неплохую литературку (Книга +CD) по VB.Net. Стоит довольно приличных денег при довольнол подробной информации. Если кто имел дело с VB.Net подскажите, стоит ли нанего переходить и есть ли у него какие-нибудь особые требования к системе? Ответ: Автор ответа: Максим Нужна операционка «нового поколения» (XP, 2000). 95 не поддерживает, а для 98, 98 SE, МЕ нужен какой-то сервис – пак. Для железа тоже нужно обновится, нужно более – менее мощная машина. А переходить, скорей всего, рано или поздно придется. Ответ: Автор ответа: Oleks Дело вкуса. Я в прошлом году попробовал - понравилось, но реально перейти никак не решусь. Главное что сдерживает - это несозможность установки программ на слабенькие компы. (очень тяжелый Framework.NET). Вопрос: Как получиь Hwnd активного в данный момент окна, но выяванного не моей программой (т.е. GetActiveWindow не прокатывает)? Ответ: Автор ответа: RaZoom Public Declare Function GetForegroundWindow Lib "user32" Alias "GetForegroundWindow" () As Long Ответ: Автор ответа: Vir Вобшем этот модуль фотографирует и переделывает в Bitmap скрин шот рабочего стола или активного окна кому надо берите, а в нем соответственно можно выковырять строчку активного окна. 'Модуль Option Explicit Option Base 0 Private Type PALETTEENTRY peRed As Byte peGreen As Byte peBlue As Byte peFlags As Byte End Type Private Type LOGPALETTE palVersion As Integer palNumEntries As Integer palPalEntry(255) As PALETTEENTRY ' Enough for 256 colors End Type Private Type GUID Data1 As Long Data2 As Integer Data3 As Integer Data4(7) As Byte End Type Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Type PicBmp Size As Long Type As Long hBmp As Long hPal As Long Reserved As Long End Type Private Const RASTERCAPS As Long = 38 Private Const RC_PALETTE As Long = &H100 Private Const SIZEPALETTE As Long = 104 Private Declare Function CreateCompatibleBitmap Lib "GDI32" ( _ ByVal hDC As Long, ByVal nWidth As Long, _ ByVal nHeight As Long) As Long Private Declare Function GetDeviceCaps Lib "GDI32" ( _ ByVal hDC As Long, ByVal iCapabilitiy As Long) As Long Private Declare Function GetSystemPaletteEntries Lib "GDI32" ( _ ByVal hDC As Long, ByVal wStartIndex As Long, _ ByVal wNumEntries As Long, lpPaletteEntries As PALETTEENTRY) _ As Long Private Declare Function CreateCompatibleDC Lib "GDI32" ( _ ByVal hDC As Long) As Long Private Declare Function CreatePalette Lib "GDI32" ( _ lpLogPalette As LOGPALETTE) As Long Private Declare Function SelectPalette Lib "GDI32" ( _ ByVal hDC As Long, ByVal hPalette As Long, _ ByVal bForceBackground As Long) As Long Private Declare Function RealizePalette Lib "GDI32" ( _ ByVal hDC As Long) As Long Private Declare Function SelectObject Lib "GDI32" ( _ ByVal hDC As Long, ByVal hObject As Long) As Long Private Declare Function BitBlt Lib "GDI32" ( _ ByVal hDCDest As Long, ByVal XDest As Long, _ ByVal YDest As Long, ByVal nWidth As Long, _ ByVal nHeight As Long, ByVal hDCSrc As Long, _ ByVal XSrc As Long, ByVal YSrc As Long, ByVal dwRop As Long) _ As Long Private Declare Function GetWindowDC Lib "USER32" ( _ ByVal hWnd As Long) As Long Private Declare Function GetDC Lib "USER32" ( _ ByVal hWnd As Long) As Long Private Declare Function ReleaseDC Lib "USER32" ( _ ByVal hWnd As Long, ByVal hDC As Long) As Long Private Declare Function DeleteDC Lib "GDI32" ( _ ByVal hDC As Long) As Long Private Declare Function GetWindowRect Lib "USER32" ( _ ByVal hWnd As Long, lpRect As RECT) As Long Private Declare Function GetDesktopWindow Lib "USER32" () As Long Private Declare Function GetForegroundWindow Lib "USER32" () As Long Private Declare Function OleCreatePictureIndirect _ Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, _ ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long Public Function CreateBitmapPicture(ByVal hBmp As Long, _ ByVal hPal As Long) As Picture Dim r As Long Dim Pic As PicBmp Dim IPic As IPicture Dim IID_IDispatch As GUID With IID_IDispatch .Data1 = &H20400 .Data4(0) = &HC0 .Data4(7) = &H46 End With With Pic .Size = Len(Pic) ' Length of structure .Type = vbPicTypeBitmap ' Type of Picture (bitmap) .hBmp = hBmp ' Handle to bitmap .hPal = hPal ' Handle to palette (may be null) End With r = OleCreatePictureIndirect(Pic, IID_IDispatch, 1, IPic) Set CreateBitmapPicture = IPic End Function Public Function CaptureWindow(ByVal hWndSrc As Long, _ ByVal bClient As Boolean, ByVal LeftSrc As Long, _ ByVal TopSrc As Long, ByVal WidthSrc As Long, _ ByVal HeightSrc As Long) As Picture Dim hDCMemory As Long Dim hBmp As Long Dim hBmpPrev As Long Dim r As Long Dim hDCSrc As Long Dim hPal As Long Dim hPalPrev As Long Dim RasterCapsScrn As Long Dim HasPaletteScrn As Long Dim PaletteSizeScrn As Long Dim LogPal As LOGPALETTE If bClient Then hDCSrc = GetDC(hWndSrc) 'Get DC for Client area. Else hDCSrc = GetWindowDC(hWndSrc) 'Get DC for entire window. End If hDCMemory = CreateCompatibleDC(hDCSrc) hBmp = CreateCompatibleBitmap(hDCSrc, WidthSrc, HeightSrc) hBmpPrev = SelectObject(hDCMemory, hBmp) RasterCapsScrn = GetDeviceCaps(hDCSrc, RASTERCAPS) 'Raster capabilities HasPaletteScrn = RasterCapsScrn And RC_PALETTE 'Palette support PaletteSizeScrn = GetDeviceCaps(hDCSrc, SIZEPALETTE) 'Palette size If HasPaletteScrn And (PaletteSizeScrn = 256) Then LogPal.palVersion = &H300 LogPal.palNumEntries = 256 r = GetSystemPaletteEntries(hDCSrc, 0, 256, LogPal.palPalEntry(0)) hPal = CreatePalette(LogPal) hPalPrev = SelectPalette(hDCMemory, hPal, 0) r = RealizePalette(hDCMemory) End If r = BitBlt(hDCMemory, 0, 0, WidthSrc, HeightSrc, hDCSrc, _ LeftSrc, TopSrc, vbSrcCopy) hBmp = SelectObject(hDCMemory, hBmpPrev) If HasPaletteScrn And (PaletteSizeScrn = 256) Then hPal = SelectPalette(hDCMemory, hPalPrev, 0) End If r = DeleteDC(hDCMemory) r = ReleaseDC(hWndSrc, hDCSrc) Set CaptureWindow = CreateBitmapPicture(hBmp, hPal) End Function Public Function CaptureScreen() As Picture Dim hWndScreen As Long hWndScreen = GetDesktopWindow() With Screen Set CaptureScreen = CaptureWindow(hWndScreen, False, 0, 0, _ .Width \ .TwipsPerPixelX, .Height \ .TwipsPerPixelY) End With End Function Public Function CaptureForm(frm As Form) As Picture With frm Set CaptureForm = CaptureWindow(.hWnd, False, 0, 0, _ .ScaleX(.Width, vbTwips, vbPixels), _ .ScaleY(.Height, vbTwips, vbPixels)) End With End Function Public Function CaptureClient(frm As Form) As Picture With frm Set CaptureClient = CaptureWindow(.hWnd, True, 0, 0, _ .ScaleX(.ScaleWidth, .ScaleMode, vbPixels), _ .ScaleY(.ScaleHeight, .ScaleMode, vbPixels)) End With End Function Public Function CaptureActiveWindow() As Picture Dim hWndActive As Long Dim RectActive As RECT hWndActive = GetForegroundWindow() Call GetWindowRect(hWndActive, RectActive) With RectActive Set CaptureActiveWindow = CaptureWindow(hWndActive, False, 0, 0, _ .Right - .Left, .Bottom - .Top) End With End Function Public Sub PrintPictureToFitPage(Prn As Printer, Pic As Picture) Dim PicRatio As Double Dim PrnWidth As Double Dim PrnHeight As Double Dim PrnRatio As Double Dim PrnPicWidth As Double Dim PrnPicHeight As Double Const vbHiMetric As Integer = 8 If Pic.Height >= Pic.Width Then Prn.Orientation = vbPRORPortrait 'Taller than wide Else Prn.Orientation = vbPRORLandscape 'Wider than tall End If PicRatio = Pic.Width / Pic.Height With Prn PrnWidth = .ScaleX(.ScaleWidth, .ScaleMode, vbHiMetric) PrnHeight = .ScaleY(.ScaleHeight, .ScaleMode, vbHiMetric) End With PrnRatio = PrnWidth / PrnHeight If PicRatio >= PrnRatio Then PrnPicWidth = Prn.ScaleX(PrnWidth, vbHiMetric, Prn.ScaleMode) PrnPicHeight = Prn.ScaleY(PrnWidth / PicRatio, vbHiMetric, Prn.ScaleMode) Else PrnPicHeight = Prn.ScaleY(PrnHeight, vbHiMetric, Prn.ScaleMode) PrnPicWidth = Prn.ScaleX(PrnHeight * PicRatio, vbHiMetric, Prn.ScaleMode) End If Call Prn.PaintPicture(Pic, 0, 0, PrnPicWidth, PrnPicHeight) End Sub 'Программа Picture1.Picture = CaptureScreen Ответ: Автор ответа: shadow Declare Function GetForegroundWindow Lib "user32" () As Long Ответ: Автор ответа: P@Ssword GetForegroundWindow Вопрос: Подскажите, если знаете, как можно изменить вид кодировки отображения файлов, загружаемых в richtextbox? Еще вопрос: как и с помощью какого control'а можно (если можно) загрузить word'овский документ для корректного просмотра и/или редактирования? Ответ: Автор ответа: Oleks Если правильно понял вопрос - используй свойство .Font.Charset. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||||||||||||||||
Выпуск подготовили: |
Сурменок Павел |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||