(a[01]=1)and(d[51]>30)or(s[78]='xxk')and(c[23]<>v[20])and((a[46]<47)or(d[42]>2))or(v[15]<=2.36)对这个表达式求值,假设表达式中所有数组都是已知的在线给分等待中...
解决方案 »
- 问个问题
- 如何禁止访问局域网,但SQL能访问?
- 急!模态窗体居然会被其它窗体遮盖,请高手指点!
- 寻能画简单电路图控件,还有能够输入一些公式的控件。
- 在d5的quickreport中使用代码在一个band中建立一个qrlabel.谢谢
- delphi7里可以制作XP风格的菜单吗?
- 怎样把从数据库读出的HTML字符串直接显示在webbrowser中?
- 菜鸟提问:作了一个帮助文件,但是怎么在程序中添加它呢?比如:单击"“帮助”按钮,帮助文件就出现了
- 用FILEWRITE写文本文件怎么写的乱七八糟的???
- delphi5
- 和大家探讨delphi中web service的问题,急
- 急问报表导出问题,高分相送!!!!!!!
var
s, subStr: String;
i,istart: Integer;
begin
s := '(a01=1)and(d51>30)or(s78=xxk)and(c23<>v20)and((a46<47)or(d42>2))or(v15<=2.36)';
istart := 1;
for i:=1 to Length(s) do
begin
if (s[i] in ['=','>','<']) then
begin
memo1.Lines.Add(copy(s,istart,i-istart));
istart := i;
end;
end;
memo1.Lines.Add(copy(s,istart,Length(s)-istart+1)); s := '';
for i:=0 to memo1.Lines.Count-2 do
begin
subStr := memo1.Lines[i];
if Length(subStr) <> 1 then
s := s + Copy(subStr,1,Length(subStr)-2) + '[' + Copy(subStr,Length(subStr)-1,2) + ']'
else
s := s + subStr;
end;
s := s + memo1.Lines[memo1.Lines.Count-1];
showMessage(s);
end;
----------------------------------------------------
都在教訓俺?
var
Script: TScriptControl;
begin
try
Script := TScriptControl.Create(nil);
Script.Language := 'vbscript';
Result := Script.Eval(ss);
except
result := 0;
end;
end;
看完楼主的另一个贴子,把a01 --> a[01]转换,是为了用数组存数吧?
其实,不用转换,用TStringList存数就行.var
sl:TStringList;
Value:string;
begin
sl := TStringList.Create;
try
sl.Add('a01=1');
sl.Add('d51=17');
sl.Add('s78=''xxk'''); Value := sl.Values['s78'];//按名取数
ShowMessage(Value);
finally
sl.Free
end;
end;