在编程中,我常常因为程序的需要,把某个类型转换成相同类型,例如:把整型转换成字符串,在有些时候不能进行此操作?这是为什么?例如:
mediaplayer.filename:='文件名';
这个代码中,必须是一个可以被它识别的字符串文件,如果把一个整型赋给它,是用强制转换函数把它换成字符串,这种情况下,mediaplayer.filename无法识别它是一个正确的文件,也就是说它根本不认识它是什么格式的文件!为什么别的强制类型转换可以?

解决方案 »

  1.   

    procedure setValue(str : string);
    begin
      fileName := str;
    end;
    procedure setValue(str : string);
    begin
      if Pos('.mp3',str) < 0 then 
      begin
       Error;
       Exit;
      end;
      fileName := str;
    end;
      

  2.   

    integer到string用强制转换函数当然有问题
    如:
    var
     i:integer;
    ...
     ShowMessage(String(i));
    语法上没问题,但运行肯定出错要将integer转成string,可用:strtoint
    或直接用format如:
    i:=5;
    mediaplayer.文件名':=format('文件名%d',[i]);
    这样,format就为'文件名5'了
      

  3.   

    忘记了我没说完整,在接着写mediaplayer1.play;就出现问题!
      

  4.   

    lz,上面已经给你描述了下,因为播放的时候要判断你上面赋的filename是否是指定的文件名、如果单纯的赋值是没问题地
      

  5.   

    不要用Pos,用ExtractFileExt,否则出现“Song.mp3.bak”这样的文件名的时候就挂了。
      

  6.   

    看了楼主的叙述真是头晕啊...如果你的MP3的名字都是1.mp3,2.mp3一类的,而你现在想播放2.mp3。你这么写就好了:
    var
      _count: integer;
      _filename: string;
    begin
      _count := 2; 
      _fileName := format('%d.mp3', [_count]);
      if not FileExists(_fileName) then
        Exit;
      mediaplayer.filename := _fileName; //此处使用的是相对路径,程需要和
                                                                 //2.mp3放一个目录
      mediaplayer.play;
      

  7.   

    文件名不能以数字开头, 我一般是这样 'A'+intostr(变量)
      

  8.   

    mediaplayer.filename:='文件名'; 
    mediaplayer1.play
    根据楼主上下文,是否是你程序本身错误?
    不是的话,我觉得根据楼上说的应该能解决你的问题了,结贴吧