Вопрос № 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 ,,,???,,,
Только подробно и для чего они нужны !!!
Отвечает: 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
Отвечает: 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