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

Visual Basic для новичков и профессионалов


Информационный Канал Subscribe.Ru

Visual Basic для новичков и профессионалов # 41
Выпуск от 2005-09-04 15:03:06 - Архив Рассылки

 

Сегодня в выпуске:
>
Новости сайта
>
Вопросы и ответы
>
Курс обучения для начинающих
>
Компоненты, контролы, исходники
>
Статья выпуска
>
Наши партнеры
Бред автора

Здравствуйте уважаемые подписчики!

Стремительно прошла неделя (даже почти две недели), работа выматывает полностью, а новые выпуски рассылки ждут своего дня! Вот и очередной выпуск рассылки. На днях один из подписчиков рассылки предложил мне корректировать поступающие вопросы. Действительно, господа, получаемые мной вопросы, оставляют желать лучшего. Никакой грамматики практически в каждом третьем письме. В некоторых письмах вообще отсутствует смысл вопроса. Это не дело! Раз уж мы задаем вопрос, то давайте будет учиться его задавать. ВВОДИМ НОВОЕ ПРАВИЛО! Я пойду на уступки подписчиков и буду по возможности корректировать вопросы, а также некоторые доводить до ума. Но все-таки есть такие вопросы, которые вообще не имеют смысла. Такие вопросы будут доводиться до ума уже самими отправителями вопроса. Если вопрос непонятен, автор, т.е. Я, отправляет заявку отправителю вопроса, чтобы он внес коррекцию в свой вопрос.

Еще один аспект в рассылке. Недавно один из моих подписчиков выразил небольшое недовольство, что выпуски стали очень объемные и прокручивать их неудобно. Действительно, даже я, составляя выпуск, мучаюсь с прокруткой выпуска. Небольшая коррекция шаблона ответов была произведена мной на этой неделе. Теперь Вам не придется крутить скроллом мыши по 10 минут подряд, все приложения к ответу будут помещены в текстовое поле, которое достаточно удобней.

Также в шаблон рассылки добавлена новая функция: Оценка ответа на вопрос. Пока все это обдумывается, но думаю, что в скором времени это все реализуется.

В прошлом выпуске был пропущен вопрос № 136 (следом за 135 идет 137). Такого допустить мы не может, поэтому сегодняшние новые вопросы будут содержать вопрос под номером 136.

Плюс еще одно добавление для участников рассылки. Как известно, любой желающий читатель рассылки может прислать статью. Это приветствуется автором рассылки, а теперь и вознаграждается !!! За каждую присланную статью, участник получает 10 баллов. Это самая максимальная "расценка" рассылки. Но учтите, на каждый выпуск Вы можете прислать не более одной статьи! Если Вы присылаете больше одной статьи, остальные отсеиваются и не публикуются! Не злоупотребляйте данной возможностью! Если за период формирования рассылки было прислано несколько статей от разных авторов, автор рассылки вправе выбрать самую удачную НА ЕГО ВЗГЛЯД статью и опубликовать. Прошу без обид и разочарований. Остальные статьи будут размещены на нашем сайте http://visualbasic.noka.ru, ссылки на эти статьи будут размещены непосредственно в рассылке.


Правила рассылки
1. Вопросы, касающиеся другой сферы программирования, а также сферы ПО - НЕ ПРИНИМАЮТСЯ!
2. Письма с указанием ссылок на какой-либо ресурс или сайт будут отвергнуты, либо ссылкы будут заменены на <РЕКЛАМА> и не будут опубликованы в рассылке!
3. Используйте текстовый (не HTML) формат писем при написании вопроса или ответа.
4. ПИСЬМА С СОДЕРЖАНИЕМ ТИПА "ПИШИ СЮДА, Я ТЕБЕ ВЫШЛЮ ИСХОДНИК", ЛИБО "НАПИШИ МНЕ, Я ТЕБЕ ОБЪЯСНЮ" БОЛЬШЕ НЕ ПУБЛИКУЮТСЯ! ЕСЛИ ВЫ ХОТИТЕ ПОДЕЛИТЬСЯ ФАЙЛОМ, ПРИСЫЛАЙТЕ ЕГО АВТОРУ РАССЫЛКИ. ЭТО ВАМ НЕ ФОРУМ И НЕ СЛУЖБА СООБЩЕНИЙ МЕЖДУ ПОДПИСЧИКАМИ!
5. Если Вы присылаете некорректные вопросы, они будут рассмотрены автором и откорректированы. Вопросы, смысл которых будет не понятен, либо не найден, будут перезапрошены у отправителя вопроса.
Новости сайта www.basic.webhost.ru

Сайт был в очередной раз обновлен. На сайте выложено еще 8 новых исходников. В скорем времени ожидается улучшение странички исходников, а также появление новых исходников!

ФОРУМ! Дорогие мои! На сайте есть прекрасный форум, где Вы сможете общаться с другими участниками нашей рассылки, а их у нашей рассылки 3199 (1862 + 1337)!

Темы ФОРУМА:

Visual Basic / Basic не в пачёте?
FAQ Visual Basic / Моя первая программа
FAQ Visual Basic / Установка системных настроек принтера
FAQ Visual Basic / Последняя версия VB
Все об ActiveX / MS Agent's
FAQ Basic / Шифрование данных
Предложения и пожелания / Комментарии к статьям
Вопросы и ответы

Наши лидеры:

Место
Имя (ник)
Счет
1
Игорь (+)
142
2
*Casper* (-)
86
3
Андрей (=)
64
4
Stormbringer (=)
57
5
Bullet [PCLO] (=)
40
6
Bourn None (=)
38
7
HouseBugs (=)
37
8
AGavrilov (=)
28
9
Андрей (now@)
24
10
Вячеслав (=)
21


(+) - на место выше, (-) - на место ниже, (=) - прежнее место, (New!) - впервые в таблице.

Всего участников: 76
Общее число баллов: 942
Максимальный счет: 142
Минимальный счет: 0

Новые вопросы


136/ Здравствуйте!
У меня возникла проблема: для создания страниц сайта специфической тематики (математика) требуется программа, способная сохранять введенные пользователем в объект Equation данные в формате gif или png [как это делает MS Word, при сохранении документа в html формате. Т.е. технологический процесс такой: введение формул в Ворде, сохранение в html -> получение рисунков -> верстка страницы].
Сохранять данные в виде рисунка не проблема, но размер у них не такой какой необходим. Это и есть проблема: как сделать так, чтобы OLE объект со вставленным Equation'ом, изменял свои размеры в соответствии с изменениями размеров Equation'а (как это реализовано в MS Word)
[Ответить]
143/ Вот какая проблема:
Задавал я вам один вопрос, об отображении немецких символов...но он не совсем корректный.
У меня находятся на форме datagrid и label.Проблема в том что в самой таблице символы
отображаются и если ввести их в label.caption они тоже отображаются,но если написать так:

