程序代码如下:
  sysini:= Tinifile.Create('/sys.ini');
  title := sysini.ReadString(article,'title','');
  sysini.Destroy;======================
当我赋值artitle常量时,运行正常,如
artitle = 'article';
当我赋值artitle变量时,运行就异常了,如
article = copy(article,1,7);===================
看了函数的参考,如下
ReadString(const AnsiString Section, const AnsiString Ident, const AnsiString Default);
ReadString的参数是常量的,我如何可以用变量为article赋值???我需要变量赋值,谢谢。

解决方案 »

  1.   

    当用做定义的时候const表示常量,当用作参数的修饰符的时候,表示该参数在函数当中不允许进行修改,从而不会产生复制,这个特点有点类似于var.var与const的共性是都不产生复制,var与const的差异在于var是允许函数内部对参数做出修改并且影响调用者,而const不允许在函数体内做侯.至于楼主的问题,请描述清楚所谓的异常具体是编译不通过,还是运行抛异常,提示信息是什么.
      

  2.   

    函数的参数定义是const时你传变量进去不会出错呀,比如你这个函数,
    函数里面内容我乱写的,参数按照你的来写function ReadString(const Section,Ident,Default:AnsiString):AnsiString;
    begin
      result:=Section+Ident+Default;
    //  section:='abc';   //出错,参数定义为const不允许修改
    end; var
      artitle:string;
    begin
      sysini:= Tinifile.Create('/sys.ini'); 
      artitle = 'article'; 
      title := sysini.ReadString(article,'title',''); 
      artitle =copy(article,1,7);     
      title := sysini.ReadString(article,'title',''); 
     //怎么有可能出错,唯一出错可能就是Tinifile.Create('/sys.ini')
     //可能是Tinifile.Create('.\sys.ini') 
      sysini.Destroy; 
    end;
      

  3.   


    谢谢回复假如artitle从另一个ini文件或其他文本文件读取出来,再作为ReadString的参数调用,就作异常,具体异常是ntdll.dll冲突而用 artitle := 'article'; 这种形式赋值,作为ReadString的参数调用,是不会正常的兄弟可以再试试,谢谢我的article的值恰恰需要从其他文本记录中提取出来的。。
      

  4.   

    同 乌龙哈里 那样,你再多定义一个变量artitle =copy(article,1,7); 
    //而不是
    artitle =copy(artitle,1,7); 
      

  5.   


    定义多一个变量?具体做法是?article := 从文本读取出来的变量值;
    article2 := article;
      sysini:= Tinifile.Create('/sys.ini'); 
      title := sysini.ReadString(article2,'title',''); 
      sysini.Destroy; 
    这样,还是会出错。
      

  6.   

    CONST是常量啊  你给常量重新赋值?
    你随便找个 A=copy(article,1,7); 然后取A 就可以了