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

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


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

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

Выпуск № 913
от 02.09.2007, 21:35

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


Вопрос № 99916: Здравствуйте, Уважаемые эксперты!!! Помогите, пожалуйста, найти, в чем ошибка. Программа подсчитывает сумму и произведение чисел, которые вводит пользователь с клавиатуры, после того как будет введен ноль, ввод чисел заканчивается и выводится вы...
Вопрос № 100010: Здравствуйте, уважаемые эксперты! Пожалуйста, помогите мне разобраться с задачей. Дано N точек на плоскости. Выбрать из них три такие, чтобы различались наименьшим образом число точек, лежащих внутри и вне окружности, проходящей через эти три...
Вопрос № 100014: Уважаемые эксперты. Как можно средствами Delphi 7 запретить определение и подключение устройств через USB порты? Заранее спасибо....
Вопрос № 100026: Здравствуйте, уважаемые эксперты. С вставкой текста в Edit всё ясно, однако, возникают сложности с вставкой текста в Edit, находящийся в диалоговом окне. Необходимо вызвать в программе окно «Открыть файл», найти в нём Edit, вставить в найденный E...
Вопрос № 100035: Здравствуйте уважаемые эксперты. Вопрос: Нужно сделать текстовый редактор похожий на Noteрad++(т.е чтобы каждый новый документ открывался в новой вкладке) P.S. Как сделать чтобы у каждой вкладки была своя закрывающая кнопка...

Вопрос № 99.916
Здравствуйте, Уважаемые эксперты!!! Помогите, пожалуйста, найти, в чем ошибка.
Программа подсчитывает сумму и произведение чисел, которые вводит пользователь с клавиатуры, после того как будет введен ноль, ввод чисел заканчивается и выводится вычисление. Но почему-то сумма чисел выводится, а вот произведение чисел все-время равно нулю. Подскажите в чем дело?
Заранее ОГРОМНОЕ СПАСИБО!!!:-)

Приложение:

Отправлен: 27.08.2007, 22:53
Вопрос задала: Алена (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 6)

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

Все достаточно просто, Вы же при вводе числа НОЛЬ автоматически в цикле умножаете произведение на это число, следовательно оно и становиться нулевым. ;)

Вот пример переработанного кода:
Var
x:integer;
Summa: integer;
Proizv:integer;
Begin
Summa:=0;
Proizv:=1;
Writeln ('Введите число');
Readln (x);
while x<>0 do
begin
if x<0 then Continue; {По-моему так будет более правильно :) } Эксперт sir henry
Proizv:=Proizv*x;
Summa:=Summa + x;
Writeln ('Введите число');
Readln (x);
end;
Writeln ('Сумма чисел = ', Summa);
Writeln ('Произведение чисел = ', Proizv);
Readln;
end.


Good Luck!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 27.08.2007, 23:10
Оценка за ответ: 5
Комментарий оценки:
Спасибо!:-) И Вам удачи!!!

Отвечает: Vlad Cepesh
Здравствуйте, Алена!
В данном примере условием выхода из цикла явлется х=0, и по этому произведение всегда будет равно 0. Если необходимо, чтобы сумма и произведение выводились после каждого ввода числа, то необходимо
Writeln ('Сумма чисел = ', Summa);
Writeln ('Произведение чисел = ', Proizv);
Поставить перед
Until x=0;
Ответ отправил: Vlad Cepesh (статус: 3-ий класс)
Ответ отправлен: 28.08.2007, 08:02
Оценка за ответ: 5

Отвечает: Дмитрий С.
Здравствуйте, Алена!
немного подрихтовал Ваш листинг. Должно работать.

P.S. Пишу без компилятора

Приложение:

---------
Наши программисты самые программистые программисты!..

Ответ отправил: Дмитрий С. (статус: 4-ый класс)
Ответ отправлен: 31.08.2007, 15:44
Оценка за ответ: 5


Вопрос № 100.010
Здравствуйте, уважаемые эксперты!
Пожалуйста, помогите мне разобраться с задачей.
Дано N точек на плоскости. Выбрать из них три такие, чтобы различались наименьшим образом число точек, лежащих внутри и вне окружности, проходящей через эти три точки.
Решение задачи оформить в виде проекта на Delphi и представить результат расчета на графике.

Я разбирала похожий пример на визуализацию решения алгоритмической задачи. Он был тоже про три точки на плоскости, но там надо было определить, принадлежит ли начало координат (0,0) треугольнику, образованному этими точками. То есть попроще.

А вот эту про окружность... чего-то не получается эту задачу осознать. Буду очень благодарна за любые советы! Смотрела в книжках, ничего похожего не нашлось. Может вы мне порекомендуете какую-нибудь хорошую подробную книжку на эту тему. Или подскажите, как думать.
Отправлен: 28.08.2007, 17:31
Вопрос задала: Alenkakiss (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 12)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Alenkakiss!
Для начала всегда можно попробовать полный перебор:
N*(N–1)*(N–2)/6 ~ N3
Кубическая сложность — не так уж и ужасно.
перебираете все тройки точек, подставляете их в уравнение:
(x–x0)2 + (y–y0)2 = R2
получаете систему из трех уравнений с тремя неизвестными, решаете ее (это все проделывается аналитически, т.е. на бумажке).
Вычитаете 1-ое из 2-го, получается что-то типа:
(x22–x12) + (x1–x2)*x0 + (y22–y12) + (y1–y2)*y0 = 0
Аналогично, для вычитания 2-го из 3-го. Решаете относительно x0 и y0, затем подставляете их значения в любые из исходных 3-х и получаете значение радиуса.
Получаете формулу для выражения x0, y0 и R через координаты трех точек: (x1; y1), (x2; y2), (x3; y3)
И считаете число точек внутри окружности: (x–x0)2+(y–y0)2 ≤ R2 и вне.
Ну и надо запоминать новый вариант, если он лучше предыдущих. В случае деления пополам или почти поровну (т.е. на n и n+1) можно прерывать поиск.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 28.08.2007, 20:06
Оценка за ответ: 5

