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

RusFAQ.ru: Программирование на Delphi


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


RusFAQ.ru: Программирование на Delphi

Выпуск № 088
от 19.10.2002, 00:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 228
Отправлено ответов: 407
Активность: 178.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Idle Sign
Статус: Доверительный
Общий рейтинг: 148.83
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.58
URL: Пристанище неодинокого программиста
[Подробней >>]
Jadd
Статус: Профессиональный
Общий рейтинг: 145.5
[Подробней >>]
 
Pablo
Статус: Профессиональный
Общий рейтинг: 129.15
URL: Моя страничка
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 220. Господа эксперты, Скажите пожалуйста в чем заключаются функции события onidle. Дело в том что мне н... (ответов: 3)
Вопрос № 221. Доброе всем время суток!!! У меня есть несколько вопросов , связанные с хуками: 1)Как вообще стави... (ответов: 2)
Вопрос № 222. Добрый час! Спасибо за ответы на вопрос про WinAPI в Delphi. Начал разбираться, и вдруг... Чего-то с... (ответов: 2)
Вопрос № 223. Всем привет!!! Уменя такой вопрос. Подскажите как мне заставить программу отображать mesagebox при с... (ответов: 3)
Вопрос № 224. Всем здравия... Как можно проверить валидность E-mail адреса (наличие такого юзеря, сервера и вообще... (ответов: 3)
Вопрос № 225. Здравствуйте, эксперты! Проблема в следующем, при нажатии кнопки восстановить на форме, пропадает ве... (ответов: 3)

Вопросов: 6, ответов: 16


 Вопрос № 220

Господа эксперты,
Скажите пожалуйста в чем заключаются функции события onidle. Дело в том что мне не впоне понятна переменная Done:boolean. Скажите пожалуйста почему не работает следующая процедура(см.приложение).
Спасибо вам!


Приложение:


Вопрос отправлен: 14.10.2002, 13:56
Отправитель: Oscar (squeeze_ms@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Приветствую Вас, Oscar !
===== Pro bono publico, no bloody panico! =====
Ух ты. Прямо на форме событие? Я еще понимаю на TApplication, но на форме? Вообще OnIdle срабатывает, как говориться, при an application becomes idle, т.е. когда приложению делать нечего :) А Done... а кто же его знает, что имелось в виду, может оно вообще "reserved" (гы-гы-гы)

Ответ отправлен: 15.10.2002, 17:53
Отправитель: Idle Sign


Отвечает Артём Шегеда

Добрый день, Oscar !

А не забыл ли дорогой товарисч назначить этот обработчик переменной Application? Рекомендую сделать так, как показано в приложении - и всё будет OK!

Приложение:

Ответ отправлен: 14.10.2002, 15:06
Отправитель: Артём Шегеда


Отвечает Jadd

Доброе время суток, Oscar !
Событие OnIdle возникает тогда, когда приложение простаивает. Далее. Done всегда по умолчанию в true, иначе расходуется время процессора напрасно. А время меняется только на событие OnTimer. Еще проблема с присваиванием Done:=false - правильная запись (у тебя Done:false);

Ответ отправлен: 15.10.2002, 02:53
Отправитель: Jadd


 Вопрос № 221

Доброе всем время суток!!!

У меня есть несколько вопросов , связанные с хуками:
1)Как вообще ставить глобальные хуки(желательно с примером или ссылкой)?
2)Как поставить глобальный хук на кнопки F5-F8?
3)И как из dll сказать или передать сообщение о том , что действие произошло?
Заранее спасибо!!!!


Приложение:


Вопрос отправлен: 14.10.2002, 19:46
Отправитель: MystiX

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Добрый день, MystiX!
1) тут должна лежать статья (http://www.sources.ru/delphi/dll/hooks_aspects.shtml), которая для тебя все разъяснит
2) регистрим шорткаты средствами WinAPI (см. приложение) в данном случае LParamLo - состояние клавиш Shift/Alt/Ctrl/Win, а LParamHi=VK_F5 - собственно нужная нам кнопочка. (см. описание RegisterHotKey в WinAPI)
3) см. ссылку к вопросу 1, там вроде было описано, если мне пямять не изменяет

Приложение:

Ответ отправлен: 15.10.2002, 17:52
Отправитель: Idle Sign


Отвечает Jadd

Доброе время суток, MystiX!
есть отличный сайт www.rsdn.ru там и про хуки и про dll

Ответ отправлен: 15.10.2002, 02:54
Отправитель: Jadd


 Вопрос № 222

Добрый час! Спасибо за ответы на вопрос про WinAPI в Delphi. Начал разбираться, и вдруг... Чего-то совсем не могу понять: WinAPI, что ли, придумывалась для NT? Ну, CreateFile работает, ну, DeviceIoControl работает, но... почему Delphi ругается "Undeclared identifier" на DISK_GEOMETRY, на IOCTL_DISK_GET_DRIVE_LAYOUT и т.п.? Смотрю инфу в win32.hlp: и на все эти типы и константы, с которыми работает DeviceIoControl, написано: Windows NT Yes, Win95 No. Т.е. как это? Вообще, что ли, получается в Win9x нельзя использовать DeviceIoControl? Т.е. её-то использовать можно, но ни одна операция не может быть выполнена? Прошу пояснить. Ведь даже простое описание типа HANDLE не распознаётся! А мне ну очень нужно узнать структуру диска в Delphi!Enclosure=none



Вопрос отправлен: 14.10.2002, 23:51
Отправитель: undying

[Следующий вопрос >>] [Список вопросов]

Отвечает Артём Шегеда

Здравствуйте, undying!

Нет, WinAPI разрабатывается с платформы Win32 (а может быть и раньше). С каждой новой версией Windows добавляются новые типы данных, новые константы и новые функции. Поэтому многие функции, расчитанные на новые возможности, не работают в старых версиях, а некоторые функции, устаревшие и не вписывающиеся в концепцию построения системы, из системных библиотек выбрасываются.
Что касается функции DeviceIoControl, то подробную информацию можно найти по этим адресам:
Calling DeviceIoControl on Windows 95/98/Me
Calling DeviceIoControl
DeviceIoControl

Ответ отправлен: 15.10.2002, 11:20
Отправитель: Артём Шегеда


Отвечает Idle Sign

Доброе время суток, undying!
===== Pro bono publico, no bloody panico! =====
Ты в uses прописал все что нужно (см. мой ответ на твой предыдущий вопрос)? Переменные определил правильно? Не должен ругаться...
Раз пишут, что на чикаго нельзя использовать, значит - нельзя. Под 98 и ME может работать, ну а под w2000 и XP обязано.
Если срочно нужно узнать, тогда идешь к Torry, или в Королевство Дельфи, или к Мастерам Дельфи, или еще куда-нибудь в том же духе и ищешь компонент для работы с диском.

Ответ отправлен: 15.10.2002, 17:52
Отправитель: Idle Sign


 Вопрос № 223

Всем привет!!!
Уменя такой вопрос. Подскажите как мне заставить программу отображать mesagebox при совпадении определённого условия(даты). Я только начинаю учить DELPHI и прошу простить меня за столь ламерский вопрос. Ответ пришлите на мыло, если вас не затруднит.


Приложение:


Вопрос отправлен: 15.10.2002, 00:59
Отправитель: Евгений (evgenii_husainov@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Приветствую Вас, Евгений!
===== Pro bono publico, no bloody panico! =====
{код, выполняющийся при совпадении текущей даты с заданной может быть таким}
Application.MessageBox(const Text, Caption: PChar; Flags: Longint = MB_OK): Integer;
{или, к примеру, таким}
ShowMessage(const Msg: WideString);
Способов вагон и еще маленькая тележка с WinAPI (MessageBox(A)).

Ответ отправлен: 15.10.2002, 17:52
Отправитель: Idle Sign


Отвечает Jadd

Здравствуйте, Евгений!
месадж бокс можно вывести двумя способами:
1) с помощью WinAPI
MessageBox(Handle, "Message", "Head", MB_ICON + MB_);
Поясню: вместо Handle - хэндл окна или приложения.
вместо "Message" - твое сообщение
вместо "Head" - заголовок сообщения
вместо - тип иконки в месадж боксе
вместо - используемые кнопки (см. хэлп)
2) с помошью классов Дельфи:
Application.MessageBox()
описание похожее, так что смотри хэлп
3) с помощью функции ShowMessage()
вместо - твое сообщение

Ответ отправлен: 15.10.2002, 03:01
Отправитель: Jadd


Отвечает Артём Шегеда

Приветствую Вас, Евгений!

Кроме тех ответов, что Вы получите, я рекомендовал бы проверять дату другим образом, поскольку формат даты на разных компьютерах может быть разным (к примеру, не две цифры года, а четыре)

Приложение:

Ответ отправлен: 15.10.2002, 11:35
Отправитель: Артём Шегеда


 Вопрос № 224

