急,在一个activexform程序中使用如下简单代码始终报错! ( 积分: 100 )

B

badwood

Unregistered / Unconfirmed
GUEST, unregistred user!
activexform打开了新form1,在form1中有如下简单字符处理。函数,但调用时,能执行,但始终要报错。

function turnnum(c:string):integer;
begin
result:=0;
case c[1] of
'0'..'9':result:=strtoint(c);
'a','A':result:=10;
'b','B':result:=11;
'c','C':result:=12;
'd','D':result:=13;
'e','E':result:=14;
'f','F':result:=15;
end;
end;
////

下面是调用
var
x:string;
first:integer;
begin
x='发动机苏联';
first:=turnnum(x[1])*16+turnnum(x[2]);//运行这句就要报错,但在普通程序中可以正常执行。
end;

请帮忙解决一下
 
activexform打开了新form1,在form1中有如下简单字符处理。函数,但调用时,能执行,但始终要报错。

function turnnum(c:string):integer;
begin
result:=0;
case c[1] of
'0'..'9':result:=strtoint(c);
'a','A':result:=10;
'b','B':result:=11;
'c','C':result:=12;
'd','D':result:=13;
'e','E':result:=14;
'f','F':result:=15;
end;
end;
////

下面是调用
var
x:string;
first:integer;
begin
x='发动机苏联';
first:=turnnum(x[1])*16+turnnum(x[2]);//运行这句就要报错,但在普通程序中可以正常执行。
end;

请帮忙解决一下
 
函数改成:
function turnnum(c:char):integer;
begin
result:=0;
case c of
'0'..'9':result:=strtoint(c);
'a','A':result:=10;
'b','B':result:=11;
'c','C':result:=12;
'd','D':result:=13;
'e','E':result:=14;
'f','F':result:=15;
else
result:=0;
end;
end;
 
把string修改成widestring看看
 
yeskert1 正解
你在调用turnnum时,x[1]已经是一个char类型
 

Similar threads

顶部