datagrid1.Col = 1
datagrid1.Row = 1
Label1.Caption = datagrid1.text

то символы изменяются (например с a на а ).Подскажите пожалуйста что можно сделать чтобы исправить ето?
[Ответить]
144/ Подскажите: есть MySQL база, в ней есть какбы ячейки с номером,
например 84538834 или 444449329232, эти ячейки содержат информацию -
числа например 100 332 или 50.
Как можно средствами VB сделать программу которая искала бы в
этой базе значения этих ячеек равные нулю и удаляла бы их, и самое
главное нужен отчет о номерах удалённых ячеек, т.е. сколько чего
удалено из базы.
[Ответить]
145/ Есть база данных MySQL, нужно добавить в эту базу пин коды, например
3424242432 или 77773377238, а также их значения, например 100 200 или
20. Но, если в базе уже имеется этот номер, то добавление не
происходит (замена), как это сделать кто-нибудь знает?
[Ответить]
146/ Не подскажете ли вы, как получить список вложенных папок в одной! [Ответить]
147/ Здравствуйте. А можно ли при использовании ActiveX-компонента
"WebBrowser"
отсылать поддельный HTTP-REFFER?
[Ответить]
148/ Скажите пожалуйста, как сделать массив типа Variant (или String)
видимым на всю программу? Заранее благодарен.
[Ответить]
149/ Здравствуйте уважаемые программисты. У меня к вам такой вопрос. Я сделал
себе программу дозвона до Интернет с подсчетом времени работы в сети,
используя для этой цели стандартный объект "Таймер". Но, как выяснилось
позже, таймер, поставляемый с Visual Basic работает неправильно. А именно,
с каждой минутой он задерживается приблизительно на 1,5-2 секунды,
следовательно после 2-х минут работы - это уже 3-4 секунды, а после 10-ти
...(!!!). Я уже не буду говорить как наломала меня моя программа после 6-ти
часов работы. Время, которое отображалось на странице моей статистики у
моего провайдера ничуть не было похоже на время, отображаемое моей
программой...
Я проделал следующий опыт: Создал проект, добавил в него таймер и вставил
следующий код:

Option Explicit
Dim i As Integer

Private Sub Form_Load()
Timer1.Interval = 1000
Timer1.Enabled = True
i = 0
End Sub

Private Sub Timer1_Timer()
i = i + 1
Me.Caption = i
End Sub

Проследите сами, совпадает ли время таймера с реальным. Для проверки я
использовал несколько бытовых секундомеров. Может такая проблема только у
меня? Если нет, то как можно исправить эту проблему? А больше всего,
хотелось бы узнать, можно ли обойти этот таймер от Microsoft каким-либо
другим способом? Заранее благодарен всем советчикам, подключившимся к моему
вопросу.
[Ответить]


Вопросы, ответы на которые не были получены

40/ Здраствуйте ! У меня к вам будет один вопрос. Можно ли на ВБ (у меня установлена 6-я версия программы) сделать поиск подключенных компьютеров по локальной сети.Мне нужно узнать их ай-пи адрес и желательно имя компьютера. Я начинающий программист, если можно, обьясните более подробно. Заранее спасибо [Ответить]
63/ Здравствуйте! Как сделать столбец для таблицы с помощью VB который будет показывать номера кварталов с min зарплатой(в таблице 4 квартала). Другой столбец - Динамика изменения средней зарплаты по кварталам (рост, падение, колебание, постоянно)\ нужно найти среднее знаение среди записей каждого отдела и чтобы написал динамику изменени, то что напискано в скобках, одно слово. [Ответить]
67/ Здравствуйте! У меня к Вам два вопроса по VBA. 1. Мне часто приходится выполнять расчеты в Excel по формулам. Каким образом можно организовать вычисление в цикле так, чтобы после каждого следующего обращения формулы к ячейке X ее содержимое изменялось бы с определенным шагом? 2. При поиске в таблице базы данных какого-либо значения я пользуюсь формулами "ВПР" или "ГПР". Как можно сделать, чтобы при нахождении приближенного значения функция возвращала наименьшее из наибольших значений в строке или столбце списка, а не наибольшее из наименьших, как заложено в формулах? Заранее благодарю. Александр. [Ответить]
76/ podskazhite pozhalusta, kak pravil'nee pristupit' k sozdaniu tablic i kakogo roda tablica nujna dlya vvoda, obrabotki i rascheta dannix, na VB.net. mne bazu sozdavat' ne nado. Zaranee spasibo [Ответить]
88/ Здравствуйте. У меня такой вопрос: можно ли из VB послать команду так, чтобы включилась удалённая машина в сети, на которой включен WakeUp on LAN. Если да, то как? За ранее спасибо за оказанную помощь! [Ответить]
99/ Здравствуйте. Создается регистратор переговоров. Подскажите, пожалуйста, каким образом записать звук в файл, чтобы в дальнейшем можно было открыть его и прослушать? Заранее спасибо. [Ответить]
100/ Здравствуйте. Меня интересует протокол ZModem или подобный. Спасибо [Ответить]
111/ У меня к компу подключен принтер который в сети сделан общедоступным, можно ли сделать такое, чтобы если кто-то с другого компьютера послал что-нибудь ко мне на печать, то это застопорилось, а то я шнур принтера от компьютера включаю то в лазерный принтер, то в матричный (взависимости от того, что надо печатать), а в винде он у меня установлен как лазерный. А если мне пошлют на печать документ, когда у меня
матричный подключен ??? знаете какая кака-бяка получается...

