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

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


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

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

Чемпионы рейтинга экспертов в этой рассылке

Шичко Игорь
Статус: Практикант
Рейтинг: 124
∙ повысить рейтинг >>
6a3uJI
Статус: 7-й класс
Рейтинг: 84
∙ повысить рейтинг >>
Andersen
Статус: 6-й класс
Рейтинг: 75
∙ повысить рейтинг >>

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

Выпуск № 1268
от 29.12.2008, 02:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 409, Экспертов: 48
В номере:Вопросов: 3, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 155420: Здравствуйте!!! Посмотрите пожалуйста, что в этом коде не так: <div style="margin:15px; margin-top:10px"><div><b><font color="gray">Код:</font></b></div><pre style="margin: 0px; padding: 6px; border: 1px inset; width: 650px; height: 100px;...


Вопрос № 155447: Здравствуйте! Хочу понять следующий момент. Из процедуры, назовем ее f1, вызывается подпрограмма f2. Из f2, в зависимости от условия вызывается либо f3, либо f4. Но это условие (предположим, оно громоздкое) определяется в f1. Как м...
Вопрос № 155541: Здраствуйте. Подскажите примером или советом. Как можно узнать что запущено новое приложение или закрылось старое, список приложений хранится в ListBox'е. варианты с постояными проверками неподходят, думаю можно поставить хук, но незнаю какой...

Вопрос № 155.420
Здравствуйте!!! Посмотрите пожалуйста, что в этом коде не так:


Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
Tfrm = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
frm: Tfrm;

implementation

{$R *.dfm}

procedure Tfrm.Button1Click(Sender: TObject);
var
res : real;
i : integer;
begin

try
res := StrToFloat(Edit1.Text);
i := round(res);

Label1.Caption := IntToStr(i);

except
Label1.Caption := 'Ошибка';

end;
end;

end.


Это программа для округления действительного числа в целое с помощью механизма обработки исключительных ситуаций. Код компилируется, но в результате выполнение - ошибка.
Отправлен: 22.12.2008, 22:28
Вопрос задал: Николай // Programmator (статус: 5-й класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 12)

Отвечает: Andersen
Здравствуйте, Николай // Programmator !
Данный код работает нормально, проверял!
Все дело в том что если запускать из компилятора он действительно приостанавливает работу программы и выдает код ошибки. после этого можно продолжить выполнение программы.
А если запускать сформированный exe файл то эта ошибка не выдается
Ответ отправил: Andersen (статус: 6-й класс)
Ответ отправлен: 23.12.2008, 09:59

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 239392 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    А... Понял, Спасибо за помощь!!!


    Вопрос № 155.447
    Здравствуйте!
    Хочу понять следующий момент.
    Из процедуры, назовем ее f1, вызывается подпрограмма f2.
    Из f2, в зависимости от условия вызывается либо f3, либо f4.
    Но это условие (предположим, оно громоздкое) определяется в f1.

    Как можно в процедуру f2 (из f1) передать адрес на f3 или f4, и затем выполнить ту или другую.

    Конечно, для начинающих напрашивается простое решение с передачей некоторой булевской переменной, и в зависимости от нее происходит вызов либо f3, либо f4.
    Хотелось бы научиться программировать более профессионально с передачей адресов. Собственно, я предполагаю, как получить адрес через @. Но никак не соображу, как потом вызвать процедуру по адресу, ведь обычно чтобы вызвать - пишем ее имя.
    Отправлен: 23.12.2008, 06:57
    Вопрос задал: Бартосик Феликс Михайлович (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 7)

    Отвечает: PavelGM
    Здравствуйте, Бартосик Феликс Михайлович!

    Если у вас процедуры с одинаковым списком параметров (а так оно обычно и бывает), то описываете процедурный тип, например, TMyProc = procedure(A : Integer); а свою f2 как procedure f2(MyProc : TMyProc). В f1 вызывавем f2(f3) либо f2(f4). А внутри f2 - используем просто в лоб MyProc(a).

    P.S. После прочтения вашей дискуссии в минифоруме полагаю это именно то, что вы спрашивали. В плюсах такого подхода (по сравнению с передачей просто указателей - хотя могу и такой "непрофессиональный" или "суперпрофессиональный" вариант описать - иногда приходится делать) еще и то, что компилятор проверит типы процедур на соответствие - что оградит от "глупых" ошибок.
    Ответ отправил: PavelGM (статус: Практикант)
    Ответ отправлен: 23.12.2008, 10:57

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 239400 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Спасибо большое, в данном случае это именно то, что мне нужно!


    Вопрос № 155.541
    Здраствуйте.
    Подскажите примером или советом. Как можно узнать что запущено новое приложение или закрылось старое, список приложений хранится в ListBox'е. варианты с постояными проверками неподходят, думаю можно поставить хук, но незнаю какой и как. Буду благодарен за любой ответ.
    Отправлен: 23.12.2008, 22:05
    Вопрос задал: Dimon007 (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 0)

    Отвечает: DORMICE
    Здравствуйте, Dimon007!

    Можно попробовать поставить хук на создание окон в системе: WH_CBT (событие HCBT_CREATEWND).

    Пример хук-процедуры привожу в приложении...
    Ставить также как и любой другой хук:

    ...
    var
    HookHandle: THandle;
    ...

    //Устанавливаем хук:
    HookHandle := SetWindowsHookEx(WH_CBT, @HookWndProc, HInstance, 0);

    //А так снимаем:
    UnhookWindowsHookEx(HookHandle);
    ...

    Чтобы хук отрабатывал глобально, его требуется оформить в виде DLL. по данному вопросу в сети куча материалов (те же клавиатурные шпионы).

    Приложение:

    Ответ отправил: DORMICE (статус: 1-й класс)
    Ответ отправлен: 24.12.2008, 09:56

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 239496 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    спасибо. но если у программы нет окна или она запускатся скрыто, то её поймать не получиться. я пишу что то вроде Диспетчера задач виндовского, и для этого приходится постояно знать что запущено.....


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

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

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

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

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

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


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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное