Skip to content

Commit de3a32b

Browse files
committed
prompt when use x as variable name
prompt when use x as variable name click calc result add to express
1 parent cc39092 commit de3a32b

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

UnitMain.pas

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ TFormMain = class(TForm)
196196
TransientType: TTransientType);
197197
procedure synEditCPaintTransient(Sender: TObject; Canvas: TCanvas;
198198
TransientType: TTransientType);
199+
procedure mmoCalcResClick(Sender: TObject);
199200
private
200201
{ Private declarations }
201202

@@ -528,6 +529,15 @@ procedure TFormMain.btnLittleC_clearClick(Sender: TObject);
528529
mmoOutC.Clear;
529530
end;
530531

532+
procedure TFormMain.mmoCalcResClick(Sender: TObject);
533+
var
534+
s: string;
535+
begin
536+
s := mmoCalcRes.Lines[mmoCalcRes.CaretPos.Y];
537+
if s <> '' then
538+
cbbCalcExpress.Text := s;
539+
end;
540+
531541
procedure TFormMain.mmoOutBasAdd(s: string);
532542
begin
533543
mmoOutBas.Lines.BeginUpdate;
@@ -934,12 +944,22 @@ procedure TFormMain.cbbCalcExpressDblClick(Sender: TObject);
934944
try
935945
if mmoCalcVar.Modified then
936946
begin
937-
mmoCalcVar.Modified := False;
938947
Calc.Clear;
939948
Calc.AddVariableList(mmoCalcVar.Lines);
949+
mmoCalcVar.Clear;
950+
for n := 0 to Calc.Count - 1 do
951+
begin
952+
mmoCalcVar.Lines.Add(Calc.ItemName[n] + ' = ' + Calc.ItemValueFromIndex[n]);
953+
if Calc.ItemName[n] = 'x' then
954+
begin
955+
MessageDlg('If x is used as the variable name, ''0x'' cannot be used in the expression.',
956+
mtWarning, [mbOK], 0);
957+
end;
958+
end;
959+
mmoCalcVar.Modified := False;
940960
end;
941961
res := Calc.AsString(cbbCalcExpress.Text);
942-
mmoCalcRes.Lines.Add(cbbCalcExpress.Text + ' =');
962+
mmoCalcRes.Lines.Add(Trim(cbbCalcExpress.Text) + ' =');
943963
mmoCalcRes.Lines.Add(res);
944964
n := cbbCalcExpress.Items.IndexOf(cbbCalcExpress.Text);
945965
if n = -1 then
@@ -950,17 +970,17 @@ procedure TFormMain.cbbCalcExpressDblClick(Sender: TObject);
950970
end
951971
else
952972
cbbCalcExpress.Items.Move(n, 0);
953-
cbbCalcExpress.SelectAll;
973+
954974
except
955-
mmoCalcRes.Lines.Add('Expression <' + cbbCalcExpress.Text + '> Error!');
975+
mmoCalcRes.Lines.Add('Expression < ' + Trim(cbbCalcExpress.Text) + ' > Error!');
976+
cbbCalcExpress.SelectAll;
956977
end;
957978
finally
958979
mmoCalcRes.Lines.Add('');
959-
if mmoCalcRes.Lines.Count > 4096 then
980+
if mmoCalcRes.Lines.Count > 4095 then
960981
begin
961-
mmoCalcRes.Lines.Delete(0);
962-
mmoCalcRes.Lines.Delete(0);
963-
mmoCalcRes.Lines.Delete(0);
982+
for n := 1 to 128 * 3 do
983+
mmoCalcRes.Lines.Delete(0);
964984
end;
965985
end;
966986
end;
@@ -1078,7 +1098,7 @@ procedure TFormMain.FormCreate(Sender: TObject);
10781098
pnlCalcVar.Width := ini.ReadInteger('CalcExpr', 'Width', mmoCalcRes.Width);
10791099
ini.ReadStrings('CalcExpr', 'vars', mmoCalcVar.Lines);
10801100
if mmoCalcVar.Text = '' then
1081-
mmoCalcVar.Text := 'x=10'#13#10'y=0x12'#13#10'f=x+y';
1101+
mmoCalcVar.Text := 'y=0x12'#13#10'f=y*y+2';
10821102
mmoCalcVar.Modified := True;
10831103
except
10841104
ini_writeable := False;
@@ -1155,6 +1175,7 @@ procedure TFormMain.FormKeyDown(Sender: TObject; var Key: Word;
11551175
0: btnLittleC_runClick(Sender);
11561176
1: btnPas_runClick(Sender);
11571177
2: btnBas_runClick(Sender);
1178+
3: cbbCalcExpressDblClick(Sender);
11581179
end;
11591180
end;
11601181
VK_F10:

0 commit comments

Comments
 (0)