Отвечает: Delph
Здравствуйте, Alenkakiss!

Высылаю Вам программу (в приложении) - мои тесты проходит.
Форма у меня называется Form1, на ней лежит картинка TestImage: TImage и кнопка StartButton: TButton. Картинку сделайте квадратной, размер не важен.

Приложение:

---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.

Ответ отправил: Delph (статус: 8-ой класс)
Ответ отправлен: 30.08.2007, 15:20
Оценка за ответ: 5


Вопрос № 100.014
Уважаемые эксперты. Как можно средствами Delphi 7 запретить определение и подключение устройств через USB порты?
Заранее спасибо.
Отправлен: 28.08.2007, 17:55
Вопрос задал: T1000 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Denisss

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

Отключить USB порт можно с помощью утилиты devcon (в Windows XP Pro SP2 данная утилита присутствует по умолчанию, насчет остальных систем гарантировать не могу, скачать ее можно на сайте Microsoft, ссылка указана ранее).

Если нужно отключить все порты USB, то нужно выполнить команду
devcon disable @USB*

Если нужно отключить какой-то определенный порт, то с помощью модуля Registry и класса TRegistry нужно просмотреть раздел
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumUSBROOT_HUB] - здесь хранятся идентификаторы USB портов.

Допустим, Вы здесь обнаружили подраздел с именем "4&10af8b6f&0" - это и есть идентификатор порта. Чтобы его отключить, нужно теперь выполнить команду
devcon disable @USBROOT_HUB4^&10af8b6f^&0

Учтите, что перед каждым знаком & нужно ставить символ ^. (Это можно сделать с помощью функции ReplaceString).

Выполнение команды (точнее, запуск программы devcon.exe с указанными параметрами) можно производить с помощью функций WinExec (модуль Windows) и ShellExecute (модуль ShellAPI). Чтобы пользователь не видел окна сообщений программы devcon, можно ее запускать с параметром SW_HIDE.

Удачи!
Ответ отправил: Denisss (статус: Профессионал)
Россия, Москва
----
Ответ отправлен: 30.08.2007, 10:55


Вопрос № 100.026
Здравствуйте, уважаемые эксперты.
С вставкой текста в Edit всё ясно, однако, возникают сложности с вставкой текста в Edit, находящийся в диалоговом окне. Необходимо вызвать в программе окно «Открыть файл», найти в нём Edit, вставить в найденный Edit имя файла (с полным путем) и нажать кнопку «Открыть». Получается, что когда я нажимаю в главном окне программы кнопку «Открыть файл» при помощи SendMessage(hSp,WM_COMMAND, $1395, 0), то диалоговое окно открывается, но и моя программа «застрявает» на этой строке, пока вручную не закрыть диалоговое окно. Пробовал PostMessage, программа не «застрявает», однако hOd := FindWindowEx(hSp, 0, '#13770 (Dialog)', 'Открыть') ничего не находит. Пробовал менять аргументы FindWindowEx самым разным образом, однако всегда получается hOd = 0. При этом Spy++ диалоговое окно-то видно. Не могу найти HWND диалогового окна, поэтому не могу найти и дочерние окна Edit и Button.
Подскажите (для не программиста), есть ли какие-то особенности работы с диалоговыми окнами и как можно решить получившуюся задачу? За код буду особо благодарен.
Отправлен: 28.08.2007, 20:50
Вопрос задал: Зорин Владимир Вадимович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: chikanok
Здравствуйте, Зорин Владимир Вадимович!
Тож не особо понимаю ваш вопрос!
Попробуйте между PostMessage и FindWindowEx сделать паузу!
Sleep(время в милисекундах);
Начните лучше с 500мс.
А в параметрах поиска вы уверены?!

Приложение:

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

Ответ отправил: chikanok (статус: 4-ый класс)
Ответ отправлен: 28.08.2007, 23:28
Оценка за ответ: 4


Вопрос № 100.035
Здравствуйте уважаемые эксперты.
Вопрос: Нужно сделать текстовый редактор
похожий на Noteрad++(т.е чтобы каждый новый документ открывался в новой вкладке)
P.S. Как сделать чтобы у каждой вкладки была своя закрывающая кнопка
Отправлен: 28.08.2007, 21:27
Вопрос задал: Badanin (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: chikanok
Здравствуйте, Badanin!

Перенесено в мини-форум

Denisss

---------
Главное желание,а там разберёмся!
Ответ отправил: chikanok (статус: 4-ый класс)
Ответ отправлен: 28.08.2007, 23:32


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.58 от 30.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное