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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 320
от 10.12.2005, 17:24

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


Вопрос № 30772: Здрасвуйте! Подскажите, пожалуйста, имеются два модуля в одном из них просходит расчет данных и занесение их в динамический массив. Во втором построение графика с помощью Chart. Массив описан след. образом: Unit1 Var PP: array of...
Вопрос № 30784: Подскажите, пожалуйста как сохранять данные в MS Word. И можно ли сделать так, чтобы уже была готовая форма например: Максимальное давление: 350 Время пути: 0,001 с Масса: 380 г Где 350; 0,001; 380 это данные полученные в программе.<b...
Вопрос № 30793: Доброго времени суток господа Эксперты!!! Мой вопрос: Как конвектировать avi формат в dat формат программным путем???? Может есть какие-то программки которые это делают???? Зарание спасибо за помощь!!! С Уважением,<...
Вопрос № 30797: Подскажите, пожалуйста как сохранять полученные данные в MS Word и можно ли сохранять их уже в готовый бланк. Т.е. чтобы при отрытии в Word'е мы видели: Максимальное давление 300 Время 0,001 Масса 348 где 300; 0,001; 348 - это получен...
Вопрос № 30808: Здраствуйте! Можно-ли узнать HOST (его название) на котором запущена программа?! Сделать это в делфи! Для последующей генерации ХТМЛ! И ещё PageProducer меняет тэги на какую-либо информацию(например время), а может ли он вместо тэга вставить ...
Вопрос № 30812: Здравствуйте господа! Натолкнулся на не понятное поведение ADOQuery :( помогите, если знаете... Ситуация следующая - запускаю запрос (0) в MSAccess - выполняется как надо (1), запускаю через свзяку ADO получаю результат (2) сгруппир...
Вопрос № 30824: Ув Эксперты! Возможно это будет и не лепый вопрос но у вы? у меня проблемы с генератором случайных чисел. Он у меня всё время повторяет числа как можно сдлеать чтоб он не повторял числа. я использовал примерно такое for i:=1 to 10 do <br...
Вопрос № 30829: Вопрос: На форме имеется объект Timage, есть обработчик события onclick. И так как сделать так чтобы обработчик срабатывал только при нажатии на видимую область изображентя (tranparent=true)?...

Вопрос № 30.772
Здрасвуйте!
Подскажите, пожалуйста, имеются два модуля в одном из них просходит расчет данных и занесение их в динамический массив. Во втором построение графика с помощью Chart. Массив описан след. образом:
Unit1

Var
PP: array of extended;
TT: array of extended;
...
..
...

procedure rascet;

implementation

procedure rascet;
begin
repeat
...
...
...
dp:=(f*domegagp+pi*d1*l)*p*h/R-k*p*dW)/W;
p:=p+dp;
PP[i]:=p;
t:=t+h;
TT[i]:=t;
i:=i+1;

и т.д.

Unit2
В этом модуле вызывается модуль Unit 1. И ....
repeat
rascet;

form3.Series1.AddXY(TT[i],PP[i]);
i:=i+1;
В результате работы получаем сообщение об ошибке: Project Project1.exe raised exception class EInvalidOp with message 'Invalid floating point operation'. Process stopped. Use Step or Run continue.
Отправлен: 04.12.2005, 18:30
Вопрос задала: Артемова Марина (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Артемова Марина!
Из Вашего кода не ясно где ошибка выскакивает. Шлите весь код либо сюда, либо мне на xlcoder@mail.ru
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 04.12.2005, 18:45

Отвечает: Архангельский Андрей Германович
Здравствуйте, Артемова Марина!

1) Он написал "Неправильная операция в плавающей точкой, Используй по шагам для продолжения". Не грех послушаться и посмотреть а в какой строке ошибка.
2) Коде приведено куча неизвестных переменных, которые могут вызвать эту ошибку.
3) Неизвестно что такое
form3.Series1.AddXY(TT[i],PP[i]);
скорее всего AddXY - имеет параметры Integer, а не extended
4) И, наконец, при разработке сложных вычислений, не грех завести систему отладки в виде протокола, чтобы распечатывала состояние переменных.
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 04.12.2005, 18:47

Отвечает: Romodos
Здравствуйте, Артемова Марина!
Обычно такле сообщение выскакивает, если вы делите на ноль. Поищите, где у вас может такое появится
Возможно тут.
dp:=(f*domegagp+pi*d1*l)*p*h/R-k*p*dW)/W;

Вообще, код останавливается на строчке, где вылетел.
Просто поставьте брейкпоинт и трассируйте программу по F7. Тогда узнаете где ошибка
---------
FAQ me off!
Ответ отправил: Romodos (статус: Студент)
Отправлен: 04.12.2005, 18:47

