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

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


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 465
от 06.05.2006, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 325, Экспертов: 58
В номере:Вопросов: 7, Ответов: 8


Вопрос № 41750: Здравствуйте. Подскажите пожалуйста, как сделать приложение зависимым от разрешения экрана?...
Вопрос № 41786: как использовать int 16h в delphi? пишу консольное приложение begin ... asm mov ah,00 int 16h mov key, ah end; ... end. слетает...
Вопрос № 41795: Здравствуйте!!! Имеется процедура, которая рисует корабль на форме. Все точки для построения корабля рассчитываются от одной начальной (Х=0 и Y=80) (см. приложение). Требуется добавить на мачту корабля флаг РФ так чтобы он развивался как будт...
Вопрос № 41800: Каким образом можно заставить Delphi не обращать внимание на то, что я изменил в процедуре обработки события Sender с TObject на уточненный тип объекта, в моем случае - TEdit! Мне надоело при каждом пробном запуске 24 раза нажимать No, чтобы он не уб...
Вопрос № 41812: Добрый день. С праздником. Ссылаюсь на вопрос №41659 Создаю динамически в PageControl1 закладки, в них WebBrowes: procedure TForm1.ToolButton1Click(Sender: TObject); var tab: TTabsheet; wb: TWebBrowser; s: string...
Вопрос № 41823: Мир вам, уважаемые эксперты! Вновь пришел за советом. Положим, есть программа А и программа Б. Программа А занимается сложным математическим расчетом и выдает в результате большой поток численных значений. Программа Б должна подхватывать эти ...
Вопрос № 41825: Здравствуйте эксперты!! Подскажите пожалуйста каким образом можно найти в интернете домашний компьютер по IP адресу и вообще возможно ли это? После прочтения нескольких книг, я намостырился выполнять это в локальной сети, а вот в интернете что то...

Вопрос № 41.750
Здравствуйте.
Подскажите пожалуйста, как сделать приложение зависимым от разрешения экрана?
Отправлен: 30.04.2006, 21:55
Вопрос задала: GidraIRi (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Bochvarov NikB
Здравствуйте, GidraIRi!
Надеюсь, что кирилский алфавит будет тебе понятен.
Мелкие процедурьи в UtilsStr и UtilsMessageE5 не будут создавать тебе проблем.

Приложение:

Ответ отправил: Bochvarov NikB (статус: 8-ой класс)
Ответ отправлен: 30.04.2006, 22:02
Оценка за ответ: 5
Комментарий оценки:
Спасибо, все работает


Вопрос № 41.786
как использовать int 16h в delphi?
пишу консольное приложение
begin
...
asm
mov ah,00
int 16h
mov key, ah
end;
...
end.

слетает
Отправлен: 01.05.2006, 11:29
Вопрос задал: 34076 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, 34076!
Такая постановка вопроса вызывает, мягко говоря, удивление. Служб, которые основываются на прерываниях, таких как были в DOS, в Windows нет. Поскольку речь идет о Delphi, то пишите Вы именно программу для Windows, несмотря на то, что она называется "консольная".
Вместо 16h, что было в DOS, Windows предлагает Вам набор собственных служб для консоли. Наберите в справке для Win32 "Console Functions" и Вы получите их список.
В частности для клавиатуры там есть функции:
ReadConsoleInput() - считывает следующий знак из буфера ввода и удаляет его оттуда;
PeekConsoleInput() - тоже самое, только знак не удаляется.
Первая функция и является как раз аналогом службы 00h досовской 16h (набор служб для клавиатуры).
Вторая функция - аналог службы 01h.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 01.05.2006, 12:38


Вопрос № 41.795
Здравствуйте!!! Имеется процедура, которая рисует корабль на форме. Все точки
для построения корабля рассчитываются от одной начальной (Х=0 и Y=80) (см. приложение).
Требуется добавить на мачту корабля флаг РФ так чтобы он развивался как будто на него дует ветер

Приложение:

Отправлен: 01.05.2006, 13:34
Вопрос задал: Rewer8 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгения
Здравствуйте, Rewer8!
Я попробовала сделать так (получилось не очень красиво из-за задержки прорисовки, но если спросят, что это больше всего напоминает, то ответом будет: развевающийся флаг :)):
1. на OnTimer изменяем параметр l, который впоследствии будет отвечать за смещение синусоиды.
2. флаг рисуется: 4 синусоиды и еще одна линия - являющаяся правым краем флага.
3. закрашиваются секции флага в разные цвета.
4. флаг удаляется, удаляются линии и закраска.
5. флаг рисуется снова со смещением синусоиды.

