可能没大说清楚,举个例子:
ShowMessageFmt('wide:%d ansi:%d',[Pos('1','四季度1'),Pos('1',widestring('四季度1'))]);
这样得到的wide是4而ansi是7,现在我有一个函数,返回的数值是以ansipos的,但我想把这个数值转换成以widestring
pos的,怎么办?

解决方案 »

  1.   

    有点麻烦,下面的程序虽在中文windows下可以运行,但在英文windows下不行procedure TForm1.Button1Click(Sender: TObject);
    var
      s: String;
      n,k: Integer;
      p: PChar;
    begin
      s := '四季度1';
      n := 7;
      p := PChar(s);
      k := 0;
      while (p <> nil) and (p < pchar(s) + n) do
      begin
        p := CharNextExA(CP_OEMCP,p,0);
        Inc(k);
      end;
      Caption := IntToStr(k);
    end;