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

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


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

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

Выпуск № 388
от 17.02.2006, 08:42

Администратор:Калашников О.А.
В рассылке:Подписчиков: 251, Экспертов: 59
В номере:Вопросов: 6, Ответов: 22


Вопрос № 35214: Написана программа по расчету температурного поля в кабеле. Рисуется используя Canvas сесение кабеля и отображается темературное поле по сечению (круги разных цветов. в зависимости от температуры). Подскажите пожалуйста как сделать так. чтобы при нав...
Вопрос № 35230: Приветсвую. Есть необходимость такая: в ListView в виде vsReport вывести список файлов в опредедленной директории. Три столбца, 1) номер; 2)data1; 3)data2; Где data2 и data1 строки прочитанные из файлов, найденных. Вся соль в том, чтобы интереактивно...
Вопрос № 35233: Привет всем экспертам !!! Вопрос конечно глупый !!! Но я только сегодня решил учить Delphi !!! Подскажите что означают в переменных b : Real; i : Integer; эти самые Real и Integer ,,,???,,, Только подробно и для чего они нуж...
Вопрос № 35237: Здраствуйте уважаемые эксперты! У меня такой вопрос: программа выдает разные ошибки, ( например что неудалось соединится с сарвером или файл ненайден) как зделать чтобы программа неписалабы никаких ошибок? Заранее спасибо....
Вопрос № 35246: Здраствуйте!!! Огромное спасибо! За ответ на 35176! Но это кнопка, а мне нужна панель! Своя панель! Как её создать,добавить,и обрабатывать события! Текст вопроса 35176: "Как "вкалбасить"(Хе-хе)/вставить свою панельку в експ...
Вопрос № 35247: Здраствуйте!!! Как сделать в праграмме запуск с параметрами!Тоесть: C:Progaproga.exe /fh Ну что-то в этом роде!!! ...

Вопрос № 35.214
Написана программа по расчету температурного поля в кабеле. Рисуется используя Canvas сесение кабеля и отображается темературное поле по сечению (круги разных цветов. в зависимости от температуры). Подскажите пожалуйста как сделать так. чтобы при наведении курсора мышки на определенную область сечения появлялась подсказка с температурой (текстом) соответствующей этой области.
Отправлен: 11.02.2006, 19:20
Вопрос задал: Vaska (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Vaska!
Определяешь прямоугольные области для тех мес, где хочется выдавать подсказки. Дальше берешь функцию PtInRect, которая вернет истину, если точка мыши в ректе ил ложь - если нет. Ну а все остальное - дело техники.

Удачи.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 11.02.2006, 19:29
Оценка за ответ: 4

Отвечает: Minor
Здравствуйте, Vaska!
Не знаю, как Вы рисовали круги , наверное через стандартные функции канвы,
но если пойти другим способом....
ну, вобщем, смотрите в приложении, что у меня получилось, вроде работает! :)
Удачи!

Приложение:

---------
Не руби сук, на котором сидишь! Вообще слезь с дерева, человек!

Ответ отправил: Minor (статус: 2-ой класс)
Отправлен: 11.02.2006, 21:06
Оценка за ответ: 5

Отвечает: Злоумышленник
Здравствуйте, Vaska!
У объекта, на Канвасе которого рисуете, есть событие OnMouseMove: PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer). Вот, используя его параметры X и Y, определяете цвет под курсором:
if PaintBox1.Canvas.Pixels[x,y]=ВАШ ЦВЕТ then
StatusBar1.Panels[0].Text := 'Большая температура!!!!!!'
else
StatusBar1.Panels[0].Text := '';
---------
Почему нет встроенного языка 1С на мордовском? Было бы клёво!
Ответ отправил: Злоумышленник (статус: 2-ой класс)
Отправлен: 11.02.2006, 21:35
Оценка за ответ: 4

Отвечает: Ataman N. N.
Здравствуйте, Vaska!
Canvas - свойство компонента (формы, Image). Обрабатываете событие компонента OnMouseMove, в котором получаете цвет пикселя под указателем (Canvas.Pixels[x,y]) и в зависимости от цвета выводите подсказку о температуре.
Ответ отправил: Ataman N. N. (статус: 6-ой класс)
Отправлен: 13.02.2006, 17:04
Оценка за ответ: 4


Вопрос № 35.230
Приветсвую. Есть необходимость такая: в ListView в виде vsReport вывести список файлов в опредедленной директории. Три столбца, 1) номер; 2)data1; 3)data2; Где data2 и data1 строки прочитанные из файлов, найденных. Вся соль в том, чтобы интереактивно добалять в строку эти данные. я пробовал, у меня получаеться, что одна надпись на одной строке, а второй пункт data2 уже на другой строке. Благодарен буду, если приведете текст исходина, который помог бы мне.
Отправлен: 11.02.2006, 23:15
Вопрос задал: CJ (статус: Практикант)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Kazakh
Здравствуйте, CJ!
Это кусок рабочего кода.
Комментариев вроде не нужно.
Суть в том, что в первый столбец ListView это Item. А остальные столбцы это SubItems'ы Item'a. Причем второй столбец это 1-ый Subitem и нумерация с 0.
Вот так.

Приложение:

---------
Если собеседник затрудняется ответить, значит, вопрос поставлен правильно.

Ответ отправил: Kazakh (статус: 3-ий класс)
Отправлен: 13.02.2006, 11:35


Вопрос № 35.233
Привет всем экспертам !!!
Вопрос конечно глупый !!! Но я только сегодня решил учить Delphi !!!
Подскажите что означают в переменных
b : Real; i : Integer;

эти самые Real и Integer ,,,???,,,
Только подробно и для чего они нужны !!!
Отправлен: 12.02.2006, 00:37
Вопрос задал: Tamashev Denis M (статус: Посетитель)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jadd
Здравствуйте, Tamashev Denis M!
Real - тип переменной, содержащей числа с плавающей точкой. Integer - тип переменной, содержащей целые числа, а вся конструкция, в которой они употреблены - объявление переменных.

Удачи.
---------
Если в сердце дверь закрыта, нужно в печень постучаться
Ответ отправил: Jadd (статус: Специалист)
Отправлен: 12.02.2006, 00:44
Оценка за ответ: 5

Отвечает: Minor
Здравствуйте, Tamashev Denis M!
к сказанному выше могу лишь добавить, каковы диапазоны этих чисел (какие они могут принимать значания)
Real 5.0 x 10^-324 .. 1.7 x 10^308
Integer -2147483648..2147483647
а также хочу сказать, что в Делфи, как и в любом другом языке существует несколько типов целочисленных переменных и переменных с плавающей точкой. О них можно прочитать в хелпе Делфи, набрав
real types
или integer types
соответственно.
И еще хочу посоветовать Вам две полезные странички....
http://delphid.dax.ru/study/
http://delphid.dax.ru/pascal/
Удачных Вам начинаний!
---------
Не руби сук, на котором сидишь! Вообще слезь с дерева, человек!
Ответ отправил: Minor (статус: 2-ой класс)
Отправлен: 12.02.2006, 02:14
Оценка за ответ: 5

Отвечает: Makar-off V.M.
Здравствуйте, Tamashev Denis M!
b : Real;- означает объявление переменной типа real
i : Integer; - аналогрично объявление переменной только типа Integer
Ответ отправил: Makar-off V.M. (статус: 4-ый класс)
Отправлен: 12.02.2006, 05:05
Оценка за ответ: 5

Отвечает: Diman_A
Здравствуйте, Tamashev Denis M!
Целочисленные типы данных
-------------------------------------------
Тип диапазон размер в байтах
-------------------------------------------
Byte 0...255 1
Shortint -128...127 1
Integer -32768...32767 2
Word 0...65535 2
Longint -2147483648...2147483647 4
-------------------------------------------
Тип Real допускает 11 значащих цифр и использует диапазон экспоненты от 10**-38 до 10**38. Если в вашей системе имеется математический сопроцессор и вы указали директиву компилятора для числовой поддержки или параметр среды программирования {$N+}, будет поддерживаться Стандарт IЕЕЕ 754 для двоичной арифметики с плавающей запятой.
Типы вещественных данных
--------------------------------------------
Тип Диапазон Значащие Размер в
цифры байтах
--------------------------------------------
real 10**-38..10**38 11 6
Single 10**-38..10**38 7 4
Double 10**-38..10**38 8 15
Extended 10**-4931..10**4931 10 19
Comp 2**63..2**63-1 8 ??
--------------------------------------------
Другие типы данных:
string - строковый тип. позволяет использовать такие выр-я, как 'stroka'
char - символьный тип. Символьные константы выражаются символом, заключенным в одиночные кавычки (например, 'А', 'е', '?', '2').
Для описания переменных служит раздел VAR:
VAR a:byte;
Целочисленные типы служат для хранения целых чисел (напр. 3). Вещественные - для дробных.
Ответ отправил: Diman_A (статус: 5-ый класс)
Отправлен: 12.02.2006, 05:42
Оценка за ответ: 5