Заранее благодарен Евгений
[Ответить]
115/ Как при работе в сети при разрыве связи можно узнать, что связь разорвана
удаленным сервером или локальной программой (ошибка 600)?
[Ответить]
117/ Как сделать чтобы при выборе шрифта с помощью Microsoft CommonDialog менялся
и набор символов (Кириллица, Западноевропейский и т.п.)? Спасибо.
[Ответить]
119/ Привет всем программистам! Недавно, читая статью об оптимизации приложений,
я столкнулся со следующим вопросом. Для того, чтобы вы меня правильно
поняли, цитирую часть статьи: "...Если вы создали большое приложение,
подумайте о том, как разбить его на более мелкие. Используйте только одну
главную исполняемую программу, которая вызывает другие программы, а также
DDE-технологию для осуществления связей. Когда вы открываете неглавное
приложение, откройте DDE-связь с главным приложением...". Так вот, может ли
кто-нибудь кратко рассказать об DDE-технологии? Я об этом имею лишь общее
понятие. Если можно, то объясните на примере. Заранее благодарю. С
уважением, Алексей.
[Ответить]
122/ Как сделать чтобы при нажатии на объект ListView НЕ воспроизводился тот
идиотский звук, который воспроизводится?
[Ответить]
125/ Здравствуйте.
Скажите пожалуйста, что такое списки управления доступом (Access Control Lists - используется в функции GetVolumeInformation)
[Ответить]
126/ Как можно прочитать данные с COM порта? [Ответить]
129/ Проблема то в том, что с оборотом нужно напечатать на сетевом принтере не
все листы, а только последний, на обороте которого печатается так называемый
"расчет рассылки", в котором указывается, сколько отпечатано экземпляров,
кто исполнял документ, кто печатал, дата печати документа и т.п. (выпускные
данные) это такое правило делопроизводства. Для этого в конце документа
вставляется разрыв страницы и на новой странице набирается или генериться
расчет рассылки. Сетевой принтер с двухсторонней печатью первые n-2 листа
выкидывает в выходной лоток, а предпоследний кладет в лоток оборотной
печати, затем его оттуда забирает и прогоняет его еще раз через блок печати,
но печатает его уже с оборотной стороны, так как лист прошел через лоток
оборотной печати. Если б я знал, как из свойств документа изъять количество
листов, то как-нибудь решил бы задачку сам и мои девушки не мучались бы с
этой проблемой.

Вопрос:

предполагаю, как можно решить, но не знаю, как реализовать. Исходные данные.

Есть сетевой принтер с возможностью двухсторонней печати. Пользователи
работают с MS Word. На печать посылаются задания из n листов. При этом листы
с 1 по n-2 должны быть напечатаны с одной стороны. Лист n-1 является
последним листом документа, а лист n оборотной стороной листа n-1.

Предполагаемое решение. По нажатию кнопки "Печать1" из переменной
"Количество листов в документе" извлекается значение и присваивается
переменной n. Если n<<2 выводится на экран сообщение "Печать с оборотом
невозможна" и производится выход из программы, если n>>2 вызывается на
исполнение функция печати, которой в параметрах передается:

1) Печатать листы с 1 по n-2;
2) Печатать без оборота.
Вызывается на исполнение функция печати, которой в параметрах передается:
1) Печатать листы n-1, n;
2) Печатать с оборотом.

При этом желательно сделать так, чтобы между вызовами функций печати в
очередь печати не проскочило какое-нибудь задание. Естественно, все это
оформить в виде макроса. Прошу Вас помочь мне>.



На Си++ получилось что-то вроде этого:

void Print1 (void) /* Эта функция связана с кнопкой "Печать1" */
{
int n; /* количество листов в документе */
n = (Извлекаем количество листов);
if (n < 2)
{
cout << "Печать с оборотом невозможна";
/* Можно вызвать функцию Worda для односторонней печати, если n >> 0 */
if (n > 0) PrintWorda (int 1, int 1, int 0);
}
if (n > 2) PrintWorda (int 1, int n-2, int 0); /* Печать без оборота */
PrintWorda (int n-1, int n, int 1); /* Печать с оборотом, в том числе для n
== 2 */
}
[Ответить]

130/ Доброго времени суток, User`ы. Подскажите пожалуйсто, как в VB 6.0 к какому-либо устройству в порте COM по определённому адресу? Благодарю за внимание и за ответ. Спасибо. [Ответить]
132/ Добрый день! На вопрос "Как узнать программно(есть ли стандартные функции или нестандартные): -уровень заряда батарее в ноутбуке; -температуру жесткого диска; -температуру процессора; -скорости вентиляторов. Заранее благодарен!" я что-то не получил ответь
Тожностью как можно на text1.text = "температура"
[Ответить]
Полученные ответы

62/Здравствуйте уважаемые программисты. Подскажите принцип работы с объектом phone. Вопрос жизни и смерти. [Ответить]

Отвечает: Игорь
Да, действительно, Вам прошлый раз ответили, что в Нете примеров работы с
Phone просто завались, но мы не для того подписались на эту подписку, чтобы
искать в Нете то, о чем спрашиваем. Поэтому высылаю Вам <небольшой>
примерчик. Если Автор рассылки посчитает, что его размер слишком велик, то
прикрепляю его ваиант в текстовом формате отдельно и конечно же - проектик:

Создайте новый проект. Назовите его как Вам угодно, но желательно, чтобы он
отображал суть, например <MyPhone>. Подключите к проекту компонент Microsoft
Windows Common Controls 6.0 (Меню Проект/Компоненты: (MSCOMCTL.OCX)).
Измените название главной формы проекта (<Form1>) на <frmDial>. Добавьте в
проект следующие компоненты, оставив все их имена по умолчанию: 1 ComboBox,
3 TextBox, 1 CheckBox, 2 OptionButton, 2 CommandButton, 3 Label, 1
StatusBar, 1 Image и 1 Timer. Для ComboBox в свойстве <Style> желательно
установить значение <2-Dropdoun List>. Затем просто вставьте в код модуля
формы и в код модуля нижеприведенные коды.
Для полной работы Вам пригодятся коды для работы с RAS, а также с реестром
Windows. Необходимые для работы в данной программе функции прилагаются в
коде модуля.
Для полноты действия даного примера поместите в папку с проектом 3 звуковых
файла с названиями <CONNECT.WAV>, <DISCONNECT.WAV> и <START.WAV> (Хотя это
не обязательно:).

Приложение к ответу (исходный код):

Скачать прикрепленный файл >>>
Оценка за ответ: 5

80/Как прописать на кнопку запуск Microsoft Query? [Ответить]

Отвечает: EnzO)Stalker
Если я правильно понял, то все как всегда просто:

Создаешь форму, на ней размещаешь кнопку Command1. Дальше пишешь:

Private Sub Command1_Click()

Dim dTaskID As Double
dTaskID = Shell("c:\Programm Files\MS Query.exe")

End Sub

Оценка за ответ: 4

91/Как записать данные из Excel-таблицы в DBF-файл? [Ответить]

Отвечает: Oleg K.
Сама процедура записи проста и сводится всего к одной инструкции:

Приложение к ответу (исходный код):


Оценка за ответ: 5

98/Здравствуйте. Пишу программу автоматического обзвона абонентов АТС по модему. Вопрос: как программно отследить момент снятия телефонной трубки и "проиграть" звуковой файл? Заранее спасибо [Ответить]

Отвечает: Игорь
1) Если Вы пользуетесь для дозвона MSComm 6.0, то, возможно, Вам будет
полезна функция:

Приложение к ответу (исходный код):


Оценка за ответ: 5

113/Я работаю над закачкой группы файлов с ftp через winsock. Подскажите как определить закачался файл полностью или нет? [Ответить]

Отвечает: Игорь
А разве у WinSock нет события DataArrival?

Приложение к ответу (исходный код):


Оценка за ответ: 5

124/Помогите пожалуйста,
1. как через ADO программно подключиться к базе данных dbase III и Visual FoxPro
2. как скоприовать данные из базы dbase III в базу данных Visual FoxPro,
структуры этих баз одинаковые, т.е. из s_052005.dbf в Reg_s.dbf
примерчик бы не помешал
[Ответить]

Отвечает: Игорь
Возможно, так:
Data1.Connect = "dBASE III" (или "FoxPro 3.0")
Data1.DatabaseName = strPath
Data1.RecordSource = strSource

где strPath - полный путь к базе данных (например, "C:\Temp\db.mdb");
strSource - ресурс (например, "Лист1$")

Оценка за ответ: 5


Отвечает: Sergey Strizhakov
Я бы посоветовал при помощи SQL запросов всё это сделать, я так
формировал новый дбф файл
Скачать прикрепленный файл >>>
Оценка за ответ: 5

127/ Привет! Как открыть окно и затормозить процесс вызвавший его (одним действием) как в элементе CommonDialog(.ShowOpen) или соответствующих API. [Ответить]

Отвечает: Игорь
Я так понимаю, что Вы желаете открыть какое-либо окно (форму) и затормозить
действия, идущие за процедурой открытия окна (формы) до его (её) закрытия.
Если я Вас правильно понял, то для этого необходимо открыть окно (форму)
модально, т.е.: Form2.Show vbModal. Все процессы, написанные в коде за этой
процедурой не будут выполняться пока форма Form2 будет оставаться
загруженой, а после ее закрытия начнется выполнение последующих задач.
Например, создайте проект из двух форм (Form1 и Form2). На первую форму
поместите кнопку (Command1). Добавьте следующий код:

Private Sub Command1_Click()
Form2.Show vbModal
MsgBox <>
End Sub

При нажатии на кнопку загрузится вторая форма (Form2), но сообщение MsgBox
не появится, пока форма не закроется. Если же не написать vbModal, то и
вторая форма и сообщение MsgBox появятся одновременно:

Оценка за ответ: 5

128/Привет! Как узнать размер файла в интернете не скачивая его(если это возможно) [Ответить]

Отвечает: Игорь
онечно возможно! Для этого можно воспользоваться библиотекой WININET.DLL,
которая является частью Win32 API. Но зачем морочить голову, если за Вас это
сделали другие? Начиная с 5-й версии Visual Basic, в него входит специальный
ActivX компонент Microsoft Internet Transfer Control, который фактически
является интерфейсом к основной библиотеке Windows WININET.DLL. Он
обеспечивает поддержку нескольких стандартных протоколов, в том числе FTP и
HTTP. Протокол FTP имеет больше возможностей, но HTTP, как считают
специалисты, обладает большей гибкостью в использовании. Итак, все, что Вам
необходимо - это подключить Internet Transfer Control в Ваш проект (Меню
Проект/Компоненты).

Существует два метода, используемых для получения файлов: синхронный и
асинхронный.

Синхронный метод. Команда OpenURL используется чтобы получить доступ к
документу в Internet и помещает его копию на локальном компьютере. Все, что
Вы должны определить - URL документа, который Вм требуется, а также его
тип - icString для текстовых файлов или icByteArray для бинарных файлов
(программ, архивов и т.п.)

Приложение к ответу (исходный код):

Скачать прикрепленный файл >>>
Оценка за ответ: 5

131/Как-то я видел в сети программу для защиты баз данных Access от нажатия клавишы Shift. Был бы благодарен за исходный код или ссылку на подобную программу. [Ответить]

Отвечает: ElenaB_
См. MSDN
Microsoft Access 2000 Technical Articles Setting Startup Options Programmatically in Access 2000

http://msdn.microsoft.com/library/en-us/dnacc2k/html/acstartupoptions.asp

а также

Chapter 2: Protecting Your Database with Startup Options
http://msdn.microsoft.com/library/en-us/dndbdes/html/CHAPTER2AccessProtectionSecurity.asp

Примечание автора рассылки: ссылки на узел Microsoft.com не являются рекламой.

Оценка за ответ: 5

133/Как скачать страницу PhP
Беру ссылку с главной страницы сайта
Проблема в том что в броузере адрес который был на предыдущей странице изменяется! Откуда броузер берет новый адрес?
[Ответить]

Отвечает: Игорь
Полный ответ на Ваш вопрос Вы сможете найти, скачав пример к ответу # 128
(5,38 КБ). Там я отвечал по поводу вычисления размера файла в Интернете, не
скачивая его, но пример, который я добавил к своему ответу, содержит и
скачивание файла из Интернета, используя Microsoft Internet Transfer
Control, что относится не только к файлам, а и к страницам html, php, shtml
и др. Пример снабжен комментариями; думаю, что, скачав его, все станет ясно.

Если лень качать пример, то ...
:Создайте новый проект и подключите к нему компонент Microsoft Internet
Transfer Control. Вставьте на форму его, а также 2 текстовых поля и 1
командную кнопку. Первое текстовое поле будет служить для ввода URL
страницы, которую Вы желаете скачать (например,
"http://www.chto_to.ru/Index.html"), а второе - полный путь и имя файла для
ее сохранения на Вашем компьютере (например, "C:\Temp\Index.html").

ОТКУДА БРОУЗЕР БЕРЕТ НОВЫЙ АДРЕС?

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

Приложение к ответу (исходный код):


Оценка за ответ: 5


Отвечает: Alen Pelin
PHP - это не страница. PHP - это скрипт, который выводит на экран
страницу. Возможно данный скрипт просто перенаправляет вас на другую
страницу.

Оценка за ответ: 3

134/Здравствуйте!
У меня вот какая проблемка возникла,Была создана база данных,после чего на Visual Basic были созданы формы,в одной из них через DataGrid возможно просмотреть базу как обычно.Так же через DataGrid можно добавить в базу новые данные.
Но вроде бы все хорошо,и все получается, вот только есть одно Но.
А именно через другую форму в которой находятся текстовые поля и один ComboBox(для выбора данных из списка) нужно данные которые пользователь введет в тестовые поля добавить в базу данных.
Что я только не делал,не чего не получается:(
Please погите начинающему,вроде делал все как в книге написано,а выдает ошибку хоть убейся(Ошибка синтаксиса в инструкци INSERT INTO)
Так же предоставляю листинг где происходит ошибка.

В форуме посоветовали в место точек проставить запятые,поставил ошибка исчезна,но появилась новая говорит что не может найти колонку "N Порядковый номер" убрал эту колонку и все что сней было связано,появилась ошибка,что не может найти колонку " Полки"
Пожалуйста помогите разобратс


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'После проверки заполнения текстовых полей, после нажатия кнопки "OK" данные добовляются в базу данных через DataGrid
If (Trim(TextBox1.Text) = " ") Then
MsgBox("Не Задан Порядковый Номер") : Exit Sub
End If
If (Trim(TextBox2.Text) = " ") Then
MsgBox("Не задан Жанр Книги") : Exit Sub
End If
If (Trim(TextBox3.Text) = " ") Then
MsgBox("Не задано Название книги") : Exit Sub
End If
If (Trim(ComboBox1.Text) = " ") Then
MsgBox("Не задан Автор Книги") : Exit Sub
End If
If (Trim(TextBox5.Text) = " ") Then
MsgBox("Не задано Название Рассказа") : Exit Sub
End If
If (Trim(TextBox7.Text) = " ") Then
MsgBox("Не задано Полки Книги") : Exit Sub
End If
If (Trim(TextBox9.Text) = " ") Then
MsgBox("Не задан Год Выпуска Книги") : Exit Sub
End If
If (Trim(TextBox10.Text) = " ") Then
MsgBox("Не задано Содержание Книги") : Exit Sub
End If
Dim sSQL As String
sSQL = "INSERT INTO Spravochnik" & "([N Порядковый Номер]. [ Полки]. [ Книги]. Жанр. [Название Книги]. [Год Выпуска]. Содержание. [Название Рассказа]. Примечание1. Комментарий. Примечание2, Код)" & _ "VALUES (" & TextBox1.Text & ",'" & TextBox7.Text & "'," & TextBox8.Text & ",'" & _ TextBox2.Text & "','" & TextBox3.Text & "'," & TextBox9.Text & ",'" & _ TextBox10.Text & "','" & TextBox5.Text & "','" & TextBox11.Text & "','" & _ TextBox6.Text & "','" & TextBox12.Text & "','" & ComboBox1.Text & "') "
Try
ExecSQL(sSQL)
Me.DialogResult = DialogResult.OK
Close()
Catch myExeption As Exception
MsgBox(myExeption.Message)
End Try
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'Процедура кнопки Отмена
Me.DialogResult = DialogResult.Cancel
Close()
End Sub

Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

End Sub

Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged

End Sub

Private Sub Dobavity_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
End Class


Заранее благодарен!
[Ответить]

Отвечает: Игорь Осипов
Доброе время суток! Сам поначалу матерился в подобных ситуациях.
Моя ошибка была именно в инструкции SQL (как, по-моему и у Вас) -
обратите внимание на соединение строк. Например,
... "INSERT INTO Spravochnik" & "([N Порядковый Номер] ... Примечание2, Код)" & _ "VALUES ...
после объединения Вы получите следующее:
INSERT INTO Spravochnik([N Порядковый Номер] ... Примечание2, Код)VALUES (
(БЕЗ ПРОБЕЛА между служебными словами SQL).
Т.е. необходимо по краям слов добавить пробелы.
Кстати, я в таких случаях использую Debug.print sSQL, что бы
проверить, что там я наприсоединял.

Оценка за ответ: 5

135/Здравствуйте! Как сделать так чтобы неактивное окно отображалось на экране, не перекрывалось другими окнами, а фокус ввода оставался у активного окна? [Ответить]

Отвечает: Игорь
Доброе время суток! Сам поначалу матерился в подобных ситуациях.
Моя ошибка была именно в инструкции SQL (как, по-моему и у Вас) -
обратите внимание на соединение строк. Например,
... "INSERT INTO Spravochnik" & "([N Порядковый Номер] ... Примечание2, Код)" & _ "VALUES ...
после объединения Вы получите следующее:
INSERT INTO Spravochnik([N Порядковый Номер] ... Примечание2, Код)VALUES (
(БЕЗ ПРОБЕЛА между служебными словами SQL).
Т.е. необходимо по краям слов добавить пробелы.
Кстати, я в таких случаях использую Debug.print sSQL, что бы
проверить, что там я наприсоединял.

Приложение к ответу (исходный код):


Оценка за ответ: 5


Отвечает: EnzO)Stalker
Постараюсь ответить. Нужно неактивное окно сделать поверх всех окон. Вот как это делается:

Приложение к ответу (исходный код):


Оценка за ответ: 5

137/Привет! Подскажите как показать анимацию GIF'а [Ответить]

Отвечает: Игорь
Когда-то в Нете я нашел ответ на Ваш вопрос, но так его и не скачал, так как
размер кода программы для этой функции был приблизительно на 3-4 страницы
формата А4. Я подумал, что такой подход к мало кого устраивает: Сейчас Вам
могу предложить лишь следующий способ, который, возможно, Вас тоже мало
устроит, но все же:

Способ воспроизведения файлов формата GIF анимации при помощи элемента
WebBrowser. Этот стандартный инструмент для проектирования броузера отлично
работает в качестве проигрывателя! Для установки этого компонента подключите
Microsoft Internet Controls к вашему проекту, после чего разместите его на
форме так, что бы размеры не были слишком маленькими - это будущий экран.
Код такой:

Приложение к ответу (исходный код):


Оценка за ответ: 5


Отвечает: Sergey Strizhakov
привет! Лично я пользуюсь осиксом AniGif (DSMAniGifControl.ocx ) просто и удобно, хотя можно
писать свою функцию

Оценка за ответ: 3

138/Привет! Подскажите как воспоизвести SWF? [Ответить]

Отвечает: Игорь
Для отображения Flash (.swf) анимации в VB используется ActivX элемент
Shockwave Flash (FLASH.OCX). Подключите его к вашему проекту
(Меню/Компоненты). Правда, не знаю, поставляется ли он вместе с пакетом
Visual Basic, скорее всего, нет, но Вы можете найти FLASH.OCX через поиск.
Он не находится в папке SYSTEM, но обычно у всех на компе есть. Разместите
вышеназванный компонент на форме и разместите следующий код:

Приложение к ответу (исходный код):

Скачать прикрепленный файл >>>
Оценка за ответ: 5


Отвечает: Sergei
При помощи компонента ShockwaveFlash. В свойстве Movie путь к файлу
swf (, например, file:///patch_for_you_flash.swf).

Оценка за ответ: 3

139/Здраствуйте. Подскажите, плз, как в PictureBox'e растянуть изображение? Просьба ответы типа "поставь Image. Свойство Stretch = True" не присылать. Заранее благодарен. [Ответить]

Отвечает: EnzO)Stalker
Меня тоже интересовал этот вопрос, и вот я нашел на него ответ.

Создаешь на форме два PictureBox'a с именами picHidden и picVisible. На picHidden вешаешь картинку которую нужно растягивать и ставишь свойство Visible равным False, а picVisible оставляешь пустым. Далее пишешь код:

Приложение к ответу (исходный код):


Оценка за ответ: 4


Отвечает: Игорь
Ответ, типа, поставь свойство "STRETCH = TRUE" Вам никто и не прислал бы,
даже если бы Вы НЕ написали этого, т.к. в элементе PictureBox этого свойства
просто-напросто НЕТ!

Два способа растянуть изображение, в зависимости от того, куда Вы хотите его
растягивать. Вы не указали тип "растягивания".

1) Если Вы хотите растянуть изображение так, чтобы оно полностью поместилось
в Ваш PictureBox в реальном своем размере (если, конечно же, размеры формы
позволят).

Разумеется, сначала поместить объект PictureBox на форму, затем вставить
код:

Приложение к ответу (исходный код):


Оценка за ответ: 5


Отвечает: Копылов Сергей
Никак. 100%

Оценка за ответ: 2

140/Здравствуйте!
Я с VB знаком давно но руки не доходили до него написать что-то
серйозное. Решил написать программу для создания комбинаций клавиш на
мыши. Например: Колесо + Левая кнопка мыши = Копировать, и т. п. Но я
никак не могу определить какая же кнопка мыши нажата(или колесо).
Заранее благодарен.
[Ответить]

Отвечает: EnzO)Stalker
Попробуй этот код, может поможет:

Приложение к ответу (исходный код):


Оценка за ответ: 4


Отвечает: kel'
Проще всего (и эффективнее) это сделать через WinApi. В отдельном
модуле создаете вызов функции GetKeyState:
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

А дальше приведу простой пример с комvентариями, кнопкой и label'ом:

Приложение к ответу (исходный код):


Оценка за ответ: 5

141/Привет! как вернуть управление сразу же после вызова функции( т.е. чтобы вызванная функция выполнялась, и продолжала выполнятся процедура вызвавшая эту функцию одновременно) [Ответить]

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



Оценка за ответ: 4

142/ Здравствуйте уважаемые программисты!
Как создать файл имя которого переменная adres?
Заранее спасибо!
[Ответить]

Отвечает: Sergey Strizhakov
Привет! Open adres & ".txt" for [mode] as #1
ИМХО так!

Оценка за ответ: 3

Обучение для новичков


Есть желание вести раздел для новичков? Отправьте заявку на Admin@visualbasic.noka.ru
Раздел в отпуске.

Компоненты, контролы, исходники

Трюки с CD-Rom
CD-ROM. Открываем и закрываем
Модуль: Управление CD-Rom
 
Формы: операции с формами
Вызывает стандартное окно About
Запрещаем нажатие кнопки X на форме
Модуль: Прозрачные окна
Модуль: Разные формы
Перетаскивание окна не за заголовок
Операции с формами (отображение, скрытие, загрузка, выгрузка) New!!!
Форма с закругленными концами
 
VBA – все, относящееся к прикладному программированию
Excel - программное создание базы данных в книге Excel New!!!
Проверка орфографии с помощью Word
 
Файлы – операции с файлами
Модуль: Считывает размер файла, папки
Применение FSO в приложении
Пример показывает анимирование Gif-файла в приложении
Просмоторщик ресурсов
Создание MP3-коллекции файлов New!!!
Файлы - стандартные операции с файлами в VB New!!!
Операции с BMP (создание волн)
Создание щтрих-кода в BMP-файле
 
Реестр и INI-файлы
INI-файлы. Очень подробный пример для работы с Ini-файлами в приложении New!!!
Изменяем параметры Internet Explorer New!!!
Модуль: Работа с реестром
Работа с реестром
Пример реализации проверки файлов методом CRC New!!!
 
Панель задач и трей
Progress Bar в Task Manager
Блокирование/разблокирование, скрытие/отображение кнопки ПУСК New!!!
Иконка в трее
Иконка в трее
Модуль: Иконка в трее
Модуль: Иконка в трее 2
Программно впихиваем текст в панель задач (рядом с часами) New!!!
Часики в трее
 
Меню в Visual Basic
Меню с использованием BMP-файлов (1)
Меню с использованием BMP-файлов (2)
Стильное VB меню
 
Диалоги в Visual Basic
Вызов стандартного диалога открытия файла без использования контрола
Модуль: Стандартные диалоги
 
Элементы управления в Visual Basic
Кнопка XP New!!!
Крутой ProgressBar
Магическая кнопка! New!!!
Перебор цвета в Combo Box New!!!
Поворот текста под любым углом в PictureBox New!!!
Работа с таблицами в MSFexGrid New!!!
Создание таблицы с заголовками из ListBox
Текст под любым углом в PictureBox New!!!
 
Windows XP Style все по работе со стилями
Модуль: XP стиль
ХР стиль в приложении Visual Basic
 
Разное
Запрет нажатия клавиш Ctrl+Alt+Del
Звонилка New!!!
Информация о текущем пользователе New!!!
Модуль: Информация о жестком диске
Модуль: Программное переключение языка ввода с клавиатуры
Модуль: Сортировка массива
Модуль: Функции выключения, перезагрузки компьютера
Модуль: Шатдаун компьютера
Монитор статуса соединения с сетью New!!!
Пример известной игры Lines
Работа с DirectX
Работа с консолью в windows
Работа с портами в Windows
Создание анимированных изображений
Создание программы установки
Считывает серийный номер жесткого диска
Удаленное подключение к компьютеру
Устанавливаем приоритет приложения в Windows
Цифровое табло
Часики
Часы с таймером
Читаем разную информацию о БИОСЕ


Статья

Есть вопросы относительно статьи, задавайте!

Леха хочет задать два вопроса по статье: Как заставить работать Package & Deployment Wizard в Visual Basic 6.0

У меня 2 вопроса по поводу статьи "Как заставить работать Package & Deployment Wizard в Visual Basic 6.0" (кстати особое спасибо Игорю за статью, она очень помогла):
1. Есть ли программа которая создаёт не инсталляционных пакетов, а для деинсталляционных?
2. Можно ли сделать в Package & Deployment Wizard, чтобы Setup устанавливал не одно приложение, а допустим два соеденённым в vbg файл, к примеру если я создаю игру менеджер футбольного клуба, первый проект сама игра, а второй редактор базы данных?
Заранее спасибо.

Ответы направлять СЮДА

Опять же Игорь прислал в нашу рассылку статью. Спасибо Игорь за статью. По новым правилам Вы получаете дополнительно 10 баллов!

INTERNET TRANSFER CONTROL


Раньше работа с Internet, для программистов на Visual Basic, была возможна только используя непосредственный вызов функций API. С выпуском Visual Basic 5 все изменилось в связи с включением специального ActiveX компонента Internet Transfer Control. Internet Transfer Control обеспечивает поддержку двух стандартных протоколов FTP и HTTP. Протокол HTTP позволяет Вам соединяться с серверами world wide web и получать доступ к файлам. FTP протокол позволяет получать любой вид файлов от сервера FTP Internet, а также посылать их на такие же серверы, однако, в отличие от HTTP протокола, имеет больше возможностей.
Internet Transfer Control - фактически является интерфейсом к основной Internet библиотеке Windows WININET.DLL. Эта DLL - часть Win32 API. И Internet Explorer работает, вызывая функции из этой самой библиотеки. А зачем нам тогда этот Internet Transfer Control? Да, в принципе и не нужен, если только Вы не боитесь заблудиться в темном лесу под названием WININET.DLL.

ПОЛУЧЕНИЕ ФАЙЛОВ ИЗ INTERNET ПО HTTP ПРОТОКОЛУ
Рассмотрим получение файлов из Internet по протоколу HTTP. Существует два метода используемых для получения файлов: OpenURL и Execute.

Синхронный метод
Метод OpenURL используется, чтобы получить доступ к документу в Internet и помещает его копию на локальном компьютере. URL, который передается как параметр для метода OpenURL, может быть любым документом. Все, что Вы должны определить - URL документа, который Вам требуется и тип документа icString (текстовый файл) или icByteArray (бинарный файл, для программ и архивов). Вначале посмотрим, как получить обычный текстовый файл:
Dim vData As Variant
vData = Me.Inet1.OpenURL("http://www.vbnet.ru/default.asp", icString)

Итак, файл получен. Что мы можем с ним сделать? Например, сохранить на своем компьютере:
Open "C:\index.htm" For Output As #1
Print #1, , vData
Close #1

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

Внимание: Метод OpenURL выполняется синхронно, т.е. управление в Вашу программу будет передано только тогда, когда передача запрашиваемого файла будет завершена. Иными словами, Ваша программа будет неспособна выполняться пока идет передача файла и, если файл большой, а связь медленная, то Вы можете испытывать некоторые трудности с использованием этого метода, дело в том, что Ваша программа окажется «замороженной» на пару часиков в случае если принимаемый файл имеет внушительные размеры, ну и кому это понравится? Зато легко, но не очень хорошо, но легко.
После, того, как Вы открыли файл методом OpenURL, Вам становятся доступны некоторые его свойства, которые тоже могут быть Вам полезны.

Значение
Описание
Date
Возвращает время и дату передачи документа.
Формат: Wednesday, 24-April-05 19:34:15 GMT
MIME-version
Возвращает версию протокола MIME.
Server
Возвращает название сервера.
Content-length
Возвращает размер документа в байтах.
Content-type
Возвращает MIME тип данных.
Last-modified
Возвращает дату и время последней модификации документа.
Формат: Wednesday, 24-April-05 19:34:15 GMT

Итак, допустим, что Вы хотите узнать размер открытого документа. Для этого используйте такой код:
Dim sLenth As String
sLenth = Inet1.GetHeader("Content-length")

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

Если Вам нужно принять только заголовок документа, то воспользуйтесь следующим кодом:
Inet1.Execute , "HEAD"
'задержка, пока запрос не выполнен
Do
If Not Inet1.StillExecuting Then Exit Do
DoEvents
Loop
Dim lLenthFile As Long
lLenthFile = CLng(Inet1.GetHeader("Content-length"))
s = "Date: " & Inet1.GetHeader("Date") & vbCrLf
s = s & "MIME-version: " & Inet1.GetHeader("MIME-version") & vbCrLf
s = s & "Server: " & Inet1.GetHeader("Server") & vbCrLf
s = s & "Content-length: " & CStr(lLenthFile) & vbCrLf
s = s & "Content-type: " & Inet1.GetHeader("Content-type") & vbCrLf
s = s & "Last-modified: " & Inet1.GetHeader("Last-modified") & vbCrLf
Label1.Caption = s

Обратите внимание на переменную lLenthFile, которая равна размеру принимаемого файла. Это нам может потребоваться в дальнейшем.

Внимание: Если принимаемый документ не бинарный файл или не HTML документ, а является ASP или другим динамически формируемым документом, то принятый заголовок может содержать искаженную информацию, например о его размере. Это связано с тем, что получить размер еще не существующего документа невозможно.

Асинхронный метод
Для того, чтобы выполнение программы не прерывалось, существует способ асинхронной передачи файлов. Давайте рассмотрим его подробнее. Для асинхронной работы существует метод Execute.
Execute метод посылает команду на отдаленный сервер Internet. Команда может быть запросом для получения, передачи файла на сервер, удаления, переименования файла и т.д. Кроме того, серверы HTTP имеют набор команд, которые позволяют Вам не, только получать или передавать файлы, но также могут передавать различную информацию о документе, сохраненном на сервере. Как только сервер получил команду, которая была передана ему Execute методом, он посылает ответ на Вашу программу, вызывая StateChanged событие Internet Transfer Control. Событие StateChanged имеет параметр, который указывает действие, которое удаленный компьютер только что выполнил. Как только это событие было вызвано, Вы можете предпринять какие либо действия в Вашей программе. В настоящее время документированы следующий команды для HTTP серверов: GET - прием файла с сервера, HEAD - прием заголовка, POST - альтернативный метод приема данных и PUT - передача данных на сервер.
Итак, допустим, что Вы запросили на сервере файл mydocument.zip. Сервер принял Вашу команду и начинает возвращать Вам данные. Для получения данных, которые были переданы на Ваш компьютер, Вам нужно обратиться к методу GetChunk. Но здесь не все так просто, дело в том, что данные передаются не все сразу, а по частям или порциями. Обычно (по умолчанию) размер каждой порции данных 1024 байт. Это означает, что, если Вы требовали файл, который имеет размер 100 Кб, то Вы должны вызвать GetChunk метод примерно 100 раз, чтобы получить все требуемые данные. Для чего это сделано? Представте себе, что Ваша программа принимает файл размером 1 Мб, а скорость Вашего соединения с Internet 19200 бод. Это означает, что Ваша программа будет принимать файл примерно в течении 10 минут. Как Вы думаете, стоит сообщать пользователю Вашей программы о том, какая часть файла уже принята и сколько осталось еще принять? Думаю, что стоит.
Да, кстати, если Вы думаете, что сервер всегда должен Вам возвратить данные, то Вы глубоко заблуждаетесь. Если Вы захотите удалить файл на сервере и пошлете ему правильную команду, то сервер сразу же скажет OK и удалит этот файл. А вот данных Вы от него никаких тогда не получите, но событие StateChanged произойдет и параметр State примет значение icResponseCompleted (т.е. State = 12). Значит все в норме, и запрос был успешно выполнен.
Теперь давайте посмотрим на код. Обратите внимание, что прием данных ведется в переменую vtData(), имеющую тип Byte. Это сделано для того, чтобы можно было принимать любые типы файлов: текстовые и бинарные. С той же целью метод GetChunk вызывается с параметром icByteArray:
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData() As Byte
Dim intFile As Long
Select Case State
'здесь можно обрабатывать другие события
Case icResponseCompleted '12
'открываем файл для записи принимаемых данных
intFile = FreeFile
Open Me.txtFileName For Binary Access Write As #intFile
'принимаем первую порцию данных
vtData = Inet1.GetChunk(1024, icByteArray)
Do While LenB(CStr(vtData)) > 0
Put #intFile, , vtData
'следующая порция данных
vtData = Inet1.GetChunk(1024, icByteArray)
UpdateStatus Seek(1)
Loop
Put #intFile, , vtData
Close #intFile
End Select
Me.stb.SimpleText = GetConnectionState(State)
End Sub

Еще необходимо обратить внимание на код процедуры UpdateStatus. Она отвечает за вывод информации о прогрессе приема файла. Для этого используется глобальная переменная lLenthFile, содержащая размер документа на сервере и передаваемый размер уже принятых данных. Процедура очень простая и служит только для того, чтобы записать в строку состояния, сколько принято данных в процентах от их общего количества.
Sub UpdateStatus(lRec As Long)
Dim i As Long
i = lRec * 100 / lLenthFile
stb.SimpleText = "Принято: " & i & "%"
Rem: stb - это StatusBar (Microsoft Common Controls 6.0) со свойством style="Simple"
DoEvents
End Sub

И ничего нет здесь сложного. Так, теперь мы знаем для чего нужно событие StateChanged и давайте посмотрим, какую информацию мы можем еще получать, используя его.

Константа
Значение
Описание
icNone
0
Информация о состоянии не доступна
icResolvingHost
1
Поиск IP адреса сервера
icHostResolved
2
IP адрес сервера найден
icConnecting
3
Соединение с сервером
icConnected
4
Соединился с сервером
icRequesting
5
Запрос информации с сервера
icRequestSent
6
Запрос на сервер успешно отправлен
icReceivingResponse
7
Получение ответа от сервера
icResponseReceived
8
Ответ от сервера был успешно принят
icDisconnecting
9
Отключение от сервера
icDisconnected
10
Отключение от сервера выполнено
icError
11
Произошла ошибка во время сеанса связи с сервером
icResponseCompleted
12
Запрос выполнен, все данные получены

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

Для этого можно написать специальную функцию, которая бы возвращала по коду (от 0 до 12) его описание. Кроме того, можно сделать поддержку двух или более языков, на которых будут выводиться сообщения. Что же касается кода этой функции, то он достаточно простой:

Function GetConnectionState(intState As Integer) As String
Dim s As String
Select Case intState
Case Is = 0: s = "Информация о состоянии не доступна."
Case Is = 1: s = "Поиск IP адреса сервера..."
Case Is = 2: s = "IP адрес сервера найден..."
Case Is = 3: s = "Соединение с сервером..."
Case Is = 4: s = "Соединился с сервером..."
Case Is = 5: s = "Запрос информации с сервера..."
Case Is = 6: s = "Запрос на сервер успешно отправлен..."
Case Is = 7: s = "Получение ответа с сервера..."
Case Is = 8: s = "Ответ с сервера был успешно получен..."
Case Is = 9: s = "Отключение от сервера..."
Case Is = 10: s = "Отключение от сервера выполнено."
Case Is = 11: s = "Произошла ошибка во время сеанса связи."
Case Is = 12: s = "Запрос выполнен, все данные получены."
End Select
GetConnectionState = s
End Function

Заключение
В этой статье рассказано, как можно использовать Internet Transfer Control для передачи файлов в сети Интернет. Однако, в ней описано только использование HTTP протокола, который, в отличие от другого FTP протокола обладает большей гибкостью в использовании.

P.S.: Пример к статье - см. Ответ на Вопрос № 128.

 


Дружественные сайты
http://www.delphi.int.ru - Программирование на DELPHI: Вопросы и Ответы читателей; Статьи по программированию на Delphi, других языках программирования, графике (OpenGL/DirectX); Компоненты, Пакеты, Plug-in'ы, Модули для Delphi; Исходники программ, игр; Документация и ссылки на документацию по программированию; Рассылка, в которой каждый программист найдёт что-то полезное!

http://infomania2004.webhost.ru. Этот сайт создан для того, чтобы вы могли получить интересующую вас информацию с минимальными затратами сил и времени. Если вы не нашли здесь нужной информации, оставьте заявку...">

Все о Динамо - www.DynamoMania.ru На этом сайте вы найдете все новости и интервью ВСЕХ видов спорта Динамо. Также на сайте есть таблицы всех видов спорта. Видео и Фото материалы. И все это на одном сайте - www.DinamoMania.ru Это первый и единственный сайт, который освещает все виды одного клуба.
Юмор

- Что такое "Жар-птица"?
- Это курица, больная гриппом.

Чем город отличается от деревни - в деревне бычки кроют телок,
а в городе телки смолят бычки.

Филиппу Киркорову присвоено новое звание: "Стоцкий советник".

:))

Наши партнеры

Рассылки Subscribe.Ru
Visual Basic для новичков и профессионалов
Программирование на Delphi

Хотите стать нашим партнером? Пишите сюда.


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.vbforbeginprof
Отписаться
Вспомнить пароль

В избранное