Пример: w.detailed_status = 'небольшая облачность', а в условии есть только 'пасмурно'.
procedure TForm1.Button1Click(Sender: TObject);
const e = 0.0001;
var
AX1, AY1, AX2, AY2, BX1, BY1, BX2, BY2: integer;
x, y: real;
str1,str2:string;
begin
clrscr;
Memo1.clear();
AX1 := StrToInt(Edit1.Text);
AY1 := StrToInt(Edit2.Text);
AX2 := StrToInt(Edit3.Text);
AY2 := StrToInt(Edit4.Text);
BX1 := StrToInt(Edit5.Text);
BY1 := StrToInt(Edit6.Text);
BX2 := StrToInt(Edit7.Text);
BY2 := StrToInt(Edit8.Text);
if (abs(AX2 - AX1) < e) and (abs(BX2 - BX1) < e) or (abs((BX2 - BX1) * (AY2 - AY1) - (BY2 - BY1) * (AX2 - AX1)) < e) then
Memo1.lines.add('Параллельны')
else
begin
if (abs(AX1 - AX2) < e) and (abs(BY2 - BY1) < e) then
begin
x := AX1;
y := BY1;
end
else if (abs(AY1 - AY2) < e) and (abs(BX1 - BX2) < e) then
begin
x := BX1;
y := AY1;
end
else
begin
x := -((BX2 - BX1) * (AX1*AY2 - AX2*AY1) - (AX2 - AX1) * (BX1*BX2 - BX2*BY1)) / ((AY1 - AY2) * (BX2 - BX1) - (AX2 - AX1) * (BY1 - BY2));
y := ((-x) * (BY1 - BY2) - (BX1*BY2 - BX2 * BY1)) / (BX2 - BX1);
str1:=floattostr(x);
str2:=floattostr(y);
end;
if ((x >= AX1) and (x <= AX2)) or ((x <= x) and (x >= AX2)) then
Memo1.lines.add(str1+str2)
else memo1.lines.add('не пересек');
end;
end;
if ((B1*A2)-(B2*A2) and A1) then begin
if (min <= x) <= max then begin
str1:=FloatToStr(x);
str2:=FloatToStr(y);
Memo1.lines.add(x + y);