Отвечает: Ерёмин Андрей
Здравствуйте, Tamashev Denis M!
Это типы данных, которые хранят данные переменные. Типов существует много. Эти - основные. Integer - целочисленное значение (число), Real - вещественное (дробное). Для примера, ещё есть string (текстовая строка), char (символ) и др. Подробнее об этом можно прочитать во встроенной справке. Поставить курсор на слово "integer" в редакторе кода и нажмите F1. Откроется нужный раздел.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 12.02.2006, 08:06
Оценка за ответ: 5
Комментарий оценки:
Спасибо !!!

Отвечает: sir henry
Здравствуйте, Tamashev Denis M!
Вам просто жизненно необходимо купить книжку по Дельфи, например Фаронов "Delphi учебный курс". Там как раз описывается с чего начать и что для чего нужно.
При объявлении переменных в разделе VAR, после двоеточия указывается их тип, т.е. сколько места в оперативной памяти компилятор зарезервирует для них при компиляции Вашей программы. Дополнительно тип обозначает, какие действия можно производить с теми или иными переменными, например:
r: REAL; - это число с плавающей десятичной точкой;
i: INTEGER; - это целое число.
С ними можно делать, например, так:
r:=r/i;
А вот так делать уже нельзя:
i:=i/r;
т.к. в целочисленной переменной не предусмотрено место для разрядов после десятичной точки. Компилятор при этом сразу ошибку выдаст.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 12.02.2006, 08:21
Оценка за ответ: 5
Комментарий оценки:
Да у меня есть электронная книга !!!
Правда там практики больше чем теории !!!
И несовсем понятно !!!
Я просто собирался C++.Net учить !!!
Но язык мне непонравился а на 2005 учебников вообше нет !!! И команды после C++ c Delphi путаю !!!!
8)
А так спасибо !!!!
Кстати вы незнаете что за поганое обновление windows последнее время сейчас лазит по нету называется оно так:Microsoft GDI+ Detection tool
Я его поставил и windows чуть неотправился в загробный мир а в Autorun столько гадости появилось 8( !!!


Вопрос № 35.237
Здраствуйте уважаемые эксперты!
У меня такой вопрос: программа выдает разные ошибки, ( например что неудалось соединится с сарвером или файл ненайден) как зделать чтобы программа неписалабы никаких ошибок?
Заранее спасибо.
Отправлен: 12.02.2006, 02:01
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

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

Для этого вам следует воспользоваться механизмом обработки исключений.
Подробный материал на эту тему вы можете прочитать по ссылке:
http://www.rus-lib.ru/book/28/prog/9/066-096.htm

Успехов;)
Ответ отправил: Лучников Юрий Владимирович (статус: Студент)
Отправлен: 12.02.2006, 02:15

Отвечает: Brutaller
Здравствуйте, Станислав!
Чтоб не вылезало ошибок о том, что не найден файл, нужно проверять, а есть ли вообще такой файл с помощью функции FileExists.
Ну а вообще есть обработка исключительных ситуаций:
try
// здесь твой код, в котором может произойти ошибка
except
//здесь код, который выполнится, если ошибка все-таки произошла
-------------------------
или
try
// здесь твой код, в котором может произойти ошибка
finally
// здесь код, который выполнится в любом случае, даже если ошибки не было.
Ответ отправил: Brutaller (статус: 1-ый класс)
Отправлен: 12.02.2006, 02:27

Отвечает: Ерёмин Андрей
Здравствуйте, Станислав!
Заключите блок кода, который может выдавать ошибку в try ... except:
try
...
except
ShowMessage('error');
Abort;
end;
Обратите внимание, что проверять работу программы с отлавливанием исключений таким способом нужно из Windows, а не из-под оболочки Delphi.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 12.02.2006, 08:08

Отвечает: sir henry
Здравствуйте, Станислав!
Используйте специально для этого придуманый механизм обработки ошибок TRY...EXCEPT, например:
var
F: TextFile;
Begin
AssignFile(F, 'text.txt');
Try
Reset(F);
Except
ShowMessage('Не удалось открыть файл text.txt!');
End;
Если применяемые Вами функции не приводят к исключительным ситуациям, то они наверняка возвращают какой-то результат, тогда Вы просто обрабатываете этот результат и в зависимости от него делаете то, что Вам нужно. Например:
If FileExists('text.txt') Then
ShowMessage('Файл существует')
Else
ShowMessage('Файл не существует!');
Ответ отправил: sir henry (статус: Академик)
Отправлен: 12.02.2006, 08:30