Всем здравия...
Как можно проверить валидность E-mail адреса (наличие такого юзеря, сервера и вообще возможность отправить на него письмо) средствами Delphi, очень желательно найти максимально быстрый способ. Ещё одно пожелание - можно ли это сделать в консольном приложении, т.е без задействования средств VCL.
Ещё вопрос, как использовать WinApi в Delphi? Ни разу не пробовал... если можно ответ с какой-то теорией... Если у кого есть ссылки, статьи и. др. с радостью приму!
Заранее спасибо Всем!
P.S. Очень надеюсь на ответ Артёма Шегеды :-)



Вопрос отправлен: 15.10.2002, 16:25
Отправитель: ALastorZ (alastorz@yandex.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Приветствую Вас, ALastorZ!
===== Pro bono publico, no bloody panico! =====
Я, конечно, не Артем, однако _теорию_ свою на сей счет имею: наличие сервера можно определить пинганув его, однако кто тебе это даст сделать? Наличие почтового ящика определить можно лишь обратившись к нему (читай: заслав пару строк ;)). Ну, а отправить письмо возможность есть всегда, только вот результат...
В консольном? Отчего нельзя? Можно! Пиши свою библиотеку, грызи гранит науки, долго ли, коротко ли, но ты получишь то, что хотел.
Набор функций WinAPI используется таким же образом как и любой другой. В дистрибутиве Delphi есть кой-какая справочная информация (Win32 Programmer's Reference) по данному интерфейсу, более подробно - MSDN (http://www.msdn.com). Хочешь родного языка, тогда загляни на http://www.winnt.rsm.org.ru/winapi/winapi.htm.

Ответ отправлен: 15.10.2002, 19:50
Отправитель: Idle Sign


Отвечает Jadd

Добрый день, ALastorZ!
А что, Артем Шегеда - супер-гуру? Че тогда ему самому не напишешь? WinAPI в Дельфях используется так же, как и в Си, и других языках. В раздел uses ставишь имя модуля, в котором определена функция, а дальше - дело техники. Главный модуль - Windows, тут определены типы и прочее.
Насчет Email ничего не скажу, но, думаю, покапавшись в MSDN или в описании самого MAPI можно надыбать что-нибудь. Например, при первом взгляде функция MAPIResolveName наводит на определенные мысли. Ищи, и пытайся сам разобраться - это будет ценнее, чем чья-то помощь.

Ответ отправлен: 15.10.2002, 18:55
Отправитель: Jadd


Отвечает Pablo

Доброе время суток, ALastorZ!
Можно использовать конслольное приложение с задействованием средств VCL, а можно а обычное оконное приложение и без использования VCL написать, так что выбираешь?!
WinAPI в Дельфях просто использовать, почти также как и обычные VCLные методы, но без указания класса.
Email же ты можешь проверить только на синтаксис, то есть в нем должна быть зона, домен и имя в домене, типа name_in_domain@domain.zone

Ответ отправлен: 17.10.2002, 16:53
Отправитель: Pablo


 Вопрос № 225

Здравствуйте, эксперты!
Проблема в следующем, при нажатии кнопки восстановить на форме, пропадает вертикальная полоса прокрутки компонента DBGrid. При изменении мышкой размера окна, она появляется. Что за глюк и как с ним бороться?



Вопрос отправлен: 15.10.2002, 16:40
Отправитель: Владимир

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Приветствую Вас, Владимир!
===== Pro bono publico, no bloody panico! =====
Попробуй перерисовать окно (Repaint) или обновить (Refresh) на OnResize, авось получиться чего (хотя эти методы по идее должны вызываться автоматически).


Ответ отправлен: 15.10.2002, 19:50
Отправитель: Idle Sign


Отвечает Jadd

Здравствуйте, Владимир!
Я не получил такого эффекта, но, вероятно, грид по каким-то причинам не может отрисоваться корректно. Тогда делай так:
Пиши свой обработчик Application.OnRestore где будешь просто делать перерисовку формы и все.

Ответ отправлен: 15.10.2002, 19:14
Отправитель: Jadd


Отвечает Pablo

Доброе время суток, Владимир!
Ты попробуй перерисовывать TDBGrid при обработке события нажатия твоей кнопки. Попробуй типа такой сточки использовать:
DBGrid->Repaint();

Ответ отправлен: 17.10.2002, 16:55
Отправитель: Pablo



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (44)
C / C++ (30)
Perl (5)
Delphi (21)
Pascal (25)
Basic / VBA (9)
Java / JavaScript (10)
PHP (10)
MySQL / MSSQL (14)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (25)
"Железо" (32)
Поиск информации (14)
Администратору
Windows NT/2000/XP (14)
Linux / Unix (14)
Юристу
Гражданское право (7)
Семейное право (4)
Трудовое право (3)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное