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

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


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

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

Выпуск № 508
от 20.06.2006, 10:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 362, Экспертов: 67
В номере:Вопросов: 5, Ответов: 12


Вопрос № 46190: Здравствуйте, уважаемый эксперты!Задам совсем простой вопрос:как a:Integer возвести в квадрат? Пробовал так a^2 но что-то не получается......
Вопрос № 46202: что надо написаиь, чтобы на панели инструментов internet explorer'a появилась кнопка программы и что б она копировала исходный адрес интернета в специальное поле (менеджер закладок) ...
Вопрос № 46217: Существует ли какая-нибудь функция (вернее, in-line подстановка, макрос,...), которая бы возвращала номер строки, где она написана? Нужно что-то вроде: try ... except on e: Exception do writeLog('Unit1: Ошибка ' + e.Message + ...
Вопрос № 46276: Здравствуйте, уважемые эксперты! Подскажите, пожалуйста, как написать функцию, которая принимает параметры: название и имя процедуры, и создает пункт меню(MenuItem) с этими параметрами? И как сделать функцию "дочернего" пункта меню? Наверня...
Вопрос № 46283: Здравствуйте Уважаемые Эксперты! Как сделать так чтобы Delphi записывала(никого не спрашивая) файлы на CD -DVD диски....

Вопрос № 46.190
Здравствуйте, уважаемый эксперты!Задам совсем простой вопрос:как a:Integer возвести в квадрат? Пробовал так a^2 но что-то не получается...
Отправлен: 14.06.2006, 11:35
Вопрос задал: Ustas (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Ustas!

Для возведения в квадрат лучше a*a, а в общем случае - использовать функцию Power из модуля Math: Power(a, 2)
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 4-ый класс)
Ответ отправлен: 14.06.2006, 11:40
Оценка за ответ: 5

Отвечает: romodos
Здравствуйте, Ustas!
Добавлю лишь, что есть еще функция sqr(a)
---------
The Source is Our Soul. FAQ me off!
Ответ отправил: romodos (статус: Специалист)
Ответ отправлен: 14.06.2006, 11:42
Оценка за ответ: 4

Отвечает: Gh0stik
Здравствуйте, Ustas!

Вопрос из серии нужно прочитать книгу....

Но все-таки есть несколько способов возведения в степень:
1) a*a - квадрат числа a
2) sqr(a) - квадрат числа a
3) exp(n*ln(a)) - возведение число a в степень n (при a > 0)
4) используя функцию Power(a,n), при подключении модуля Math (uses Math);

Удачи!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 14.06.2006, 11:47
Оценка за ответ: 5


Вопрос № 46.202
что надо написаиь, чтобы на панели инструментов internet explorer'a появилась кнопка программы и что б она копировала исходный адрес интернета в специальное поле (менеджер закладок)
Отправлен: 14.06.2006, 14:00
Вопрос задал: Ghora (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Ghora!
Первый же запрос в Яндексе: "своя кнопка в internet explorer" выдает страницу с кодом - он в приложении.

Приложение:

Ответ отправил: Сухомлин Кирилл Владимирович (статус: 10-ый класс)
Ответ отправлен: 14.06.2006, 14:16

Отвечает: chikanok
Здравствуйте, Ghora!
Вам ответили как сделать кнопку!
А вот вам как получить адресс из активного окна iexplorer`a !
Т.к. мне ничего не известно о вашем "специальном поле", адресс просто ввыводится в Сообщении (MessageBox)!
Удачи!

Приложение:

---------
Главное желание,а там разберёмся!

Ответ отправил: chikanok (статус: 2-ой класс)
Ответ отправлен: 14.06.2006, 17:07


Вопрос № 46.217
Существует ли какая-нибудь функция (вернее, in-line подстановка, макрос,...), которая бы возвращала номер строки, где она написана?
Нужно что-то вроде:
try
...
except
on e: Exception do writeLog('Unit1: Ошибка ' + e.Message + ' в строчке' + intTOStr(номер текущей строки')
end;

Есть ли такая?
Отправлен: 14.06.2006, 16:45
Вопрос задал: mvp (статус: Студент)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Ерёмин Андрей
Здравствуйте, mvp!
На мой взгляд, это невозможно, т.к. после компиляции кода как такового не остаётся - не остаётся и строчек - всё уже в закодированном виде. Однако при запуске из-под Delphi при возникновении ошибки он сам ставит курсор на место ошибки.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 14.06.2006, 16:54

Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, mvp!
Согласен с Ерёминым Андреем: после компиляции строчек не остется. Остаются инструкции процессору, поэтому стандартной функции не существует.
А Вы уверены в том, что "drweb вылетел и в ошибке был указан модуль и номер строчки ошибки" был указан именно номер строки ошибки, а не номер ошибки?

Предложение таково: создаешь числовую переменную ErrLineNumber. Перед каждой строкой с потенциальной ошибкой (или если не лень перед каждой строкой) присваиваешь этой переменной какое-то значение (номер).

Далее
try
ErrLineNumber:=1; .... {Первая строка с командами}
ErrLineNumber:=2; .... {Вторая строка с командами}
....
except
on e: Exception do writeLog('Unit1: Ошибка ' + e.Message + ' в строчке' + intTOStr(ErrLineNumber)
end;

Удачи!
---------
Ответы на все вопросы - на сайте www.ya.ru
Ответ отправил: Устинов Сергей Евгеньевич (статус: Студент)
Ответ отправлен: 14.06.2006, 21:46

Отвечает: Лучников Ю.В.
Здравствуйте, mvp!

Есть вариант, но с оговоркой. Впрочем по-порядку:

В Delphi предусмотрен отладочный механизм Assert().

procedure Assert(expr : Boolean [; const msg: string]);

В случае, если выражение expr ложно, то данная процедура вызывает исключение EAssertionFailed.

Вот тут нам и поможет обработчик данного исключения, который предоставляет нам расширенную информацию.

Прототип обработчика:
procedure AssertErrorHandler(const Message, Filename: string; LineNumber: Integer; ErrorAddr: Pointer);
Где:
Message - произвольная строка, переданная через Assert() вторым параметром;
Filename - Имя модуля, где произошло исключение EAssertionFailed;
LineNumber - номер строки в модуле Filename, где вызвано данное исключение;
ErrorAddr - Адрес инструкции, на которой произошел вызов обработчика.


Почему с оговоркой: да потому, что номер строки будет указывать на строку, в которой произошел вызов Assert(). По мне, дак это не проблема, ибо дислоцировать ошибку будет просто (она будет находиться где-то рядом).

В примере приведен рабочий код тестового модуля... Обработчик переопределен.
Успехов!

Приложение:

Ответ отправил: Лучников Ю.В. (статус: *Мастер-Эксперт)
Россия, Киров
WWW: нЧат - Наш Чат!
ICQ: 176308580
----
Ответ отправлен: 15.06.2006, 00:45
Оценка за ответ: 5


Вопрос № 46.276
Здравствуйте, уважемые эксперты! Подскажите, пожалуйста, как написать функцию, которая принимает параметры: название и имя процедуры, и создает пункт меню(MenuItem) с этими параметрами? И как сделать функцию "дочернего" пункта меню? Наверняка у кого-то был опыт написания потобного. Если нетрудно, поделитесь, пожалуйста. Заранее благодарен!
Отправлен: 15.06.2006, 05:42
Вопрос задал: Андрющенко Вячеслав Васильевич (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Олекса aka SoW
Здравствуйте, Андрющенко Вячеслав Васильевич!
Возможно я вас неправильно понял. Функции, которые поданы в дополнении, создают соответственно дочерний и обычный пункт меню. Они возвращают созданный пункт, и его можно использовать в дальнейшем. Чтобы назначить пункту обработчик события, например на щелкание мишой, нужно написать item.OnClick:=ProcName, где ProcName - имя процедуры, что будет обрабатывать сообщение.

Код программы подан в дополнении, думаю, там все должно быть понятно (если возникнут вопросы - обращайтесь, буду рад помочь).

Приложение:

---------
Вік живи - вік учись.

Ответ отправил: Олекса aka SoW (статус: 2-ой класс)
Ответ отправлен: 15.06.2006, 09:39
Оценка за ответ: 5

Отвечает: Проходящий Мимо
Здравствуйте, Андрющенко Вячеслав Васильевич!
Если попроще, посмотрите ответ №42491. Если нужно динамически привязывать событие обработки пунктов меню в соответствии с текстовой командой (как задаются команды для меню и кнопок панели инструментов в TotalCommander), то в дополнению к даному Вам ответу №44359 в приложении описываю мой вариант реализации привязки процедуры к событию OnClick пункта меню.
Удачи!

Приложение:

---------
Carpe diem!

Ответ отправил: Проходящий Мимо (статус: 5-ый класс)
Ответ отправлен: 15.06.2006, 09:51

Отвечает: Serg_6667
Здравствуйте, Андрющенко Вячеслав Васильевич!

На самом деле все просто. Создается run-time главное меню, а потом уже к массиву items присоединяються другие пункты меню.

Приложение:

Ответ отправил: Serg_6667 (статус: 2-ой класс)
Ответ отправлен: 15.06.2006, 10:45


Вопрос № 46.283
Здравствуйте Уважаемые Эксперты!
Как сделать так чтобы Delphi записывала(никого не спрашивая) файлы на CD -DVD диски.
Отправлен: 15.06.2006, 09:09
Вопрос задал: Исаков Евгений Владимирович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Савенко Вадим Иванович
Здравствуйте, Исаков Евгений Владимирович!
Если у Вас установлена Nero, то смотрите возможности файла nerocmd.exe
( в командной строке наберите nerocmd.exe /?) с полным путем к нему, естественно. А если нет - то вопрос сложный... Можно встроить в программу какую-нибудь из простеньких бесплатных писалок или найти компонент какой-нибудь.
Ответ отправил: Савенко Вадим Иванович (статус: 2-ой класс)
Ответ отправлен: 15.06.2006, 09:55
Оценка за ответ: 4


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное