delphi中case of问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi中case of问题相关的知识,希望对你有一定的参考价值。
我想实现判断ComboBox1中内容是‘人事部',财务部'还是技术部',从而保存他们各自的编号pid到数据库中去。代码如下:那里错了?如何实现
a:= ComboBox1.text;
case a of
'人事部': ADOTable1.FieldByName('pid').AsString:= 1;
'财务部': ADOTable1.FieldByName('pid').AsString:= 2;
'技术部': ADOTable1.FieldByName('pid').AsString:= 3;
i:=ComboBox1.ItemIndex; 报错Incompatible types:'string' and 'Integer'
case i of 报错Ordinal type required
0: ADOTable1.FieldByName('pid').AsString:= 1; 报错Incompatible types:'string' and 'Integer'
1: ADOTable1.FieldByName('pid').AsString:= 2; 同上
2: ADOTable1.FieldByName('pid').AsString:= 3; 同上
'人事部':
'财务部':
'技术部':
是不对呀,case a of 这个的a只能是整型数字呀!您可以这样做,用ComboBox1.ItemIndex属性来做:
i:= ComboBox1..ItemIndex;
case i of
0: ADOTable1.FieldByName('pid').AsString:= '0';//对应***部
1: ADOTable1.FieldByName('pid').AsString:= '1';//对应人事部
2: ADOTable1.FieldByName('pid').AsString:= '2';//财务部
3: ADOTable1.FieldByName('pid').AsString:= '3';//技术部
----------------------------------------------
针对您的补充,回答:
问题补充:i:=ComboBox1.ItemIndex; 报错Incompatible, types:'string' and 'Integer'//没有定义i,您必须先定义i:integer;
case i of 报错Ordinal type required
0: ADOTable1.FieldByName('pid').AsString:= 1; 报错Incompatible types:'string' and 'Integer'// 用‘’把1括起来,因为是字符串的。
1: ADOTable1.FieldByName('pid').AsString:= 2; 同上// 用‘’把2括起来,因为是字符串的。
2: ADOTable1.FieldByName('pid').AsString:= 3; 同上// 用‘’把3括起来,因为是字符串的。本回答被提问者采纳 参考技术B case a of 这个的a只能是整型数字
i:integer;
begin
i:=ComboBox1.ItemIndex;
case i of
0: ADOTable1.FieldByName('pid').AsString:= 1;
1: ADOTable1.FieldByName('pid').AsString:= 2;
2: ADOTable1.FieldByName('pid').AsString:= 3;
end;
end;
delphi的case of 问题。
var
QQ:String;
begin
case Edit1.Text[1] of//取Edit1.Text的第一个字符
'A':begin
end;
'B':begin
end';
end;
可以这样用吗?
我记得delphi里的case里的条件只能用 数字,不能用字符或者字符串的 参考技术A 倒数第二个End后面的单引号去掉,其它的没问题,呵呵,其实用Delphi环境实际测试一下就知道了。 参考技术B 可以,下标超过长度后将返回空值。 但倒数第二个End后面的确实多了1个单引号。
以上是关于delphi中case of问题的主要内容,如果未能解决你的问题,请参考以下文章