OK,大家看看代码:var Temp:String
For Index:=0 to MainFrm.ActionListMain.ActionCount -1 do
   begin      Temp:=TAction(MainFrm.ActionListMain.Actions[Index]).Caption;
      //TAction(MainFrm.ActionListMain.Actions[Index]).Caption 还是显示正常的
      //Temp显示确是乱码了,为'????'
   end;TAction(MainFrm.ActionListMain.Actions[Index]).Caption是中文,不是英文,如果是英文当然没问题

解决方案 »

  1.   

    var
      i:integer;
      vTemp:String;
    begin
      inherited;
      for i:=0 to ActionList1.ActionCount -1 do
      begin
        vTemp:=TAction(ActionList1.Actions[i]).Caption;
        ShowMessage(format('vtemp=%s, caption=%s',[vTemp,TAction(ActionList1.Actions[i]).Caption]));我试过了,没有问题。
      end;
      

  2.   

    测试没问题var
      Temp:String ;
      i: integer;
    begin
      for i:=0 to ActionList1.ActionCount-1 do
      begin
          Temp:=TAction(ActionList1.Actions[i]).Caption;
          ShowMessage(TAction(ActionList1.Actions[i]).Caption);
          ShowMessage(Temp);
       end;
    end;
      

  3.   

    各位,TAction(ActionList1.Actions[i]).Caption 是中文啊,如果是英文是没什么问题的
      

  4.   

    还是不行,是示都是'???'什么的,我用的是delphi7,
      

  5.   

    简体2000,delphi7 ,应该跟操作系统没什么关系,我想是不是在强制转换成TAction时,中文字符出问题了,??
      

  6.   

    你先试一下Temp:='有问题没有';先不用ActionList中的值
      

  7.   

    Temp:= FF.Caption  ;
    ShowMessage(format('Temp=%s',[Temp]));
    Temp:=TAction(ActionList1.Actions[0]).Caption;
    ShowMessage(format('Temp=%s, caption=%s',[Temp,TAction(ActionList1.Actions[0]).Caption]));//测试过好多遍了,其实FF就是ActionList1.Actions[0],直接用FF.Caption赋给Temp没什么问题
    但用Temp:=TAction(ActionList1.Actions[0]).Caption却成了乱码了,我怀疑是强制转换为TAction这里面有问题,不知有没有解决的办法