기본적인 예외 처리 방법을 알고 있습니다. 그래서 'try except'메소드를 사용하여 0으로 나누면 메시지를 올릴 수 있습니다.델파이에서 0으로 나눈 값 나누기를 일으킨 변수를 얻거나 찾는 방법?
내가 뭘하고 싶은지,이 오류를 일으키는 변수를 찾아 런타임에 값을 변경하십시오. 예를 들어
:
는procedure Calculate();
var
a, b, c : Double;
begin
try
a := 4; //suppose i take this value from user and he enters 4
b := 0; //suppose i take this value from user and he enters 0
c := a/b;
ShowMessage(FloatToStr(c));
except
on E : EZeroDivide do
begin
ShowMessage('Exception message = '+E.Message);
//i am not sure how to identify that its variable 'b' that is causing the error and has to be changed by a default value
get(E....errorVaraiable);
E....errorVaraiable := 0.00001;
c := a/E....errorVariable;
ShowMessage(FloatToStr(c));
end;
end;
, 사람이 좀 도와 줄래하세요?
자세히 설명해주세요. 당신은 런타임시에 마술을 찾고, 잘못된 부분을 해결하고 적절한 기본값으로 계산을 다시합니다. 나는 네가 무엇을 요구하고 있는지 이해하지 못한다. 내 말은, 당신은 우리에게 당신이 b가 0이라고 말할 수는 없다는 뜻입니다. –
글쎄요, 저는 마술을 찾고 있지 않습니다. 내 코드에서 오류가 발생한 위치/주소/지점을 찾는 방법을 찾고 있습니다. 예를 들어, E.Message를 사용하여 오류 메시지를받습니다. 코드에서이 오류의 원인이되는 오류 위치 또는 변수를 얻을 수 있습니까? – Arjun
질문이 내게 의미가 없습니다. '제로로 나누기'오류는 제수 (나누기 연산자의 오른쪽에있는 값)에 의해 항상 발생하므로 게시 한 코드에서 항상 'b'이고 'c/d'에서는 항상 ' 'd'. 디비전 이전에 유효성을 검사하는 것에 대해 걱정이된다면 사용자가 전달할 수있는 값 (예 :'TSpinEdit')을 사용하거나 코드를 체크하는 것으로 제한하십시오. 주장을 시작하십시오 (Divisor <> 0); 결과 : = 분자/제수; 끝, ' –