Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

СообЧа (СООБщество ЧАйников). Обмен опытом, вопросы, ответы.


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Сообщество Чайников

Выпуск 31

FAQ от системы Эксперт.

Приложение.


Доброго дня всем нам!

В каждом ответе, присылаемом пользователю, предлагается после проверки правильности ответа подтвердить это пустым сообщением по ссылке. Такие сообщения регистрируются системой, и в зависимости от этих сообщений-подтверждений начисляются очки экспертам. Надо ли доказывать, что из двух правильных ответов пользователь подтвердит тот, который видится ему наиболее доброжелательным;-)?
Кроме того, подтвержденный ответ заносится в Базу Знаний сообщества, в раздел FAQ.
В этом выпуске приводятся те вопросы и ответы на них, которые были подтверждены пользователями, задающими вопрос.

Зарегистрировано экспертов 97
Задано вопросов в систему 367
Отправлено вопросов экспертам 682
Отправлено в группы 201
Получено ответов от экспертов 222
Получено ответов из групп 283
Лидер-эксперт по набранным очкам Fraggle, код 8, поинтов 6.

Темы выпуска:
 
  • VB60
  • Internet
  • BCB
  • C
  • Visual_C++
  • WEB_PROMO
  • Ссылки для вопросов.

  • VB60

    Как из VB "достучаться" до определённых полей таблицы, точнее указав таблицу, номер поля и номер записи взять значение?
    В моём понимании это должно быть похоже на : "X = ValueField(<Имя таблицы>, <Номер столбца>, <Номер записи>)"

    Это просто невозможно.
    Для доступа к записям базы данных необходимо использовать какие-либо
    компоненты доступа к данным.
    Раммотрим пример наиболее распространенный - ADO. (ActiveX Data Objects, поставляются вместе с Microsoft Visual Studio в частности)
    Итак
    Шаг 0. Объявляем переменные

    Dim Conn As ADODB.Conection
    Dim RS As ADODB.Recordset
    Dim Cmd As ADODB.Command
    Dim result

    Шаг 1. Создание соединения с базой данных

    Set Conn = New ADODB.Connection

    ' Предположим, у вас создан источник данных ODBC с именем MyDSN, именем
    пользователя aUser и паролем aPassword.
    ' Создать источник данных можно с помошью компоненты ODBC панели управления.
    Conn.ConnectionString="DSN=MyDSN;User=aUser;Password=aPassword"
    Conn.Open

    Шаг2. Чтение нужной записи из таблицы

    Set Cmd = New ADODB.Command
    Set Cmd.ActiveConnection = Conn
    Cmd.CommandText = "select * from MyTable where ID = " & Cstr(aID)

    Set RS=Conn.Execute()

    Шаг3. Чтение нужного значения

    result = RS.Fields("Имя_Поля").Value

    Шаг4. Чистим за собой
    RS.Close
    Set RS=Nothing
    Set Cmd = Nothing

    Conn.Close
    Set Conn = Nothing

    Короче, логика такая...


    Как получить i-тый элемент строки ?

    Если необходимо считать i-тый символ из строки, то необходимо пользоваться функцией MID$
    Вот выдержка из справки:
    Возвращает значение типа Variant (String), содержащее указанное число символов строки.

    Синтаксис

    Mid(string, start[, length])

    Синтаксис функции Mid содержит следующие именованные аргументы:

    Элемент Описание
    string Обязательный. Строковое выражение, из которого извлекаются символы. Если string имеет значение Null, возвращается значение Null.
    start Обязательный. Значение типа Long. Позиция символа в строке string, с которого начинается нужная подстрока. Если start больше числа символов в строке string, функция Mid возвращает пустую строку ("").
    length Необязательный. Значение типа Variant (Long). Число возвращаемых символов. Если этот аргумент опущен или превышает число символов, расположенных справа от позиции start, то возвращаются все символы от позиции start до конца строки.
    Дополнительные сведения

    Для определения числа символов в string следует использовать функцию Len.

    Примечание. Эквивалентной функцией обработки строк по байтам является функция MidB. В этом случае аргументы указывают число байт (а не символов).

    Пример
    В данном примере функция Mid используется для извлечения указанного числа символов из строки.

    Dim MyString, FirstWord, LastWord, MidWords
    MyString = "Пример функции Mid" ' Инициализирует строку.
    FirstWord = Mid(MyString, 1, 6) ' Возвращает "Пример".
    LastWord = Mid(MyString, 16, 3) ' Возвращает "Mid".
    MidWords = Mid(MyString, 8) ' Возвращает "функции Mid".

    От себя добавлю:
    Короче:
    Есть строка Y="Привет чувак!"
    Пронумеруем 1234567891111
    символы 0123
    Дабы считать отдельно каждый символ открываем цикл
    Dim P(Len(Y)) as String
    For i=1 to Len(Y)
    'Len(Y) - длина строки Y
    P(i)=Mid(Y,i,1) 'Считываем из строки Y символы с i-той позиции
    'длиной 1 (короче ОДИН символ считываем)
    'Если необходимо получить несколько символов (три
    'например, то необходимо написать так:
    'P(i)=Mid(Y,i,3)
    Debug.Print P(i)
    Next i
    Результатом будет P(1)="П"
    Р(2)="р"
    Р(3)="и"
    и т.д.
    Результатом Debug.Print Mid$(Y,8,6) будет "чувак!"


    Как используя Rnd и Randomize получить какую-то в цифру, допустим от
    одного до пяти? Объясните, пожалуйста про них(Rnd, Randomize) поподробнее: что делают, как их можно использовать...

    rnd(1) - получить следующее случайное число от 0 до 0.99999999
    rnd(0) - получить тоже самое случайное число от 0 до 0.99999999
    rnd(-1)- получить предыдущее случайное число от 0 до 0.99999999

    Соответственно:
    rnd(1) - получить НЕ целое случайное число от 0 до 0.99999999
    rnd(1)*5 - получить НЕ целое случайное число от 0 до 4.99999999
    rnd(1)*5+1 - получить НЕ целое случайное число от 1 до 5.99999999
    int(rnd(1)*5+1) - получить ЦЕЛОЕ случайное число от 1 до 5

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

    Randomize 1 - пропустить 1 число и начать со второго
    Randomize 2 - пропустить 2 числа и начать с третьего
    Randomize timer - пропустить столько чисел, сколько прошло секунд с
    полуночи. Если у Вас программа запускается не точно в одно и тоже время, то
    этой команды вполне достаточно для большинства приложений.

    Best regards,
    BSP


    Расскажите пожалуйста как правильно работать со строками. Например:
    находить в них что-либо, заменять, узнавать размер, вставлять что-либо...

    Для нахождения символов с в строке используется функция instr , у
    функции 4 параметра, первый - номер символа с которого начинать поиск,
    второй - строка в которой ищем, третий - строка, которую ищем,
    четвёртый способ поиска (см. MSDN), а возвращает функция номер
    символа, на котором первый раз встретилась искомая строка в данной.

    пример:

    Dim SearchString, SearchChar, MyPos
    SearchString ="XXpXXpXXPXXP" ' String to search in.
    SearchChar = "P" ' Search for "P".

    ' A textual comparison starting at position 4. Returns 6.
    MyPos = Instr(4, SearchString, SearchChar, 1)

    ' A binary comparison starting at position 1. Returns 9.
    MyPos = Instr(1, SearchString, SearchChar, 0)

    ' Comparison is binary by default (last argument is omitted).
    MyPos = Instr(SearchString, SearchChar) ' Returns 9.

    MyPos = Instr(1, SearchString, "W") ' Returns 0.


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

    есть также стэйтмент mid и с его помощью можно заменять символы в
    строке, например

    Dim MyString
    MyString = "The dog jumps" ' Initialize string.
    Mid(MyString, 5, 3) = "fox" ' MyString = "The fox jumps".
    Mid(MyString, 5) = "cow" ' MyString = "The cow jumps".
    Mid(MyString, 5) = "cow jumped over" ' MyString = "The cow jumpe".
    Mid(MyString, 5, 3) = "duck" ' MyString = "The duc jumpe".


    узнать длину строки может функция len , у неё, естественно,
    единственный аргумент - строка, длину которой надо найти.


    В этом письме я не могу показать всё множество приёмов, особенно с
    функцией и стэйтментом mid, а их, поверьте, множество, поэтому советую
    почитать об этом поподробнее.

    Arkadiy


    Можно ли из VB6 открыть другую программу? Как? Поясните на примере,
    плизз.

    dim rc as Long
    dim filepath as String
    filepath = "C:\Windows\Calc.exe"
    rc = Shell(filepath, vbNormalFocus)

    Best regards
    vh


    При записи в файл, если он не существует, он создается автоматически.
    После окончания записи файл необходимо закрыть.
    Если читать из файла, который не существует, возникает ошибка.

    Вопрос: Нужно ли закрывать несуществующий файл после окончания чтения?
    Если мыслить логически, то не нужно, потому как он еще не открывался. Но как правильно?

    Привет !
    Несколько непонятен вопрос. Если читать из несуществующего файла возникает ошибка, Вы сами это сказали и так оно и есть.
    Вы спрашиваете:
    >Нужно ли закрывать несуществующий файл после окончания чтения?
    ~~~~~~~
    И сами же на него отвечаете. Т.е. при чтении несуществующего файла
    возникнет ошибка. Таким образом Вам необходимо сделать обход данного
    участка кода чтения, если файл не существует. При этом отпадет
    необходимость закрывать несуществующий файл.
    С уважением, Евгений


    Kak ustanoviti vremea 4erez kotoroe Spals screen doljen ubiratsea s ecrana???

    Простейший вариант как задержать Splash Screen

    Sub Main()
    frmSplash.Show

    frmSplash.Refresh

    frmMain.Show

    'между этих строк вставь какую-нибудь задержку
    'либо вертушку
    'либо Sleep

    Unload frmSplash

    End Sub

    По другому никак нельзя!

    AlexV


    Каким образом из VB можно работать с консолью. Есть ли стандартные способы или же надо (и будет ли это эффективнее) создавать форму, которая эмулирует консоль?

    Нет, в VB способов работать с консолью нет. Если вы хотите всё-же там
    поработать, то

    1) путём эмулирования формы придётся заново переписывать MS-DOS. Это не так уж и просто.

    2) Создать консольное приложение с помощью Windows API.

    BSP


    К оглавлению.


    Internet

    Сайты про Дельфи???

    www.delphi.ru
    www.delphiland.ru
    www.citforum.ru
    www.rusdoc.ru


    Я пользуюсь программой Outlook Express 5.0 для чтения сообщений из групп новостей ( то есть, как newsreader ). Но приходящие сообщения приблизительно через месяц исчезают. Как сделать так, чтобы они оставались у меня произвольное время?
    Система - Windows 98 SE.

    Никак. Это особенность аутлука. Он _синхронизирует_ все сообщения с
    новостным сервером. Если на сервере удалено, то удаляет и у себя.
    Исправлению не подлежит (сам в своё время с этим промучался).


    Как записывать информацию передаваемую в формате Real Audio c интернета?

    ***********************************************
    Можно сделать так : установить менеджер закачки файлов (FlashGate, Download Accelerator, etc.), который перехватывает клик на имени ресурса (для Real Audio - расширение AU), и закачивать вручную.
    Кстати, эти проги закачивают файлы довольно быстро благодаря многопотоковой закачке.
    ***********************************************

    Не получается. Только 60 или чуть больше байт загружается, т.е. само
    название файла, и ВСЁ.

    При проигрывании музыки включить музыкальный редактор на запись. Вам там, надеюсь, не 2 часа нужно писать?

    BSP


    Где можно достать прогу, которая бы перекодировала музыкальные файлы с расширением .cda в .mp3 или .wav?

    Вам нужны две программы:

    1) Первая считывает информацию с лазерного диска (cda) и записывает в WAV

    2) Вторая кодирует WAV в MP3

    Лично я пользуюсь Audio Catalist, т.к. это "два в одном" - она и записывает
    с компакт-диска, и сразу кодирует в MP3.

    BSP


    Не подскажете несколько адресов в Сети, где можно найти MP3-архивы?

    www.crack.ru
    это не архив, а поисковая система (не только по mp3), но при выводе
    результатов поиска, она как раз выдает ссылки на архивы mp3-файлов (так
    как ищет по ним).

    Best regards,
    vh


    Где можно скачать пакет Mаcromedia Flash для разработки веб-презентаций? Друг ищет эту программу, но...
    И еще,- где могут помочь раскрутить сайт?

    Скачать Macromedia Flash можно здесь:
    http://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=flash4
    Если ссылка не сработает, то зайдите на главную страницу и поищите
    Download - Flash 4 (не знаю, может уже 5-ый есть).

    Бесплатно раскрутить сайт? Вопрос интересный. Обычно предлагается
    вариант того, что Вы устанавливаете у себя баннер какого-то популярного
    ресурса, а взамен на этом ресурсе устанавливают Ваш баннер. Но есть
    и другие варианты (долго перечислять).
    Попробуйте заглянуть на http://protoplex.al.ru/ , там есть что-то по раскрутке сайта.

    Андрей Р. Сирвутис


    К оглавлению.


    BCB

    У мя вопросы по Builder-у 5.0
    Как на фон формы поставить картинку (не через Image), а если только
    через Image то как в Label сделать прозрачный фон?
    И второй как в Edit ограничить кол-во вводимых символов определенным
    количеством?

    Сам я BCB 4 пользую (мне и заказчикам выше крыши хватает), но думаю
    в BCB 5 все нижеописанное будет работать.

    1. Поместить рисунок на форму можно разными способами, но предпочтительно это делать именно через TImage. А чтобы фон был прозрачный (у Label) нужно выставить свойство Transparent = true у этого Label.

    2. Ограничить число вводимых в TEdit символов можно изменив его
    свойство MaxLength. Если если оно = 0, то ограничения ввода не будет. Иначе - ясно из названия.
    Игорь


    К оглавлению.


    C

    Скажите пожалуйста, чем отличается С и С++. И можно ли как-то на СИ
    сделать, чтоб при каждом запуске он проверял создан ли конкретный
    файл, если нет, то создавал, и добавлял в его конец какую нибудь
    строчку?
    Ты можешь открыть файл для добавления fopen( FileName,"w+"); в случае если файла не было, он создается, а если был , то открыт для записи в конец файла.

    Носяра


    К оглавлению.


    Visual_C++

    Привет, эксперт.

    Скажи, а как я могу динамически изменить переключатель "Disabled"
    у статического текста?

    Если я правильно понял вопрос, тебе требуется изменять состояние
    статического текста (disabled/enabled) во время выполнения программы.

    Для этой цели используется функция ::EnableWindow (или CWnd::EnableWindow в MFC), которая работат как для статических элементов, так и для любых других типов окон. Единственное важное замечание: по умолчанию статическому элементу присваивается
    идентификатор IDC_STATIC, который равен -1. Этот идентификатор не годится для работы со статическим элементом, и его необходимо заменить на любой другой.

    Допустим, ты назначил своему тексту идентификатор IDC_STATIC_TEXT. Тогда используй

    ::EnableWindow(::GetDlgItem(hParentWnd, IDC_STATIC_TEXT), FALSE);

    чтобы "задизаблить" текст и

    ::EnableWindow(::GetDlgItem(hParentWnd, IDC_STATIC_TEXT), TRUE);

    чтобы "раздизаблить" его (hParentWnd - дескриптор окна, в котором размещён текст).

    Если ты пишешь под MFC, того же эффекта можно добиться, используя в одном из методов класса окна, содержащего текст, вызовы:

    GetDlgItem(IDC_TXT)->EnableWindow(FALSE);
    GetDlgItem(IDC_TXT)->EnableWindow(TRUE);

    Можно также связать со статическим окном переменную типа CStatic - тогда
    вызов GetDlgItem не потребуется.

    За дополнительной информацией можно обратиться к MSDN. См. EnableWindow, CWnd::EnableWIndow, GetDlgItem, CWnd::GetDlgItem, а также статью Q108896 из базы знаний, в которой описывается решение твоей проблемы.

    Александр


    К оглавлению.


    WEB_PROMO

    ГДЕ можно раскрутить свой сайт???

    Однозначно - в проекте СообЧА!
    В К


    Так где же можно раскрутить свой ресурс, или лучше набрать людей для совместного содержания сайта и ведения рассылки??

    Прежде всего хочу порекомендовать один сайт, который некоторым образом связан с раскруткой сайтов - www.promo.ru Он много шире, чем о простой раскрутке, но материалы интересные Вы там найдете.
    Как раскручивать?
    Некоторые позиции, которые могут быть полезны:
    1). зарегистрируйтесь в поисковых системах(русских непременно,
    англоязычных и др. - по желанию);
    2). получите счетчик Рамблер, Спайлог, Лист. Попытайтесь как можно
    точнее и привлекательнее написать о своем сайте, когда будете
    регистрироваться;
    3). найдите места в Сети, где обитают Ваши потенциальные посетители.
    Если у Вас сайт, посвященный примочкам Виндоуз, то не стоит лезть в
    ньюс-группу линуксоидов, но очень даже уместно будет написать в
    подходящую конференцию анонс своего сайта. Попытайтесь представить
    себя на месте получившего Ваше письмо. Вам бы это понадобилось, если
    бы Вы находились в данной конференции? Главное, не перейдите тонкую
    грань между спамом и анонсом сайта.

    4). Оффлайновый метод раскрутки. Учитесь? Развесьте объявления о своем
    сайте вокруг места учебы. Работаете? Примерно то же самое. Нашли место, где собираются в реале люди, которым Ваша информация была бы
    интересной? Рекламируйте свой сайт там.

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


    К оглавлению.


    Ссылки для вопросов

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

    mailto:adpecok@mailru.com?Subject=C++ - Язык программирования C++
    mailto:adpecok@mailru.com?Subject=Parus - Система бухучета
    mailto:adpecok@mailru.com?Subject=Delphi - Язык программирования Delphi
    mailto:adpecok@mailru.com?Subject=Oracle - Язык программирования
    mailto:adpecok@mailru.com?Subject=BCB - Borland C++ Builder - среда программирования
    mailto:adpecok@mailru.com?Subject=Win32_API - Windows API
    mailto:adpecok@mailru.com?Subject=VB30 - Язык программирования Visual Basic 3.0
    mailto:adpecok@mailru.com?Subject=VB40 - Язык программирования Visual Basic 4.0
    mailto:adpecok@mailru.com?Subject=VB50 - Язык программирования Visual Basic 5.0
    mailto:adpecok@mailru.com?Subject=VB60 - Язык программирования Visual Basic 6.0
    mailto:adpecok@mailru.com?Subject=Win311 - Windows 3.11
    mailto:adpecok@mailru.com?Subject=Win95 - Windows 95
    mailto:adpecok@mailru.com?Subject=Win98 - Windows 98
    mailto:adpecok@mailru.com?Subject=Clipper - Язык программирования
    mailto:adpecok@mailru.com?Subject=C - Язык программирования C
    mailto:adpecok@mailru.com?Subject=Visual_C++ - Язык программирования
    mailto:adpecok@mailru.com?Subject=MS_Office - Microsoft Office
    mailto:adpecok@mailru.com?Subject=Internet - Ресурсы Интернет
    mailto:adpecok@mailru.com?Subject=Hard - Железо
    mailto:adpecok@mailru.com?Subject=Access - Microsoft Access
    mailto:adpecok@mailru.com?Subject=BD - Базы данных
    mailto:adpecok@mailru.com?Subject=SQL - Язык манипуляции данных
    mailto:adpecok@mailru.com?Subject=Pascal - Язык программирования
    mailto:adpecok@mailru.com?Subject=Prog - Общие вопросы программирования
    mailto:adpecok@mailru.com?Subject=WinNT - Windows NT
    mailto:adpecok@mailru.com?Subject=HTML - Создание страниц
    mailto:adpecok@mailru.com?Subject=Linux -
    mailto:adpecok@mailru.com?Subject=PhotoShop - Графический пакет
    mailto:adpecok@mailru.com?Subject=CorelDraw - Графический пакет
    mailto:adpecok@mailru.com?Subject=PageMaker - Издательство
    mailto:adpecok@mailru.com?Subject=TheBat - Почтовая программа
    mailto:adpecok@mailru.com?Subject=Hard_Disk - Жесткие диски
    mailto:adpecok@mailru.com?Subject=MB - Материнские платы
    mailto:adpecok@mailru.com?Subject=CDROM - Привод CD
    mailto:adpecok@mailru.com?Subject=ASSM_8086 -
    mailto:adpecok@mailru.com?Subject=ASSM_8051 -
    mailto:adpecok@mailru.com?Subject=DOS - Операционные системы PC-DOS и MS-DOS
    mailto:adpecok@mailru.com?Subject=FLASH - пакет Mаcromedia Flash для разработки веб-презентаций
    mailto:adpecok@mailru.com?Subject=CSS - каскадные листы стилей (Cascade Style Sheets)
    mailto:adpecok@mailru.com?Subject=WEB_DESIGN - общие вопросы по веб-дизайну
    mailto:adpecok@mailru.com?Subject=WEB_PROMO - вопросы по веб-маркетингу, продвижению веб-ресурсов
    mailto:adpecok@mailru.com?Subject=PIC_ASM - программирование под процессоры фирмы Microchip
    mailto:adpecok@mailru.com?Subject=VRML - вопросы по технологии VRML (создания Virtual Reality)
    mailto:adpecok@mailru.com?Subject=3D_GRAPH - 3D - графика
    mailto:adpecok@mailru.com?Subject=PGP - Защита информации, цифровая подпись
    mailto:adpecok@mailru.com?Subject=QuarkXpres - Издательство
    mailto:adpecok@mailru.com?Subject=Scan - Оборудование для сканирования


    Для регистрации в качестве эксперта необходимо получить шаблон для регистрации, отправив пустое сообщение по ссылке:
    mailto:adpecok@mailru.com?Subject=Expert_Help

    К оглавлению.


    Удачи всем нам!

    Администратор системы экспертной помощи СообЧа.



    http://subscribe.ru/
    E-mail: ask@subscribe.ru
    Поиск

    В избранное