Hallo,
die Initialisierung von K gehört unbedingt in die Prüfroutine, sonst werden nach Eingabe eines falschen Ausdrucks folgende richtige Ausdrücke als falsch erkannt.
Die Prüfroutine trennst du besser von der Benutzerschnittstelle:
Delphi-Quellcode:
uses
StrUtils;
function ValidExpression(
const s:
string): Boolean;
var
i, k: Integer;
begin
k := 0;
for i := 1
to Length(s)
do
case s[i]
of
'
(': Inc(k);
'
)':
Dec(k);
end;
Result := k = 0;
end;
procedure TDemoForm.CheckButtonClick(Sender: TObject);
begin
ShowMessage(IfThen(ValidExpression(TermEdit.Text), '
okay', '
rats'));
end;
Vielen Dank, dass wir an deinen Problemen teilhaben dürfen.
Grüße vom marabu