Вопрос о Canvas на Delphi... (внутри)

программирование Delphi делфи

в дополнение к вопросу:
http://otvety.google.ru/otvety/thread?tid=5d8c3e003c9232b9&table=%2Fotvety%2Fuser%3Fuserid%3D09534681371397432576

сделал процедурку для проги, в делфе на ней оно выдаёт ошибку, при нажатии на кнопку:

Debugger Exception Notification
Projecj Projecj1.exe raisednexception class EInalidOp eith message 'Invalid floating point operation'. Process stopped. Use Step or Run to continue.

но прогу компилит, и при запуске проги через *.ехе выдает ошибку:

Project1
Invalid floating point operation.


Примечание:
процедурка* - точнее функция, вот:

function crspx(x1,y1,x2,y2,x3,y3,x4,y4:integer):string;
var x,y:Real;
begin
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
x:=-1;
if (((x1<=x)and(x2>=x)and(x3<=x)and(x4>=x))or((y1<=y)and(y2>=y)and(y3<=y)and(y4>=y))) then
result:='('+FloatToStr(x)+','+FloatToStr(y)+')'
else
result:='0';
end;

Примечание:
вызываю так:

Memo1.Lines.Add(crspx(157,396,156,413,200,255,204,259));
Memo1.Lines.Add(crspx(200,255,204,259,204,259,204,263));

Примечание:
с делением на 0 понятно, такие загвоздки походу можно найти в каждом коде с делением
Ответы:
Где-то деление на ноль что логично. Ты проверки то забыл небось.
function crspx(x1,y1,x2,y2,x3,y3,x4,y4:integer):string;
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
Memo1.Lines.Add(crspx(200,255,204,259,204,259,204,263));
x4-x3=0 (204-204)
John Freeman прав.


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.