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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1089
от 11.03.2008, 19:05

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

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


Вопрос № 126140: Здравствуйте, эксперты. Я хочу написать программу для перевода комплексных чисел из алгебраической формы в экспоненциальную. На форме 4 TEdit, а события происходят по отпусканию клавиш. Хочется сделать программу без кнопок, чтобы переводила из одной ...
Вопрос № 126172: Здравствуйте, вопрос конечно может и простой, но все же подскажите: Мне нужно задать чтобы при нажатии на кпопку, чтобы открывалась определеная програма. 2. И еще это по сложнее ) При нажатии на кнопку чтобы генеривовались случайным обра...

Вопрос № 126.140
Здравствуйте, эксперты. Я хочу написать программу для перевода комплексных чисел из алгебраической формы в экспоненциальную. На форме 4 TEdit, а события происходят по отпусканию клавиш. Хочется сделать программу без кнопок, чтобы переводила из одной в другую формы одновременно (ввел первое число, получил в двух других TEdit результат, подправил этот результат, значения изменились в первых окошках). Написал функцию для контроля ввода вещественных чисел, но все равно вылетаю ошибки. Может кто-нибудь подправить программу и указать мне на ошибки?

Приложение:

Отправлен: 05.03.2008, 20:01
Вопрос задал: Марков Александр Сергеевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Delph
Здравствуйте, Марков Александр Сергеевич!

У меня две идеи для Вас. Первое: подключить Ваши Edit'ы на событие OnExit - оно происходит, когда компонент теряет фокус. Создайте один обработчик этого события для перевода из алгебраической формы в экспоненциальную, а второй - для обратного перевода. На каждый из обработчиков подключите соответствующие Edit'ы. Для этого выделите сначала первую пару Edit'ов (чтобы выделить сразу несколько компонентов, зажмите клавишу Shift, а мышкой щёлкните по нужным компонентам), после чего в инспекторе объектов на вкладке Events сделайте двойной щелчок по событию OnExit. В редакторе кода сможете запрограммировать первый обработчик. Повторите те же действия для второй пары Edit'ов.

Второе: в Delphi определена конструкция:
try
{набор операторов для нормального выполнения программы}
except
{набор операторов для обработки исключения, т.е. ошибки времени выполнения}
end;

В приложении я привел пример того, как может выглядеть функция для проверки корректности ввода; как видите, она значительно проще и короче той, что у Вас, поскольку используется стандартная функция преобразования String ==> Float. Если же стандартная функция выбрасывает исключение, то оно тут же и перехватывается, а программа узнаёт о некорректном вводе.

Приложение:

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

Ответ отправил: Delph (статус: Студент)
Ответ отправлен: 06.03.2008, 09:00
Оценка за ответ: 3
Комментарий оценки:
Не работаю блоки, как ни крути!

Отвечает: Sosedov A.I.
Здравствуйте, Марков Александр Сергеевич!

Я заменил в Вашей программе Вашу процедуру проверки ввода числа на функцию TryStrToFloat библиотеки SysUtils. Расчетную процедуру поместил в обработчики событий OnChange полей ввода Edit1 и Edit2. Кнопка Button1, конечно, не нужна, просто мы сами вызываем обработчик ее нажатия. Вот что получилось (см. приложение).

Приложение:

Ответ отправил: Sosedov A.I. (статус: 3-ий класс)
Ответ отправлен: 06.03.2008, 09:20
Оценка за ответ: 5
Комментарий оценки:
Получилось отлично!:))


Вопрос № 126.172
Здравствуйте, вопрос конечно может и простой, но все же подскажите:
Мне нужно задать чтобы при нажатии на кпопку, чтобы открывалась определеная програма.

2. И еще это по сложнее ) При нажатии на кнопку чтобы генеривовались случайным образом 0,1. Все это чтобы записывалось желательно в встроку. т.е мне нужно получить например 010010010111 вот такую строку, сравнить с заданой, и чтобы далше выполнялось действие. но еще 1 момент задать количество чисел случайно сгенерированых (0 и 1) я должен сам, захотел 6 или 10.
Всем кто поможет буду благодарен.
Заранее спасибо.
Отправлен: 06.03.2008, 00:32
Вопрос задал: Makavely (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: MaratM
!!!
Здравствуйте, Makavely!
1)есть комманды ShellExecute или WinExec с их помощью можно запускать программы либо открывать файлы типа txt bmp связанными порграммами.
if ShellExecute(h, 'open', 'readme.txt', nil, nil, SW_SHOW) < 32 then
begin
ShowMessage('Error ShellExecute !')
end;
или
if WinExec('Notepad c:config.sys', SW_SHOW) < 32 then
begin
ShowMessage('Error WinExec !')
end;
2)

var
I: Integer;
s: string;
begin
s:='';
for I := 1 to 6 do
begin
s:=s+inttostr(random(2));
end;
end;

цикл до 6 это количество цифр, s это выходная строка
еще можно добавить в начале randomize;
чтобы всегда были разные результаты

Microsoft в своих документах не рекоммендует использовать WinExec(), поэтому лучше использо вать Shellexecute().
-----
∙ Отредактировал: sir henry (Академик)
∙ Дата редактирования: 06.03.2008, 05:34
Ответ отправил: MaratM (статус: 1-ый класс)
Ответ отправлен: 06.03.2008, 02:01
Оценка за ответ: 5
Комментарий оценки:
спасибо за помощь..

Отвечает: SHERRY
Здравствуйте, Makavely!
Функция сгенерирует Вам желаемую последовательность длиной, указанной в качестве входящего параметра.

Приложение:

---------
Самурай без меча подобен самураю с мечём, только без меча..

Ответ отправил: SHERRY (статус: 7-ой класс)
Ответ отправлен: 06.03.2008, 08:41

Отвечает: Genia007
Здравствуйте, Makavely!
1),
Запустить программу можно функцией:
ShellExecute(Handle, 'open', 'имя программы с полным путём', nil, nil, SW_ShowNormal);
2).
Вот накидал за пять минут этот код, работает как Вам нужно:
procedure TForm1.Button13Click(Sender: TObject);
var i, n, y: word; s, s1: String;
begin
s1:='010010'; {Ваша заданная строка}
s:='';
{Randomize; Лучше поставить в Form.Create, инициализация генератора чисел}
n:= StrToInt(Edit2.Text); {Присвоили количество цифр в строке, не забыть в Edite выставить изначально любое число}
For i:= 1 to n do {Цикл по получению строки}
begin
y:= random(2); {Случайное число в диаапазоне 0,1}
insert(IntToStr(y), s, Length(s)); {Вставили число в конец строки}
end;
If s = s1 then {Сравниваем строку с заданной и если совпала то звуковой сигнал}
beep;
Edit2.Text:= s; {Вывели получившуюся строку}
end;
Ответ отправил: Genia007 (статус: 7-ой класс)
Ответ отправлен: 06.03.2008, 12:33
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо, за быструю помощь!


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

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

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

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

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

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


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


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

В избранное