var
    iFileHandle: Integer;
    iFileLength: Integer;
    ConnectionStrBuf:PChar;
..........
               ConnectionStrBuf:=PChar(AllocMem(iFileLength+1));
               FileRead(iFileHandle, ConnectionStrBuf^, iFileLength);
               FileClose(iFileHandle);
               SPSADOConnection.ConnectionString:= ConnectionStrBuf;               showmessage(SPSADOConnection.ConnectionString);//这里发现了只赋了一个字符
..........我想ConnectionStrBuf是PChar型,怎么才能把它的内容赋给一个widestring型?

解决方案 »

  1.   

    var
      P: PChar;
      W: WideString;
      S: string;
    begin
      S := 'PChar needs to be allocated memory before using it.'#13#10 +
           'You should call FreeMem to dispose its memory, too.';
      GetMem(P, 200);
      StrLCopy(P, @S[1], 200);
      W := P;
      ShowMessage(W);
      FreeMem(P);
    end;
      

  2.   

    try
                   GetMem(ConnectionStrBuf,iFileLength+1);
                   FileRead(iFileHandle, ConnectionStrBuf^, iFileLength);
                   FileClose(iFileHandle);
                   ConnectionStrBuf[iFileLength]:=#0;
                   SPSADOConnection.ConnectionString:= String(ConnectionStrBuf);
    finally
      FreeMem(ConnectionStrBuf);
    end;
      

  3.   

    GetMem(ConnectionStrBuf,iFileLength+1);
    try
                   FileRead(iFileHandle, ConnectionStrBuf^, iFileLength);
                   FileClose(iFileHandle);
                   ConnectionStrBuf[iFileLength]:=#0;
                   SPSADOConnection.ConnectionString:= String(ConnectionStrBuf);
    finally
      FreeMem(ConnectionStrBuf);
    end;
      

  4.   

    to  Hillside(要命的是买不到D盘了): 还是不行,用messagebox打印connectionstrbuf里面的内容还是只有第一个字符
      

  5.   

    var
      iFileHandle: Integer;
      iFileLength: Integer;
      ConnectionStrBuf:WideString;
    .....
      SetLength(ConnectionStrBuf,iFileLength);
      FileRead(iFileHandle, ConnectionStrBuf[1], iFileLength);
      FileClose(iFileHandle);
      SPSADOConnection.ConnectionString:= ConnectionStrBuf;
      ShowMessage(SPSADOConnection.ConnectionString);
      

  6.   

    你的代码中:
     SPSADOConnection.ConnectionString:= ConnectionStrBuf;
    改为:
     SPSADOConnection.ConnectionString:=WideString(ConnectionStrBuf);
    var
      ConnectionStrBuf:PChar;
    改为:
      ConnectionStrBuf:PWideChar;
      

  7.   

    blazingfire(烈焰):谢谢您,问题解决了