Отвечает: sir henry
Здравствуйте, Артемова Марина!
Это означает: "Недопустимая операция с числом с плавающей точкой". Строка где ошибка у Вас должна быть выделена в окне с исходником IDE. Смотрите сами. Из кода, приведенного Вами, невозможно что-либо понять.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 04.12.2005, 18:48

Отвечает: Schmak
Здравствуйте, Артемова Марина!
'Ошибка при вычислениях с плавающей запятой'.
А в каком месте собственно возникает ошибка. При появлении ошибки соответствующая строка должна быть выделена.

---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 04.12.2005, 20:14

Отвечает: Master135
Здравствуйте, Артемова Марина!
Наверняка тут dp:=(f*domegagp+pi*d1*l)*p*h/R-k*p*dW)/W; деление на ноль
---------
И пусть кто-то скажет что я не прав....
Ответ отправил: Master135 (статус: Студент)
Отправлен: 04.12.2005, 20:16


Вопрос № 30.784
Подскажите, пожалуйста как сохранять данные в MS Word. И можно ли сделать так, чтобы уже была готовая форма например:
Максимальное давление: 350
Время пути: 0,001 с
Масса: 380 г
Где 350; 0,001; 380 это данные полученные в программе.
Т.е. можно ли не писать через writeln слова: Максмальное давление, Время пути, Масса...
Отправлен: 04.12.2005, 22:33
Вопрос задала: Артемова Марина (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Артемова Марина!
Не совсем понятно:
- Вы хотите сохранить документ Word из своей программы?
- Вы хотите передать данные в документ Word?
-------------------
Сделайте шаблон-документ, где уже присутствуют все те слова, которые Вам необходимы и никогда не изменяются, а потом этот шаблон подгружайте:
WordApplication1.Documents.Open(FileName,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam);
где FileName - имя вашего файла-шаблона.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 05.12.2005, 07:55


Вопрос № 30.793
Доброго времени суток господа Эксперты!!!

Мой вопрос:
Как конвектировать avi формат в dat формат программным путем????
Может есть какие-то программки которые это делают????

Зарание спасибо за помощь!!!

С Уважением,
Ujin Antikvar!!!
Отправлен: 05.12.2005, 00:48
Вопрос задал: Ujin Antikvar (статус: 4-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Ujin Antikvar!
Для Вашего сведения:
avi и dat - это не формат файла, а всего лишь его расширения.
avi может быть как сжатым, так и не сжатым. Сжатие может быть выполнено по разным алгоритмам. Ну а расширение dat - это вообще универсальное расширение для файлов с данными. Так что для начала точно определитесь из чего и во что Вы хотите конвентировать, а потом уже задайте конкретный вопрос.
На счет програмок - обратитесь в соответствующую рассылку, а еще лучше - воспользуйтесь яндексом или гуглом.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 05.12.2005, 07:59
Оценка за ответ: 2
Комментарий оценки:
Ну вопервых если говорится о avi и dat вместе то подрузумиваются видео расширения. А вовторых мне нужно переконвектировать из avi в dat.

Отвечает: Vadim Vitomsky
Здравствуйте, Ujin Antikvar!
Вообще-то для этого лучше использовать специализированное ПО. Лично я в этом случае пользуюсь Nero - создаю новый видеоСД, который пишу на виртуальный диск, а потом просто копирую с этого диска полученный dat-файл.
А еще можно попробовать программу VirtualDub, хотя я пока ее не пробовал.
Ответ отправил: Vadim Vitomsky (статус: 5-ый класс)
Отправлен: 05.12.2005, 11:40

Отвечает: Ataman N. N.
Здравствуйте, Ujin Antikvar!
Обычно такое делают программы для записи видео в формате VCD на CD. (Nero, NTI CD Maker и т.д.), но это может занять много времени (от 30 мин до 1-2 часов, а может и дольше).
Ответ отправил: Ataman N. N. (статус: 3-ий класс)
Отправлен: 05.12.2005, 19:01

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Ujin Antikvar!

Вопрос задан неточно. Что вы понимаете под .dat форматом? Он может быть каким угодно.
Ответ отправил: Лучников Юрий Владимирович (статус: 3-ий класс)
Отправлен: 06.12.2005, 14:31


Вопрос № 30.797
Подскажите, пожалуйста как сохранять полученные данные в MS Word и можно ли сохранять их уже в готовый бланк. Т.е. чтобы при отрытии в Word'е мы видели:
Максимальное давление 300
Время 0,001
Масса 348
где 300; 0,001; 348 - это полученные в программе данные.
А слова максимальное давление, время, масса не писать через writeln.
Отправлен: 05.12.2005, 03:23
Вопрос задала: Артемова Марина (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Tsechoev Bagaudin
Здравствуйте, Артемова Марина!
Создаешь шаблон Word, в Delphi создаешь новый документ на основе этого шаблона. Естестсвенно в шаблоне все уже готово насчет оформления и нужно только заменить некоторые объявленные нами переменные, реальными данными. К примеру Replace MaxDav, 300. Лучше всего узнать про методы Word или др. офисных продуктов, через запись макросов, совершаешь необходимые действия, останавливаешь запись, переходишь в редактор VB и смотрешь, что вызывалось и как.
Удачи!
---------
Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: Студент)
Отправлен: 05.12.2005, 05:31

Отвечает: Архангельский Андрей Германович
Здравствуйте, Артемова Марина!

Есть хороший компонент EKRTF, который выводит данные в шаблон, описание в приложении.
С другой стороны файл rtf можно легко сгенерировать самому

Приложение:

Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 05.12.2005, 10:19

Отвечает: Vadim Vitomsky
Здравствуйте, Артемова Марина!
Лучше всего использовать дополнительные компоненты от сторонних разработчиков. Я выкачал себе несколько таких на сайте www.torry.net
Ответ отправил: Vadim Vitomsky (статус: 5-ый класс)
Отправлен: 05.12.2005, 11:42

Отвечает: Vbhjndjhtw
Здравствуйте, Артемова Марина!
Мариночка, есть вот такой интересный исходничек:
P.S. Если что неясно пишите на rdo04@bk.ru

Приложение:

---------
Бороться и искать, найти и перепрятать!

Ответ отправил: Vbhjndjhtw (статус: 6-ой класс)
Отправлен: 06.12.2005, 12:41


Вопрос № 30.808
Здраствуйте!
Можно-ли узнать HOST (его название) на котором запущена программа?! Сделать это в делфи! Для последующей генерации ХТМЛ!
И ещё PageProducer меняет тэги на какую-либо информацию(например время), а может ли он вместо тэга вставить большой текст с разметкой конечно?! Или есть другой компонент для этого?!
Отправлен: 05.12.2005, 09:50
Вопрос задал: chikanok (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, chikanok!
1. Название хоста можно узнать с помощью функции GetHostName().
Ответ отправил: sir henry (статус: Академик)
Отправлен: 05.12.2005, 10:19


Вопрос № 30.812
Здравствуйте господа!

Натолкнулся на не понятное поведение ADOQuery :( помогите, если знаете...

Ситуация следующая - запускаю запрос (0) в MSAccess - выполняется как надо (1), запускаю через свзяку ADO получаю результат (2) сгруппированный по строчно.

В приложении запрос и что получается и что хочется.
Может надо какие то настройки сделать, чтобы Дельфи не сортировала сама?

Приложение:

Отправлен: 05.12.2005, 11:17
Вопрос задал: LanK (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, LanK!
У Вас есть явное указание на сортировку - ORDER BY. Вы что, сами этого не видите? Дельфи сортирует исключительно ПО ВАШЕМУ УКАЗАЕИЮ.
Только не надо говорить что в Access все выполняется как Вам хочется с тем же запросом. M$ - глюковина еще та и было бы лучше, если Вы прочитаете стандарты на язык SQL и какой-нибудь учебник по этому языку и будете придерживаться стандарта.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 05.12.2005, 11:58

Отвечает: Татьяна
Здравствуйте, LanK!
Просто Order By выполняется сразу ко всему выражению, а не к части как вы хотите, возможно помогут скобки, хотя, насколько я помню Delphi их не очень хорошо воспринимает (если вообще воспринимает, но попробовать наверное стоит). На сколько я помню, именно по этой причине я в свое время ушла от union, возможно и вы найдете другой путь.
Не знаю, помогла ли вам, но желаю удачи!!!
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 9-ый класс)
Отправлен: 05.12.2005, 21:17


Вопрос № 30.824
Ув Эксперты!
Возможно это будет и не лепый вопрос но у вы?
у меня проблемы с генератором случайных чисел.
Он у меня всё время повторяет числа как можно сдлеать чтоб он не повторял числа. я использовал примерно такое for i:=1 to 10 do
begin a[i]:=random(10); end; я вписывал в массив числа от 1 до 10 беспорядочно как это сделать? с/у Ера
Отправлен: 05.12.2005, 13:31
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 10
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Маренич Владимир
Здравствуйте, ERA!
Перед использованием random(n) используйте процедуру Randomize

Приложение:

Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 05.12.2005, 13:47

Отвечает: Golden Spider
Здравствуйте, ERA!
Перед использованием функции RANDOM, используйте randomize. И числа не будут повторяться.
randomize;
for i:=1 to 10 do
begin a[i]:=random(10);
end;
---------
Знания ничто! Хорошие знания Всё!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 05.12.2005, 14:10

Отвечает: sir henry
Здравствуйте, ERA!
На самом деле это генератор не случайных, а псевдослучайных чисел. Вам нужно было просто посмотреть в хелпе, как его правильно использовать.
Сначала нужно его просто-напросто запустить такой процедурой:
Randomize;
запускается он один раз, а потом можно генерировать как бы случайные числа и они будут разные:
Random; {Генерирует от 0 до 1}
Random(x); {Генерирует от 0 до Х}
Тем не менее повторения все равно до конца не избежать, поэтому, если Вы хотите соблюсти уникальность генерируемых чисел, Вам нужно проверять в списке уже имеющихся и если такое число есть, то генерировать заново.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 05.12.2005, 14:27

Отвечает: Ерёмин Андрей
Здравствуйте, ERA!
Система генерации случайных чисел такова, что всё время выдаёт одну и ту же последовательность случаных чисел. Чтобы повторов не было, нужно единожды, перед первым вызовом Random() вызвать Randomize() - без параметров.
---------
Где найти кpяк под ковpик для однокнопочного мыша?
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 05.12.2005, 14:37

Отвечает: Vadim Vitomsky
Здравствуйте, ERA!
Необходимо для инициализации генератора случайных чисел использовать процедуру Randomize. Вызов этой процедуры желательно сделать где-нибудь перед первым вызовом Random.
Ответ отправил: Vadim Vitomsky (статус: 5-ый класс)
Отправлен: 05.12.2005, 15:19

Отвечает: REFERI
Здравствуйте, ERA!
Генерируемые данной функцией числа являются псевдослучайными , и при каждом новом запуске вашего приложения будет вырабатываться одна и таже последовательность чисел . Если это недопустимо , надо рандомизировать генератор чисел, т.е. задавать ему каждый раз новое случайное исходное число. Рандомизацию осуществляет функция randomize Достаточно вставить где-нибудь в тексте программы (например, перед for i:=1 to 10 do ) оператор randomize; чтобы при каждом запуске приложения генерировалась новая последовательность чисел.
Удачи в кодинге!

---------
Не судите, да не судимы будете...
Ответ отправил: REFERI (статус: Студент)
Отправлен: 05.12.2005, 15:38

Отвечает: Schmak
Здравствуйте, ERA!
Для того чтобы при каждом новом запуске программы числа выдаваемые Randomом были различные необходимо перед его первым использованием следует вызвать Randomize.
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 05.12.2005, 16:27

Отвечает: Brutaller
Здравствуйте, ERA!
Совсем недавно наткнулся на интересную статью "Исследование генератора случайных чисел Delphi"
Почитать можно здесь http://cracklab.ru/art/rand.php
Очень рекомендую.
Ответ отправил: Brutaller (статус: 1-ый класс)
Отправлен: 05.12.2005, 19:59

Отвечает: Vbhjndjhtw
Здравствуйте, ERA!
На этом сайте есть ознакомительная версия уроков, но она Вам подойдёт в плане изучения работы с таймером http://umnik.rikt.ru/everest/distant/delphi.htm
---------
Бороться и искать, найти и перепрятать!
Ответ отправил: Vbhjndjhtw (статус: 6-ой класс)
Отправлен: 06.12.2005, 13:00

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

Думаю Вам нужно инициализировать генератор.
Для этого достаточно перед вызовом функции random() вызвать процедуру randomize.

Ответ отправил: Лучников Юрий Владимирович (статус: 3-ий класс)
Отправлен: 06.12.2005, 14:16


Вопрос № 30.829
Вопрос:
На форме имеется объект Timage, есть обработчик события onclick.
И так как сделать так чтобы обработчик срабатывал только при нажатии на видимую область изображентя (tranparent=true)?
Отправлен: 05.12.2005, 14:23
Вопрос задал: Golden Spider (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Ерёмин Андрей
Здравствуйте, Golden Spider!
Обрабатывайте коориднаты нажатия (X и Y) и соответствующие точки Image.Picture.Canvas.
---------
Где найти кpяк под ковpик для однокнопочного мыша?
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 05.12.2005, 14:39
Оценка за ответ: 4
Комментарий оценки:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (image1.Picture.bitmap.Canvas.Pixels[x,y]<>image1.Picture.Bitmap.TransparentColor) then label1.Caption:='true';
else
label1.Caption:='false';
end;
А попроще нельзя?
Кстати у image.picture нет CANVAS.

Отвечает: Лучников Юрий Владимирович
Здравствуйте, Golden Spider!

Как вариант можно обрабатывать текущие координаты курсора и сравнивать, на каком пикселе он находится... if else ...
Ответ отправил: Лучников Юрий Владимирович (статус: 3-ий класс)
Отправлен: 06.12.2005, 14:36
Оценка за ответ: 5


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

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

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

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

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


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


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное