Visual Basic: новости сайтов, советы, примеры кодов.
Выпуск 151.


VBNet VBMania
Голосование:

Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом.



Рассылки Subscribe.Ru
VB.NET-World
Новости сайта IgorykSoft и советы по программированию
DanSoft о Visual Basic
Visual Basic.NET Уроки.

Ссылки:

  • Улицы VB
  • Использование VB
  • Азбука VB
  • VB на русском
  • Улицы VB
  • Кирпичики VB
  • CообЧа VB
  • Snoozex Design
  • IgorykSoft
  • DanSoft
  • Господа!!! читайте MSDN!!!

    Несколько слов от автора:

       Новый выпуск!
    Читайте!


    Содержание выпуска




    Книги

    Переход на VB .NET. Стратегии, концепции, код (цена ~ 158 руб.)

    Эта книга была задумана как одна из первых книг о .NET, которая ознакомит читателя с основными идеями новой архитектуры и подготовит его к знакомству с более детальной литературой, например документацией Microsoft и ее толкованиями, которая неизбежно появится на рынке. Она поможет вам взглянуть на эту технологию с позиций ваших собственных рабочих планов и быстро освоить те концепции, которые покажутся необычными для большинства прогр...

    Автор(ы): Дан Эпплман, Издательство: Питер, 2002 г.


    Программирование на VB.NET. Учебный курс (цена ~ 119 руб.)

    Эта книга является вводным курсом по изучению языка программирования Visual Basic .NET. Даны основные принципы объектно-ориентированного программирования в контексте языка VB .NET, поскольку без хорошей подготовки в этой области невозможно в полной мере пользоваться всеми преимуществами VB .NET.
    Изложены азы всех аспектов языка, которыми должен владеть любой профессиональный разработчик VB .NET

    Автор(ы): Г. Корнелл, Дж. Моррисон, Издательство: Питер, 2002 г.


    VB.NET для разработчиков (цена ~ 125 руб.)

    Основная задача книги - быстро ознакомить разработчиков Visual Basic с изменениями в .NET Framework. Программисты, использующие Java, C++, Delphi или другие инструменты разработки приложений и интересующиеся Visual Basic или технологией .NET Framework, также найдут эту книгу полезной. Хотя книга посвящена Visual Basic.NET, ее основная цель - продемонстрировать взаимодействие Visual Basic и ...

    Автор(ы): Кит Франклин, Издательство: Вильямс, 2002 г.




    Остальные книги о VB можно найти здесь.

    наверх


    Имена компьютеров в сети

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

    Большой объем данного примера не позволяет разместить его на страницах "Библиотеки кодов", поэтому вот вам ссылка для загрузки проекта в ZIP-файле.

    СКАЧАТЬ ПРИМЕР

    наверх


    Определение раскладки клавиатуры любого окна

    Хотите знать, какая раскладка клавиатуры у любой программы, запущенной в данный момент? Будь то Microsoft Word, простейший Блокнот или любая программа для редактирования текстов. Теперь нет ничего проще. Благодаря форуму http://bbs.vbstreets.ru и человеку, ответившему на этот вопрос, вы можете использовать этот пример в своих программах.

    Прежде всего, вам понадобится модуль из ранее опубликованного примера "Поиск hwnd процесса на панели задач", ну а на основной форме добавьте элемент CommandButton.

    '---КОД МОДУЛЯ---
    Private Declare Function EnumWindows& Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long)
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Private Declare Function IsWindowVisible& Lib "user32" (ByVal hwnd As Long)
    Private Declare Function GetParent& Lib "user32" (ByVal hwnd As Long)
    Dim sPattern As String, hFind As Long

    Function EnumWinProc(ByVal hwnd As Long, ByVal lParam As Long) As Long
    Dim k As Long, sName As String
    If IsWindowVisible(hwnd) And GetParent(hwnd) = 0 Then
    sName = Space$(128)
    k = GetWindowText(hwnd, sName, 128)
    If k > 0 Then
    sName = Left$(sName, k)
    If lParam = 0 Then sName = UCase(sName)
    If sName Like sPattern Then
    hFind = hwnd
    EnumWinProc = 0
    Exit Function
    End If
    End If
    End If
    EnumWinProc = 1
    End Function

    Public Function FindWindowWild(sWild As String, Optional bMatchCase As Boolean = True) As Long
    sPattern = sWild
    If Not bMatchCase Then sPattern = UCase(sPattern)
    EnumWindows AddressOf EnumWinProc, bMatchCase
    FindWindowWild = hFind
    End Function

    '---КОД ФОРМЫ---
    Private Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
    Private Const LOCALE_SENGLANGUAGE = &H1001
    Public Function GetLanguageInfo(ByVal hwnd As Long) As String
    Dim sReturn As String, nRet As Long
    Dim pID As Long, tId As Long, LCID As Long
    tId = GetWindowThreadProcessId(hwnd, pID)
    LCID = LoWord(GetKeyboardLayout(tId))
    sReturn = String$(128, 0)
    nRet = GetLocaleInfo(LCID, LOCALE_SENGLANGUAGE, sReturn, Len(sReturn))
    If nRet > 0 Then GetLanguageInfo = Left$(sReturn, nRet - 1)
    End Function
    Public Function LoWord(DWORD As Long) As Integer
    If DWORD And &H8000& Then
    LoWord = &H8000 Or (DWORD And &H7FFF&)
    Else
    LoWord = DWORD And &HFFFF&
    End If
    End Function

    Private Sub Command1_Click()
    'MsgBox GetLanguageInfo(FindWindowWild("FineReader*", False))
    MsgBox GetLanguageInfo(FindWindowWild("Microsoft Word*", False))
    End Sub

    наверх


    Создание директории любой степени вложености

    Данный пример работает на всех версиях ВБ (5 и 6, поскольку более старые версии ВБ я практически не видел).

    Sub MakeDirPath(dirname As String)
    Dim i As Long, path As String
    Do
    i = InStr(i + 1, dirname & "\", "\")
    path = Left$(dirname, i - 1)
    If Right$(path, 1) <> ":" And Dir$(path, vbDirectory) = "" Then
    MkDir path
    End If
    Loop Until i >= Len(dirname)
    End Sub

    Private Sub Command1_Click()
    Call MakeDirPath("c:\1\2\3\4\")
    End Sub

    наверх


    Функция для изменения расширения файла

    Данный пример очень прост, поэтому особых пояснений не нужно.

    Function ChangeFileExtension(FileName As String, Extension As String, Optional AddIfMissing As Boolean) As String
    Dim i As Long
    For i = Len(FileName) To 1 Step -1
    Select Case Mid$(FileName, i, 1)
    Case "."
    ChangeFileExtension = Left$(FileName, i) & Extension
    Exit Function
    Case ":", "\"
    Exit For
    End Select
    Next
    If AddIfMissing Then
    ChangeFileExtension = FileName & "." & Extension
    Else
    ChangeFileExtension = FileName
    End If
    End Function

    Private Sub Command1_Click()
    MsgBox ChangeFileExtension("ggg.htm", "txt")
    MsgBox ChangeFileExtension("ggg", "txt", True)
    End Sub

    наверх


    Определить, имеет ли папка подпапки

    Private Const MAX_PATH = 260
    Private Type SHFILEINFO
    hIcon As Long
    iIcon As Long
    dwAttributes As Long
    szDisplayName As String * MAX_PATH
    szTypeName As String * 80
    End Type
    Private Declare Function SHGetFileInfo Lib "Shell32" Alias "SHGetFileInfoA" (ByVal pszPath As Any, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo As Long, ByVal uFlags As Long) As Long

    Function FolderHasSubFolders(ByVal sPath As String) As Boolean
    Const SFGAO_HASSUBFOLDER = &H80000000
    Const SHGFI_ATTRIBUTES = &H800
    Dim FInfo As SHFILEINFO
    SHGetFileInfo sPath, 0, FInfo, Len(FInfo), SHGFI_ATTRIBUTES
    FolderHasSubFolders = (FInfo.dwAttributes And SFGAO_HASSUBFOLDER)
    End Function

    Private Sub Command1_Click()
    MsgBox FolderHasSubFolders("C:\Program Files")
    MsgBox FolderHasSubFolders("C:\Program Files\NetMeeting")
    End Sub

    наверх


    Мои программы

    BalloonMessage for MS Agent

       BalloonMessage for Microsoft Agent реализует диалог программы с пользователем, используя при этом технологию Microsoft Agent. OCX реализует три типа диалоговых окон: InputBox, MsgBox и MsgLabels.

    Автора: Шатрыкин Иван и Павел Сурменок.

    наверх


    Вопрос/Ответ

    Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы.

    Вопросы:


    Автор вопроса: kakerss

    Ответ ожидается по этому адресу

       у меня 4 вопроса но особенно меня волнуют 1 и 4(в особенности) вопросы.

    1).как через winsock отправлять файлы
    2).как из *dll использовать ресурсы
    3).как с помощью vb запорлить папку
    4).как в ходе работы программы записовать текст прямо в *exe-шник программы и читать его от туда!


    Автор вопроса: Николай Шаманов

    Ответ ожидается по этому адресу

       Где найти библиотеку VB со статистическими или аналитическими функциями, например вычисление корреляции между массивами?
    Всё-таки испольяование Excel тяжеловесно!


    Автор вопроса: HoodWin

    Ответ ожидается по этому адресу

       Как ассоциировать приложение с какой либо папкой. Т. е. чтобы при её открытии запускалась и программа.


    Автор вопроса: Vadim

    Ответ ожидается по этому адресу

       Как узнать рассшареные ресурсы на удаленом компе.


    Автор вопроса: ALEX

    Ответ ожидается по этому адресу

       А можно передать "нажатие" клавиш на клаве программе, которая уже запущена?


    Автор вопроса: Лёха

    Ответ ожидается по этому адресу

       Кто знает как получить содержимое ListBox с помощью API???


    Автор вопроса: Kirill I. Vinokurov

    Ответ ожидается по этому адресу

       1) Мне надо чтобы файл readme.txt записывался на все компьютеры в сети, например, в папку C:\Мои документы\.
    2) Подскажите где можно найти подробное описание работы с MAPI. Можно (и нужно :)) ссылку.


    Автор вопроса: efimov_oleg

    Ответ ожидается по этому адресу

       Существует какой-либо контрол для отображение полей БД в виде таблицы, и как им пользовааться. А то использовать несколько ListBox-ов кажется перегибом.


    Автор вопроса: Алексей

    Ответ ожидается по этому адресу

       Как использовать файл "programm.exe.manifest". У меня однажды получилось, интерфейс действительно стал в стиле ХР, но потом убрал ссылку на какую-то библиотеку и все пропало. Win XP начал выдавать ошибку в msvbm60.dll прияапуске приграммы. Удаляю .manifest - все работает, но интерфейс становится стандартным. Как это исправить?


    Автор вопроса: XAM

    Ответ ожидается по этому адресу

       Суть проблемы:
    есть база данных (mdb), в которой есть например 5 полей, первое из которых - время записи. Хочется просматривать значения полей в виде графиков. Использовал для этой цели MSChart, привязанный к Adodc. Данные отображаются сносно, но я не смог найти, как заставить MSChart отображать на оси времени не номера записей (R1...R5)а значения поля времени соответствующих записей. Кто знает, как это сделать не сильно выворобушкываясь? Или есть какой-нить более продвинутый контрол?


    Автор вопроса: ShAdE

    Ответ ожидается по этому адресу

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


    Автор вопроса: Ivan Salnikov

    Ответ ожидается по этому адресу

       Как можнл перехватить нажатие клавиши tab на каком нибудь контроле, keypress и keydown не работают. Может надо пользоваться какой-нибудь API-шной функцией, поскольку вроде Windows перехватывает упрвление на себя?




    Ответы:


    Вопрос:

       Подскажите как открыть Базу данных Microsoft Access 2000? С помощью Data1.databasename не получается, ругается что не подходящий формат!

    Ответ:

    Автор ответа: VMJ

    Используй DAO 3.6 - в ссылках редактора (примерно там где добавляются новые компоненты)
    А свой элемент дата запускай таким образом:

    dim mDb as database
    set mDb=opendatebase("Имя файла")
    set data1.recordset=mDb.openrecordset("Название таблицы или SQL-запрос", dbopendynaset) 'или Dbopentable, Dbopensnapshot....

    Будет работать как из пушки, но будут проблемы с подготовкой дистрибутива - стандартный паковщик "заточен" под DAO 3.5 и недостающие компонеты придется доставлять "ручками"...


    Вопрос:

       Суть проблемы:
    Создается файл *.mdb, в котором создается таблица (например на 5 полей), в которую затем пишутся real-time данные.
       Проблема в том, что из-за св-ва Required=true прога требует обязательного заполнения данными всех полей. А данные (иногда бывает) могут отсутствовать в некоторых полях.
       Каким образом и где в коде установить св-во Required в false?
       Или есть другой выход из положения?

    Ответ:

    Автор ответа: Александр Чернов

    При создании полей в Access-е 97 с пом. DBEngine по умолч. св-во Required = False. Если же ты польз-ся чем-то, что по умолч. ставит это св-во в Труе, то устанавливай св-во в лоб:

        Dim dbNew As Database
        Dim tdNew As TableDef
        Dim fldNew As Field
        
        Set dbNew = DBEngine.CreateDatabase("D:\db1", dbLangCyrillic)
        Set tdNew = dbNew.CreateTableDef("TempTable")
        
        Set fldNew = tdNew.CreateField("fld1", dbText, 20)
        fldNew.Required = False
        tdNew.Fields.Append fldNew
        
        Set fldNew = tdNew.CreateField("fld2", dbLong)
        fldNew.Required = False
        tdNew.Fields.Append fldNew
        
        Set fldNew = tdNew.CreateField("fld3", dbCurrency)
        fldNew.Required = False
        tdNew.Fields.Append fldNew
        
        Set fldNew = tdNew.CreateField("fld4", dbInteger)
        fldNew.Required = False
        tdNew.Fields.Append fldNew
        
        Set fldNew = tdNew.CreateField("fld5", dbBoolean)
        fldNew.Required = False
        tdNew.Fields.Append fldNew
        
        dbNew.TableDefs.Append tdNew
        
        dbNew.Close
        
        Set fldNew = Nothing
        Set tdNew = Nothing
        Set dbNew = Nothing

    А если тебе надо какое-то временное хранилище для real-time, то может воспользоваться чем-то попроще, напр. текстовым файлом с разделителями или dbf?


    Вопрос:

       Как перехватить сообщения Windows (все подряд MsgBox).
    А еще лучше определить строку, которая находится под мышкой, в любом приложении Win.
    Это вобще возможно?

    Для того, чтобы легче было понять проблему объясню на пальцах.
    Представьте лупу из специальных возможностей Windows.
    Висит она значит в углу, и отображает только текст, находящийся под мышкой (без графики).
    Или текст сообщения, выскочившего при ошибке, копировании, перемещении и т.д.

    На самом деле мне нужна не лупа, а нечто другое, поэтому не пишите как увеличить картинку. Мне нужен только текст.

    Ответ:

    Автор ответа: Лёха

    Если знать hWnd окна под курсором, то с помощью функции WindowTextFromWnd можно получить текст сообщения.



    Ответ:

    Автор ответа: shadow

    Как перехватывать системные сообщения - незнаю, а вот текст под курсором прочитать можно (вот тут кстати Артём Кривокрисенко и неправ :о) ): форма со свойством авторедрав = труе и таймером (интервал 200 - вполне достаточно)
    'кстати кто спрашивал про енумвиндовс - можно тут посмотреть в действии

    МОДУЛЬ:

    Option Explicit

    Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long,
    ByVal lParam As Long) As Long
    Public Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As
    Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
    Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA"
    (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal
    hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As
    Long


    Public Const WM_GETTEXT = &HD
    Public m_Count As Long
    Public m_TopLevel As Long
    Public m_Buffer As String
    Public m_Results As String

    Global hWndOver As Long
    Global hWndParent As Long
    Global hWndParentOld As Long

    Public Function SeeText(Results As String) As Long
        m_Count = 0
        m_Results = ""
        m_Buffer = Space$(1024)
        Call EnumWindows(AddressOf EnumMain, 0&)
        Results = m_Results
        SeeText = m_Count
    End Function

    Public Function EnumMain(ByVal hWnd As Long, ByVal lParam As Long) As Long
         m_TopLevel = hWndOver
        Call EnumChildWindows(hWndParentOld, AddressOf EnumChild, 0&)
    End Function

    Public Function EnumChild(ByVal hWnd As Long, ByVal lParam As Long) As Long
              SendMessage m_TopLevel, WM_GETTEXT, Len(m_Buffer), ByVal m_Buffer
              m_Results = m_Results & TrimNull(m_Buffer) & vbCrLf
              m_Count = m_Count + 1
    End Function

    Public Function TrimNull(ByVal StrIn As String) As String
        Dim nul As Long
        nul = InStr(StrIn, vbNullChar)
        Select Case nul
           Case Is > 1
              TrimNull = Left$(StrIn, nul - 1)
           Case 1
              TrimNull = ""
           Case 0
              TrimNull = Trim$(StrIn)
        End Select
    End Function

    '****

    ФОРМА:

    Option Explicit
    Private OldX As Single
    Private OldY As Single
    Private TpX As Integer ' TwipsPerPixelX
    Private HotX As Integer
    Private HotY As Integer
    Private Type POINTAPI
        X As Long
        Y As Long
    End Type
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As
    Long
    Private Declare Function WindowFromPointXY Lib "user32" Alias
    "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
    Private Declare Function GetParent Lib "user32" (ByVal hWnd As Long) As Long
    Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA"
    (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long

    Sub Timer1_Timer()
    Dim pt32 As POINTAPI
    Dim ptx As Long, pty As Long
    Static hWndLast As Long
    ' позиция курсора
         GetCursorPos pt32
         ptx = pt32.X
         pty = pt32.Y
         If ptx = HotX And pty = HotY Then Show
    ' окно под курсором
         hWndOver = WindowFromPointXY(ptx, pty)
    ' изменения
             hWndLast = hWndOver
             Cls

             hWndParent = GetParent(hWndOver)
             If hWndParent <> 0 Then
                 hWndParentOld = hWndParent
             Else
                 hWndParentOld = hWndOver
             End If

    1 hWndParent = GetParent(hWndParent)
             If hWndParent <> 0 Then
                 hWndParentOld = hWndParent
                 GoTo 1
             End If

             Dim msg As String
             If SeeText(msg) Then
             Else
                 msg = "Нет там текста"
             End If
             Print "Текст в подмышкином окне: " + msg
             Height = (Height - ScaleHeight) + CurrentY
    End Sub
    'їShadow

    '******
    вроде работает
    Если скажут как ловить системные сообщения - делись


    Вопрос:

       Простейшая ситуация, но не знаю как ее решить. Есть два ListBox, в первом и во втором содержится взаимосвязанная информация. Возникает ситуация когда количество строк в ListBox1 не вмещаются на экран, и для просмотра, тех что не "влезли" на экран приходится пользоваться полосой прокрутки. Можно ли сделать так что бы при использовании полосы прокрутки в ListBox1, информация в ListBox2, также поднималась (или опускалась) синхронно с информацией в ListBox1 ?

    Ответ:

    Автор ответа: Александр Чернов

    Используй событие Scroll первого списка:

    Private Sub List1_Scroll()
        List2.TopIndex = List1.TopIndex
    End Sub


    Вопрос:

       Как вывести " на экран с текстом

    Ответ:

    Автор ответа: Алексей

    CHR(34) или """"



    Ответ:

    Автор ответа: ViTal

    "Печатаем """ в тексте"

    или

    "Печатаем " & Chr(34) & " в тексте"


    Вопрос:

       При попытке подключить ActiveX компонент выскакивает ошибка:

    The file 'C:\WINDOWS\SYSTEM\VBDirect8.ocx' was not registerable as an ActiveX component (Файл 'C:\WINDOWS\SYSTEM\VBDirect8.ocx' не был registerable как ActiveX компонент)

    У меня Win98, DirectX 7.1. Может быть дело в DirectX? Что значит такая ошибка?

    Ответ:

    Автор ответа: Alexander

    "not registerable" = "не способен к регистрации", т.е. не соответствует стандартам, принятым для регистрации AcriveX. Причины этого могут быть разные, но это имя действительно не отвечает на стандартные вопросы при регистрации...


    Вопрос:

       Как считать параметры переданные программе в командной строке. Типа argc[] or argv[] in С#

    Ответ:

    Автор ответа: Алексей

    Если я правильно понял:
       запускаешь пргу так:

       EXENAME.exe qwerty

       а в form_load'e пишешь

       dim qwerty as string
       qwerty=command

       в итоге qwerty="qwerty"



    Ответ:

    Автор ответа: Артем Кривокрисенко

    Функция Command возвращает параметры коммандной строки.


    Вопрос:

       Подскажите, как и какие команды надо отправлять окну Winamp'а зная его hdc и прочее что бы останавливать или продолжать воспроизведение, менять уровень звука и другое?

    Ответ:

    Автор ответа: Алексей

    Я думаю, нужно искать каждую кнопку и посылать ей что-то типа Click



    Ответ:

    Автор ответа: Артем Кривокрисенко

    Зная hdc, ты можешь только рисовать на этом окне. Управлять им можно, зная его hwnd.


    Вопрос:

       Люди помогите "первоклашке"!
    Что значит работать с портами, или посылать данные на порт?
    Есть ли про это документация <ссылка>?
    Можно ли управлять эл/питанием на порту?
    К примеру у меня есть подключёный к COM`у провод от старой мышки.
    А на конце провода какое-нибудь устройство... например эл/моторчик... Можно ли подавать напрягу то +/-, то -/+ ? Как?

    Ответ:

    Автор ответа: Alexander

    1. Порт - это некоторое значение в адресном пространстве компьютера, выставляемое на какое-то мгновение, используя Out-команду процессора. Т.е. у команды Out мы должны задать значение адреса и значение (комбинацию нулей и единиц), которое должно быть выставлено по этому адресу.

    2. Порт связан "проводами" с некоторым устройством, которое должно "услышать" свою команду за короткое время (доли секунды) и отреагировать на неё, т.е. хотя бы запомнить переданную ему комбинацию нулей и единиц. А далее оно может поступать по своему усмотрению. Желательно также, чтобы оно известило подобным образом своего "заказчика", что оно хотя бы "расслышало" приказ. Поэтому, кроме программы, используют ещё и специальные микросхемы, важнейшим из элементов которых является понятие "регистра", способного "защёлкнуть", т.е. запомнить по команде значение, чтобы действовать дальше.
    3. Не всякая операционная система даст возможность напрямую "дострелить" до порта. В частности, Windows XP, Windows 2000, Windows NT и другие, которые вынуждены "бороться" за свое выживание. Возникает следующий термин "драйвер".

    4. Com-порт - тоже регистр и его возможности электропитания крайне малы: т.е. на наушник может хватить, а на запуск реле и не хватит. Т.е. этот регистр надо запомнить в регистре приёмника, а потом, "отсоединившись" от компьютера запустить, например, троллейбус в дорогу.

    Вот и всё. Т.е. по-хорошему для начала надо освоить понятия "регистр", "драйвер". А они потянут за собой и магистрали, и кольца защиты, и семафоры, и микроконтроллеры, и интерфейсы и массу других непонятных вещей :-)


    Вопрос:

       Как сделать, чтобы все буквы в тексте заменялись на какие-то другие буквы?
    Например: буквы а,б,в - заменялись на п,м,и.

    Ответ:

    Автор ответа: Артем Кривокрисенко

    strText=replace(strText,"а", "п")

    Все буквы "а" заменятся на "п"



    Ответ:

    Автор ответа: Лёха

    В VB есть такая функция Replace (строка в которой ищем,что ищем,на что
    заменить). Например:

    text1.text=Replace (text1.text,"а","п")



    Ответ:

    Автор ответа: Alexander

    Если при наборе текста, то обработкой событий KeyPress элемента формы, а если в уже имеющемся тексте, то, например, комбинацией InStr и Mid.


    Вопрос:

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

    Ответ:

    Автор ответа: Алексей

    Private Declare Function OSfCreateShellLink Lib "vb6stkit.dll" Alias "fCreateShellLink"
    (ByVal lpstrFolderName As String, ByVal lpstrLinkName As String, ByVal lpstrLinkPath
    As String, ByVal lpstrLinkArguments As String, ByVal fPrivate As Long, ByVal sParent As
    String) As Long
       
    Private Sub Form_Load()
    OSfCreateShellLink "C:\Win\Рабочий стол" & vbNullChar, "Блокнот", "C:\Win\Notepad.exe", "", True, ""
       
    End Sub


    Вопрос:

       Не могу раяобраться, в чем дело? Запутался в "трех соснах".
    Обычный SQL-яапрос:
    "Select Sum(Volume) from Fuel" - отрабатывается отлично.
    "Select Sum(Volume) from Fuel Where Year(Date) = nYear"
    выдается ошибка, что не хватает каких-то параметров. Причем, если яаменить переменную nYear на конкретное число, скажем, 2002, то все в порядке. (Volume и Date - поля таблицы Fuel). Подскажите пожалуйста, в чем может быть причина?

    Ответ:

    Автор ответа: Сергей

    А что такое nYear - переменная?

    "Select Sum(Volume) from Fuel Where Year(Date) = " & nYear



    Ответ:

    Автор ответа: dMedia

    Надо писать так:

    "Select Sum(Volume) from Fuel Where Year(Date) =" & nYear



    Ответ:

    Автор ответа: Chernov Dmitry

    Дело вообще-то в том, что обработчик SQL-запросов ничего не знает о переменных VB. Это другая программа. Он знает только имена полей таблицы из базы данных. А поля nYear там нету. Соответственно он и ругается...
    Поэтому пиши следующим образом:

    "Select Sum(Volume) from Fuel Where Year(Date) = " & nYear

    Если хечется узнать об этом более подробно, ищи документацию по SQL.



    Ответ:

    Автор ответа: Корик

    На мой взгляд тут одно из двух:

    1. Очень нежелательно использовать слово Date для названия поля в базе
    данных

    2. Если я правильно понял, то ты эти выражения используешь как string, а
    nYear - переменная с определённым годом. Тогда попробуй написать так:

    "Select Sum(Volume) from Fuel Where Year(Date) =" & nYear



    Ответ:

    Автор ответа: Грегер Сергей

    "Select Sum(Volume) from Fuel" - отрабатывается отлично.
    "Select Sum(Volume) from Fuel Where Year(Date) = nYear"
    Дел в том, что запрос -это строка, а nYear - переменная.
    Правильно будет так:
      "Select Sum(Volume) from Fuel Where Year(Date) ='" & CDATE(nYear) & "'"
    Общее правило - значения внутри запроса должны быть в одинарных кавычках.
    Данный пример годится в случае если nYear будет менятся.
      CDATE(nYear)- преобразование типа DATE в STRING. Из опыта советую не писать длинный строковый запрос а лепить его из несколких строк:

    SQLstr="Select Sum(Volume) from Fuel Where Year(Date) ='"
    fullSQL=SQLstr & CDATE(nYear) & "'"



    Ответ:

    Автор ответа: Dima

    скорее всего должно быть так:

    "Select Sum(Volume) from Fuel (Where (Year(Date) = " & nYear & "))"



    Ответ:

    Автор ответа: Damir Kh

    "Select Sum(Volume) from Fuel Where Year(Date) = #" & nYear & "#"




    Можете заполнить эту форму, либо отослать вопрос СЮДА

    Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта.
    Текст сообщения:
    Ваше имя
    E-mail для ответа

    наверх


    Выпуск подготовили:

    Сурменок Павел