Получилось, что флаг мигает... извините, если вам не нравится этот вариант... но может еще какие идеи вам придут :)

см. Приложение.

Приложение:

---------
Я не волшебник, я только учусь... А разве кто-то обещал, что будет легко?

Ответ отправила: Евгения (статус: 4-ый класс)
Ответ отправлен: 02.05.2006, 04:38
Оценка за ответ: 5
Комментарий оценки:
Очень даже красивый флаг! Спасибо!!!


Вопрос № 41.800
Каким образом можно заставить Delphi не обращать внимание на то, что я изменил в процедуре обработки события Sender с TObject на уточненный тип объекта, в моем случае - TEdit! Мне надоело при каждом пробном запуске 24 раза нажимать No, чтобы он не убрал ссылку на обработку!
Отправлен: 01.05.2006, 15:50
Вопрос задал: Дмитрий Т. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Ерёмин Андрей
Здравствуйте, Дмитрий Т.!
А зачем вы это делаете? Delphi так и будет всё время предупреждать об этом. Если вы хотите обращаться в этому объекту (Sender) как к TEdit, то делайте это так (пример с текстом): (Sender as TEdit).Text:='123';
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 01.05.2006, 19:17
Оценка за ответ: 5
Комментарий оценки:
Благодарю за ответы! В частности данный очень, просто о такой возможности я не знал.


Вопрос № 41.812
Добрый день. С праздником.

Ссылаюсь на вопрос №41659
Создаю динамически в PageControl1 закладки, в них WebBrowes:

procedure TForm1.ToolButton1Click(Sender: TObject);
var
tab: TTabsheet;
wb: TWebBrowser;
s: string;
begin
inc (i);
S := ExtractFilePath(Application.ExeName) + 'setup.html';
tab := TTabSheet.Create(PageControl1);
tab.PageControl := PageControl1;
tab.Caption := 'Install';
wb := TWebBrowser.Create(Form1);
TWinControl(wb).Parent := tab;
TWinControl(wb).name := 'wb' + inttostr(i);
wb.Align := alClient;
wb.Navigate(s);
end;

Так вот скажем создал нажимаю кнопку 10 закладок, перешел на 7-ю закладку исходя из кода:
TWinControl(wb).name := 'wb' + inttostr(i);

имя WebBrowser будет wb6, потому что отчет был с нуля.

Мне нужно в Edit1 узнать имя WebBrowser в закладке в которой буду находится, тобишь в текущей.
Отправлен: 01.05.2006, 18:05
Вопрос задал: Maximus (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Maximus!
Это можно сделать, исходя из свойства ActivePageIndex или учитывая i (если не трогать это значение):
Edit1.Text:='wb'+IntToStr(PageControl1.ActivePageIndex);
Либо +/- 1 к этому значению в зависимости от условий.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 01.05.2006, 19:23
Оценка за ответ: 5
Комментарий оценки:
Именно то что нужно. Спасибо


Вопрос № 41.823
Мир вам, уважаемые эксперты!
Вновь пришел за советом.
Положим, есть программа А и программа Б. Программа А занимается сложным математическим расчетом и выдает в результате большой поток численных значений. Программа Б должна подхватывать эти цифры и исходя из них что-нибудь рисовать пользователю.
Как это можно реализовать ?
Наиболее критична - скорость работы программы А - желательно, что бы ей ничего не мешало.
Также очень хочется рисование realtime...

У меня сейчас одна идея - pipe. Т.е. вывод консольной программы А пускать на ввод программы Б (а ля unix), но не очень представляю, как это будет выглядить, и подходит ли вообще.

Буду благодарен любым замечаниям или идеям.
С уважением, Лука.
Отправлен: 01.05.2006, 21:34
Вопрос задал: Luka (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Jeka911
Здравствуйте, Luka!

1)Есть идея использовать потоки.. А - в поток вызываемый программой В, а по завершении вычислений - рисовать.

2)Посылать сообщения из программы А по завершении вычислений в В, например программно нажать на ней кнопку, а результаты вычислений сохранять в А и загружать в В из файла.

rgds,
---------
Шахтер - чемпион!!!
Ответ отправил: Jeka911 (статус: 2-ой класс)
Ответ отправлен: 02.05.2006, 01:23
Оценка за ответ: 4
Комментарий оценки:
Спасибо за участие, но...
1) Как я писал, хотелось бы иметь realtime, дело в том, что расчет может длиться
несколько часов/дней ;) Да и зачем поток мне не ясно - ведь А всё равно запустится в
своем адресном пространстве и своем потоке. Вопрос в том как данные передавать.
2) Если б можно было ждать конца расчета, то и сообщений никаких не надо - просто
отслеживать когда А закончит работу. Кроме того мне не хочется завязывать в цепочку не самую быструю операцию записи на диск. Скорость выполнения *ОЧЕНЬ* критична.

Отвечает: Denisss

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

В прикрепленном файле - пример, как можно такое сотворить.
Пример написан на Delphi 7.
cons - консольное приложение.
wingui - GUI приложение.

Запускаете wingui.exe. Автоматически запустится cons.exe. Далее все числа, что Вы будете вводить в консоль будут передаваться в оконное приложение и там отображаться.
:q - выход из консольного приложения (хотя можно и просто на крестик нажать)

Удачи!

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.

Ответ отправил: Denisss (статус: Специалист)
Ответ отправлен: 02.05.2006, 17:28
Оценка за ответ: 5
Комментарий оценки:
Спасибо.
Пример толковый. Буду тестировать производительность.
Интересно, несколько сот тысяч сообщений не уронят винду ? :/


Вопрос № 41.825
Здравствуйте эксперты!!
Подскажите пожалуйста каким образом можно найти в интернете домашний компьютер по IP адресу и вообще возможно ли это? После прочтения нескольких книг, я намостырился выполнять это в локальной сети, а вот в интернете что то никак!
В книжках написано что типо, если в локальной сети, то использовать clientSocket.host(типо имя компьютера), если в интернете нужно использовать IP адрес и следовательно ClientSocket.addres, а процесс тот же самый как и в локальной сети!!
Но что то я ну никак не могу представить как поиск в интернете будет происходить по принципу поиска компьютера в локальной сети!!!
Может я чего не так понял!??
Отправлен: 01.05.2006, 21:40
Вопрос задал: F Ruslan R (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Решетник Д
Здравствуйте, F Ruslan R!
Во-первых, не каждый Домашний компьютер, имеет прямой доступ в инет. в основном доступ идет через прокси-сервер на провайдере. это делает связь с таким компьютером почти невозможной.
(то есть компьютер имеет только ИП адрес внутри провайдера/сети (например, 192.168.0.1), а пров берет интернет и дает его внутри своей сети на этот ИП).
Поэтому для связи между компьютерами используют спец серверы, через которые эти ПК соединяются (как для ICQ, Skype).ИП адрес "в мир" есть у обладателей DSL-модемов (наверное - у меня есть), спутникового интернета. Также такой ИП можно купить за денежку (наверное у провайдера).
Надеюсь я ответил на тот вопрос.
---------
Жизнь коротка, чтобы писать на ассемблере
Ответ отправил: Решетник Д (статус: 4-ый класс)
Ответ отправлен: 02.05.2006, 19:18
Оценка за ответ: 5


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

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

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.32 от 03.05.2006
Яндекс Rambler's Top100

В избранное