本帖最后由 W9757 于 2011-03-30 10:29:45 编辑

解决方案 »

  1.   

    你写反了
    ShowMessage(IntToStr(AnsiPos('=',a)));
      

  2.   

    1:有没有可以自动以=为界把两边的值取出的函数.var
      str:TStrings;
      a:string;
    begin
      a:='afef=1';
      str:=TStringList.Create;
      str.Clear;
      ExtractStrings(['='],[],PChar(a),str);
      self.ListBox1.Items:=str;
    end;
      

  3.   


    a:='afef=1'
    ShowMessage(PChar('键名: '+LeftStr(a,AnsiPos('=',a))));
    // 应该反回的是afef吧?可我的反回是全部.
      

  4.   

    leftstr(atext:string;acount:integer)是返回字符串atext中从左开始长度为acount的子串你这个应该返回值为afef=,因为AnsiPos('=',a)的返回值是5
      

  5.   

    ShowMessage(PChar('键名: '+LeftStr(a,AnsiPos('=',a))));
    我的返回的是afef=1,不解.
      

  6.   

    我的代码是这样的.procedure TxgForm2.N6Click(Sender: TObject);
    var
    s:TStringlist;
    ss:string;
    i1,i:integer;
    begin
     s:=TStringList.Create;
     s.LoadFromFile( 'E:\seiko\order_tj\show.ini ');
    for i:=s.Count-1 downto 0 do
     begin
      ss:=(s.Strings[i]);  //s[i].string;
      ShowMessage(inttostr(Length(ss)));//这里计算正常
      ShowMessage(inttostr(Length(ss)-2));//这里计算正常
      ShowMessage(LeftStr(ss,AnsiPos('=',ss)-1));//这里就不对了,减不减1,反回的结果都是全部SS的内容.
     end;end;
      

  7.   

    ShowMessage(Copy(ss,1,Pos('=',ss)-1));这样就可以.搞不明白了.
      

  8.   

    str:=TStringList.Create;
    str.Add('afef=1');
    ShowMessage(str.Names[0]);
    ShowMessage(str.Values[0]);
      

  9.   

    何必搞那么复杂,INI直接用IniFile类啊,或者你这情况用ExtractStrings函数也可以啊
    还不能满足你再用正则提取啊…………
      

  10.   

    var
      sl: TStringList;
      a: string;
    begin
      a  := 'afef=1';
      sl := TStringList.Create;
      sl.Add(a);
      Form1.Caption := sl.Values['afef'];  //得出的结果是1.
      sl.Free;
    end;