有一个函数声明如下:
function StringToWideChar(const Source: string; Dest: PWideChar;
  DestSize: Integer): PWideChar;
我调用时用这种方式调用:
StringToWideChar(mFilename, @mFilenameW, FILENAME_LENGTH);
其中
    const FILENAME_LENGTH = 400;
    mFilenameW:array[0..FILENAME_LENGTH] of PWideChar;
    mFilename:String; 
    
编译时出错为:incompatible types 'array' and 'widechar'能否给出详细回答?
多谢!多谢!

解决方案 »

  1.   

    试试将mFilenameW:array[0..FILENAME_LENGTH] of PWideChar;
    改为mFilenameW:PWideChar;
        
      

  2.   

    mFilenameW:array[0..FILENAME_LENGTH] of PWideChar;和定义的类型不同;
    你需要
    StringToWideChar(mFilename, mFilenameW[0], FILENAME_LENGTH);
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    procedure test(dd:pwidechar);
    begin
      showmessage(pchar(dd));
    end;
    VAR
      D:ARRAY[0..10] OF WIDECHAR;
    begin
      fillchar(d,11,'a');
      test(d);
    end;
      

  4.   

    VAR
      D:ARRAY[0..10] OF WIDECHAR;也许你应该这么定义;
      

  5.   

    我已经解决这个问题:在project->options->compile->systax options 中,
    关闭: _typed @ operator 
    我是D7问题虽然解决,但原因很不清楚,而且关于@和^号的问题经常在实际中碰到,希望各位大哥就这个问题踊跃发言,争取能整理出一篇有意义的稿件.