Отвечает: Leshiy2006
Здравствуйте, Станислав! Заключите ваш код в операторные скобки try ... except или
используйте следующие директивы: {$I-} //Игнорировать I/O ошибки
{$D-} //Не вводить в код отладочную информацию
Удачи!

Ответ отправил: Leshiy2006 (статус: 1-ый класс)
Отправлен: 12.02.2006, 23:36

Отвечает: Ataman N. N.
Здравствуйте, Станислав!
Прошу прощения, может мой ответ покажеться вам немного грубым, но для того чтобы программа не писала бы никаких ошибок, просто не делайте их, а если серьйозно, то для проверки существования файла в Delphi есть функция FileExists(const FileName: String): Boolean. Аналогично можно проверить соединение с сервером, и т. д.
Ответ отправил: Ataman N. N. (статус: 6-ой класс)
Отправлен: 13.02.2006, 16:58


Вопрос № 35.246
Здраствуйте!!!
Огромное спасибо! За ответ на 35176! Но это кнопка, а мне нужна панель! Своя панель! Как её создать,добавить,и обрабатывать события!
Текст вопроса 35176:
"Как "вкалбасить"(Хе-хе)/вставить свою панельку в експлорер/explorer и/или Internet explorer !
Как узнать какой открыт адресс в експлорере! Тоесть указан в Адрессной строке!
Тоесть сделать кнопку на панели эксплорера, и при нажатии моей программе передавался адресс открытого ресурса или путь!!!"
Отправлен: 12.02.2006, 08:17
Вопрос задал: chikanok (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, chikanok!
Смотрите в сторону http://www.mustangpeak.net. Там много компонент для интеграции в Windows, IE, а также компоненты для создания программы наподобие Проводника. Они вполне рабочие, только в них нужно очень долго разбираться.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 12.02.2006, 08:47


Вопрос № 35.247
Здраствуйте!!!
Как сделать в праграмме запуск с параметрами!Тоесть:
C:Progaproga.exe /fh Ну что-то в этом роде!!!
Отправлен: 12.02.2006, 08:26
Вопрос задал: chikanok (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, chikanok!
Для этого нужно подключить модуль ShellAPI, а в своей программе написать:
ShellExecute(0, 'open', 'C:Progaproga.exe', '/fh', NIL, NIL, SW_SHOW);
Ответ отправил: sir henry (статус: Академик)
Отправлен: 12.02.2006, 08:37

Отвечает: Ерёмин Андрей
Здравствуйте, chikanok!
А что именно интересует? Если хотите читать параметры, с которыми запущена программа, используйте функцию ParamStr(n), где n - номер параметра. Нулевой параметр (0) - это полный путь к исполняемому файлу программы. Общее количество параметров выдаёт функция ParamCount(). Например:

if ParamStr(1) = '⁄f' then
Close;


Для запуска другой программы с параметром у функции ShellExecute (модуль ShellAPI) нужно в четвёртом параметре написать все необходимые параметры (как уже указал sir henry).
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 12.02.2006, 08:45

Отвечает: Diman_A
Здравствуйте, chikanok!
За чтение параметров отвечают функции paramcount и paramstr(i). Первая при возвращает количество введенных параметров типа integer, вторая - собственно сам параметр, номер которого указан при обращении к ней.
Например, paramstr (0) - путь к exe-файлу с его именем, paramstr (1) - первый параметр (тип String).
C:Progaproga.exe /fh
paramcount=1
paramstr (1)='/fh'
Кроме этого, при запуске файла, если ваша программа с ним ассоциирована, то через параметр передается его имя.
Ответ отправил: Diman_A (статус: 5-ый класс)
Отправлен: 12.02.2006, 14:46

Отвечает: Zubex
Здравствуйте, chikanok!
Для обработки всех параметров используй цикл:
for i:=1 to ParamCount do begin
if ParamStr(i)=Что-то then Действие
else if ParamStr(i)=Еще что-то then Другое действие
... и так далее
end;

Для проверки наличия какого-либо параметра можно использовать:
FindCmdLineSwitch('Нужный параметр', ['-', '/', ''], True);

Удачи
---------
Если не знаешь что сказать - лучше промолчи...
Ответ отправил: Zubex (статус: 5-ый класс)
Отправлен: 13.02.2006, 11:25


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

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

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

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

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

В избранное