procedure TForm1.Timer1Timer(Sender: TObject);
var
myxm:string;
f1:textfile;
begin
timer1.Enabled:=false;
assignfile(f1,ExtractFilePath(paramstr(0))+'程序.txt');
reset(f1);
readln(f1,myxm);
closefile(f1); case myxm of
'执行查询':cx();
'执行替换':th();
end;
Application.terminate;
end;上面程序用于判断读入变量的值,决定调用何过程,但delphi提示case myxm of 这一行错误,请问是何原因?该如何修改?
var
myxm:string;
f1:textfile;
begin
timer1.Enabled:=false;
assignfile(f1,ExtractFilePath(paramstr(0))+'程序.txt');
reset(f1);
readln(f1,myxm);
closefile(f1); case myxm of
'执行查询':cx();
'执行替换':th();
end;
Application.terminate;
end;上面程序用于判断读入变量的值,决定调用何过程,但delphi提示case myxm of 这一行错误,请问是何原因?该如何修改?
解决方案 »
- delphi中Edit1输入数值更新SQL表中某一字段类型为money
- 求助:怎么使 treeview 的叶子都在展开?谢谢!
- 怎样直接从内存中将页面中的图片,脚本等导入TWebBrowser.
- 从DLL文件中读取数据错误
- 如果一个class中要用到以后才定义的另一class,怎么办?
- 送分了
- 有关TTreeView的八个问题?(15*8)
- 47分的问题!!!!求救!!!
- 也许是一个弱智的问题,或者是一个很多人都不清楚的问题。到底是什么是COM,什么是AtiveX???
- 请问什么地方有提供注册码的 Report Builder 下载?
- 请问如何在services程序中调用winexec或者类似的api.
- 请问一下有没有人做过B/S结构的服务器端.小弟公司刚碰到这样的项目.请问一下,要从哪里入手,要学什么东西.??
怎么CASE?>>看来delphi也有好多不如VB的地方
每种编译器语法上有自己的处理方式
如果这个都让你觉得不如VB
我无话可说
呵呵
但功能比VB强大的多
解决它的根本思想是将字符串列转化成可比较的顺序类型。最简单的方法是将这些字符串作为一个字符串数组,它们在数组中的索引即代表它们各自的顺序。
首先建立 CaseString 函数,用于获取某字符串在一个字符串数组中的顺序:
function CaseString (const s: string;
const x: array of string): Integer;
var i: Integer;
begin
Result:= -1; // Default return parameter
for i:= Low (x) to High (x) do begin
if s = x[i] then begin Result:= i; Exit; end;
end;
end;
Low() 提供第一个数组成员(通常是0),High() 则返回最后一个。因为 CaseString 返回的是待查字符串在字符串数组中的位置,因此,它可以被直接用到 CASE 语句中:
search:= 'delphi3000';
case CaseString (search, ['delphi3000',
'delphipages',
'Torry's']) of
0: s:= 'Excellent!';
1: s:= 'Good source';
2: s:= 'Not bad!';
end;
这里我介绍另一种使用 TStringList 的解决方法。
示例1:
var
SelectStrings: TStringList;
...
{ Initialization }
SelectStrings := TStringList.Create;
SelectStrings.Add('First'); (*1*)
SelectStrings.Add('Second'); (*2*)
SelectStrings.Add('Third'); (*3*)
...
{ Use it }
case SelectStrings.IndexOf(sPassedString) of (*4*)
0: //First
begin
<do something>
end;
1: //Second
begin
<do something>
end;
2: //Third
begin
<do something>
end;
end;
...
{ Finalization }
SelectStrings.Free;
上面是大小写敏感的比较,如果要对大小写不敏感则改用下面的比较方法:
SelectStrings.Add(AnsiUpperCase('First')); (*1*)
SelectStrings.Add(AnsiUpperCase('Second')); (*2*)
SelectStrings.Add(AnsiUpperCase('Third')); (*3*)
case SelectStrings.IndexOf(AnsiUpperCase(sPassedString)) of (*4*)
(注意:不要使用 UpperCase, 应使用 AnsiUpperCase, 否则你的程序将在国际化中工作不正常。)
case myxm[1] of
'执行查询':cx();
'执行替换':th();
end;