Q&A

  • integer에서 extended로 형변환시 에러...
아래의 소스는 계산기 입니다...
형변환에 대한것을 아직 잘 알지 못하기에 일단 만만한 인트로 작성했는데...
대충 계산기의 골격이 잡힌듯 해서 형변환을 시도하려 했지만...
integer를 extended로 바꾼후 IntToStr을 IntToFloat, StrToInt를 StrToFloat로 바꾸었는데...
//연속계산시.. << 의 구문에서 오류가 나는군요...(첫번째 if문)
invalid typecast <<라는 오류입니다...
그밖에 여러 오류가 많지만 이것 고치면 될듯한데...
델파이 정말 형 체크가 까다롭군요...

답변 해주시면 감사하겠습니다... 항상 즐코하시길..


////////////////////////////////////////////////////
// 사용자 정의함수 부분

// 숫자입력 처리함수
procedure DownNum(DnNum : integer);
begin
Tmp := Tmp + IntToStr(DnNum);
form1.label1.Caption := Tmp;
end;

// 초기화 처리함수
procedure DownClear();
begin
Tmp := '';
Result := 0;
Dot_Flag := false;
Calc_Flag := false;
form1.label1.Caption := '0'
end;

// 점 입력 처리부분
procedure DownDot();
begin
if Dot_Flag = false then Tmp := Tmp + '.'; Dot_Flag := True;
form1.label1.Caption := Tmp
end;


// 연산이벤트 처리부분
procedure DownSimbol(DnSimbol : integer);
begin

//연속 계산시..
if ((Boolean(Calc_Flag)) and (Boolean(Result)) and not(Tmp = '')) or (DnSimbol = 5) and (not(Tmp='')) then
begin
case Calc_Simbol of
0: Result := Result + StrToInt(Tmp);
1: Result := Result - StrToInt(Tmp);
2: Result := Result * StrToInt(Tmp);
3: Result := Result div StrToInt(Tmp);
else

end;

Tmp := '';
form1.label1.Caption := IntToStr(Result);
Calc_Simbol := DnSimbol;
Calc_Flag := true;
end

//그냥 눌렀을때 ㅡㅡ;;
else if Tmp='' then
begin
Calc_Simbol := DnSimbol
end

//처음 입력시..
else
begin
Result := StrToInt(Tmp);
Tmp := '';
Calc_Simbol := DnSimbol;
Calc_Flag := true;
end
end;


/////////////////////////////////////////////////////////
// 이벤트 처리부분

// 숫자 버튼 클릭시
procedure TForm1.btnNum_0Click(Sender: TObject);
begin
DownNum(TButton(Sender).Tag)
end;


// 클리어 버튼 클릭시
procedure TForm1.btnNum_ClearClick(Sender: TObject);
begin
DownClear()
end;


// 소수점 버튼 클릭시
procedure TForm1.btnNum_DotClick(Sender: TObject);
begin
DownDot()
end;


// 연산자 버튼 클릭시
procedure TForm1.btnNum_PlusClick(Sender: TObject);
begin
DownSimbol(TButton(Sender).Tag)
end;

// 키 입력 이벤트시
procedure TForm1.DownKey(Sender: TObject; var Key: Char);
begin

// 숫자키 입력시
if Ord(Key) > 47 then
begin
DownNum(StrToInt(Key));
end

// 연산자키 입력시
else
begin
case Ord(Key) of
46 : DownDot();
43 : DownSimbol(0);
45 : DownSimbol(1);
42 : DownSimbol(2);
47 : DownSimbol(3);
13 : DownSimbol(5);
27 : DownClear();
else
end
end

end;
0  COMMENTS