정보만 가져가다가 이번에 처음으로 글을 올립니다...
제가 이번에 계산기를 만들려고 합니다..
근데 일반 계산기랑은 다른 공학계산기처럼 만들려고 합니다...
무슨 말인고 하니... 3+3-4/3...
이런 식으로 계산기입력창에 나오도록 하고 싶습니다...
그렇게 하려면 문자로 입력을 받고 계산을 하기 위해선 문자열추출을 해야한다고 하던데...
어떻게 하는건지 잘 모르겠어서요...
문자열추출을 해서 계산까지 되는 방법을 알려주셨으면 합니다...
아니면 예제라도...^^
질문이 좀 이상한거 같기도 하고...쩝
부탁드립니다...
문자열 추출은 아니고요 사칙연사에 의해서만 되도록 했습니다.
정수만 가능하고요.
혹시나마 도움이 될지는.....^^;;
aNumber 와 aSymbol은 TStringGrid 입니다.
aNumber는 연산기호를 제외한 숫자들 저장하고 있습니다.
aSymbol은 숫자를 제외한 연산기호를 저장합니다.
약간에 오류도 있을듯 하네요 ㅡ,.ㅡ;;
Button15는 = 버튼입니다.
procedure TForm2.Button15Click(Sender: TObject);
var
aInc, aIdx, Sum: integer;
function SorttingNumber: integer;
var
i, j, Tmp: integer;
begin
j := aSymbol.Count;
for i := j - 1 Downto 0 do
if (aSymbol[i] = '*') then
begin
tmp := StrToInt(aNumber[i]) * StrToInt(aNumber[i+1]);
aNumber[i] := IntToStr(tmp);
aNumber.Delete(i+1);
aSymbol.Delete(i);
end
else if (aSymbol[i] = '/') then
begin
tmp := StrToInt(aNumber[i]) div StrToInt(aNumber[i+1]);
aNumber[i] := IntToStr(tmp);
aNumber.Delete(i+1);
aSymbol.Delete(i);
end;
result := aSymbol.Count;
end;
begin
if aTmp <> '' then aNumber.Add(aTmp); //aTmp 는 입시 숫자 저장
aIdx := SorttingNumber -1;
Sum := StrToInt(aNumber[0]);
for aInc := 0 to aIdx do
begin
if aSymbol[aInc] = '+' then
Sum := Sum + StrToInt(aNumber[aInc + 1])
else if aSymbol[aInc] = '-' then
Sum := Sum - StrToInt(aNumber[aInc + 1])
end;
Edit1.Text := IntToStr(Sum);
end;