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

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


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


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

Выпуск № 105
от 29.11.2002, 18:40

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 309
Отправлено ответов: 550
Активность: 177.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Idle Sign
Статус: Опытный
Общий рейтинг: 148.71
URL: Blind Team
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.38
URL: Пристанище неодинокого программиста
[Подробней >>]
Jadd
Статус: Профессиональный
Общий рейтинг: 140.72
[Подробней >>]
 
Рыжик
Статус: Начальный
Общий рейтинг: 112.24
[Подробней >>]
Necro
Статус: Доверительный
Общий рейтинг: 110.48
[Подробней >>]
Nick Vishnievski
Статус: Начальный
Общий рейтинг: 107.89
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 303. Здравствуйте! Я соединил два проекта после чего попытался работать с переменной с другого проекта(Ко... (ответов: 3)
Вопрос № 304. Здравствуйте, уважаемые эксперты. У меня вопрос следующего содержания. По работе у меня стоит такая... (ответов: 4)

Вопросов: 2, ответов: 7


 Вопрос № 303

Здравствуйте!
Я соединил два проекта после чего попытался работать с переменной с другого проекта(Короче добавил в приложению с базой данной проект вывода отчета) но последовала ошибка о неизвестной переменной. Где я забыл обявить что либо? В dpr файлах система при добавления указала изменения.
Скажите как решить эту проблему? как вообще делается добавление?
Спасибо!


Приложение:


Вопрос отправлен: 25.11.2002, 12:42
Отправитель: dude (squeeze_ms@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Idle Sign

Доброе время суток, dude!
===== Pro bono publico, no bloody panico! =====
Первое, что хотелось бы сказать: "Следи пожалуйста за тем, что набираешь, а то при таком количестве ошибок в согласовании окончаний достаточно сложно понять смысл вопроса. Пришлось пять раз перечитать."
Соединил два проекта, говоришь? Ну-ну. Сказал бы проше: фому из другого проекта засунул.
По существу:
1) Ты объявляй в том модуле, который у тебя использует QRLabelForm (обычно Дельфя при попытке компилляции сама пытается это сделать), т.е. в uses'ах Form1.
2) Переменная должна быть доступна. О степени доступности читай в Рассылке Вопрос №191 Выпуск №077 от 25.09.2002, 07:10
ПиС: У тебя вопрос получился из серии "Что-то у меня ничего не работает. Кого попросить, чтобы он нажал, чтобы заработало?"
Экспертам:
Наверное пора уже какой-нибудь раздел на сайте открывать, типа "Как спросили, так и ответили!". В раздел можно будет заносить письма (ну и ответы, кончено), в которых отправители выделились а) своей манерой повествования; б) старанием показаться умнее, чем на самом деле; в) и т.д. и т.п.

Ответ отправлен: 25.11.2002, 21:20
Отправитель: Idle Sign


Отвечает Артём Шегеда

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

То, что компилятор добавил форму в проект - это хорошо, но этого мало. Необходимо указать одному модулю, что существует ещё один: то есть в модуле Unit1 добавить следующие строки:

impementation
uses

qrlabelT in 'qrlabelT.pas';

- здесь "implementation" - уже существующее ключевое слово. После этого можешь спокойно обращаться ко всем interface-компонентам модуля qrlabelT из Unit1

Ответ отправлен: 25.11.2002, 13:48
Отправитель: Артём Шегеда


Отвечает Jadd

Приветствую Вас, dude!
Такс. Давай разбираться. Ты добавил форму из другого проекта(по крайней мере это видно из примера). Далее, чтобы обратиться к переменной из этой формы(читай класса), тебе надо в раздел uses внести запись типа qrlabelT. Далее, в месте, где тебе надо, пишешь:
<класс, в котором объявлена переменная>.переменная;
Все. Если переменная объявлена вне класса (т.е. глобальная), тогда ссылки на объект не нужно. Естественно, при ссылке на класс, должен существовать экземпляр этого объекта.

Ответ отправлен: 25.11.2002, 13:58
Отправитель: Jadd


 Вопрос № 304

Здравствуйте, уважаемые эксперты. У меня вопрос следующего содержания.
По работе у меня стоит такая задача: написать программу, которая решает дифференциальное уравнение методом Рунге-Кутта. В этом методе график решения [т.е.y=f(x)] строится по точкам. Я для построения использую компонент Image. Для построения каждой следующей точки использую свойство компонента Image Pixels[x,y], где x,y- переменные ЦЕЛОГО типа (типа Integer). А реальная координата, которая получается в результате вычислений почти всегда типа Real. Я и определяю в самом начале x, y как Real. Причём я понимаю, что так или иначе а любой график на компе строится по пикселям , и в компоненте Image Pixels[x,y] всё равно придётся ставить целые переменные. Так вот как, учитывая выше сказанное, описать в программе переменные x,y чтобы они были вроде как Real и в то же время Integer? Короче говоря, как пишут программы, которые строят графики по координатам типа REAL? Заранее спасибо. Начинающий инженер Алексей.



Вопрос отправлен: 26.11.2002, 18:34
Отправитель: Алексей

[Следующий вопрос >>] [Список вопросов]

Отвечает Рыжик

Приветствую Вас, Алексей!
При построении графиков обычно используют округление. Т.е. значения вычисляются как real,и округляются только при выводе на график (чтобы не накапливалась погрешность вычисления). Для округления можно использовать ф-ю Round.


Ответ отправлен: 27.11.2002, 08:58
Отправитель: Рыжик


Отвечает Артём Шегеда

Приветствую Вас, Алексей!

Ну, вообще-то, это проблема, скорее, не Delphi, а Pascal, и разрешить её просто - достаточно при выводе точки (линии, окружности и пр.) привести координату к целому:

with Image1.Picture.Bitmap do
Canvas.LineTo(round(x/MaxX*Width),Height-round(y/MaxY*Height));


Ответ отправлен: 26.11.2002, 18:55
Отправитель: Артём Шегеда


Отвечает Necro

Добрый день, Алексей!
График лучше строить не по пикселям, а командами MoveTo и LineTo (См. помощь в Дельфи)
round(X:real) возвращает число типа integer, округлённое до ближайшего целого.
trunc(X:real) возврашает число типа integer, отрезав дробную часть.

Ответ отправлен: 26.11.2002, 19:04
Отправитель: Necro


Отвечает Nick Vishnievski

Приветствую Вас, Алексей!
а почему бы тебе просто не округлить real значения при задании точек? т.е. у тебя есть значения, полученные из решения + используй функции Round (она возвращает значение в Int64, что немного великовато, но можно и его изменить на просто Int), или функцией floor (округляет до большего, можно сделать floor (x+0.5) и получится нормальное округление). так что Image1.Canvas.Pixels [floor(x+0.5), floor (y+0.5)]=$0; должно работать (как мне кажется). надеюсь, помог, а если нет, то прости, не совсем значит вопрос понял.


Ответ отправлен: 27.11.2002, 14:55
Отправитель: Nick Vishnievski



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (41)
C / C++ (29)
Perl (9)
Delphi (14)
Pascal (22)
Basic / VBA (10)
Java / JavaScript (15)
PHP (10)
MySQL / MSSQL (9)
Пользователю
Windows 95/98/Me (35)
Windows NT/2000/XP (22)
"Железо" (27)
Поиск информации (16)
Администратору
Windows NT/2000/XP (12)
Linux / Unix (17)
Юристу
Гражданское право (9)
Семейное право (3)
Трудовое право (5)
КоАП (3)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное