是不是不能有相同的变量名与函数名同一排(50分)

  • 主题发起人 主题发起人 iknowabc
  • 开始时间 开始时间
I

iknowabc

Unregistered / Unconfirmed
GUEST, unregistred user!
编写程序时遇到一个小问题:
procedure TForm1.Button1Click(Sender: TObject);
var
pos:integer;
tempstr:string;
begin
tempstr:='http://hi';

pos:=pos('//',tempstr);
//complier老是说上一行Missing operator or semicolon
showmessage(inttostr(pos));
end;
而下面这个就能正常编译通过。
procedure TForm1.Button2Click(Sender: TObject);
var
pos2:integer;
tempstr:string;
begin
tempstr:='http://hi';

pos2:=pos('//',tempstr);
showmessage(inttostr(pos2));
end;

下面也是:
strtoint:='1';
i:=strtoint(strtoint);

不知是不是不能有相同的变量名与函数名同一排?
 
delphi的语法是以分号为语句的分割,是否同一排没关系。我估计你使用了delphi的保留字,
有些单词和字母组合是不可以作变量的
 
你定义Pos是一个数字,Delphi就认为Pos是一个数字,不是原来的Pos函数了!这时候的
pos('//',tempstr);就相当于 i('//',tempstr);当然是错误的!
第二个也一样,你定义你定义StrToInt是一个数字就别想把它当函数用.
但你可以这样用:
pos:=System.Pos('//',tempstr);
i:=SysUtils.StrToInt(strtoint);
因为指出是别的单元的函数
 
pos:=pos('//',tempstr)


因為你在函數中定義變量 pos: integer;
所以兩個pos都被當成是變量pos
而pos('//', tempstr)中, pos已被當成是變量而不是函數, 所以在Compiler時不通過
如果要引用為函數Pos, 則要指名Unit, 即改成如下: System.Pos('//', tempstr);
全部是相同的問題
 
多人接受答案了。
 
后退
顶部