我用getwindowsdirectory函数得到系统的路径,怎样才能把这路径的后五位赋值给一个字符串?
比如:
var
buff:array [1..255] of char
c,s:string;
begin
getwinodwsdirectory(@buff,255);
s:=buff;
c:=rightstr(s,5);
但c却得不到值,为什么?

解决方案 »

  1.   

    GetWindowsDirectory(buff,DWORD(255));
    不要加@
      

  2.   

    var
     buff:pchar;//array [1..20] of char;
     c,s:string;
    begin
     getmem(buff,20) ;
     getwindowsdirectory(buff,20);
     s:=buff;
     c:=rightstr(s,5);
     showmessage(c);
    end;
      

  3.   

    procedure TForm1.Button26Click(Sender: TObject);
    var
      s : string;
    begin
      SetLength(s, 256);
      GetWindowsDirectory(PCHAR(s), 256);
      Edit1.Text := s;
    end;
      

  4.   

    procedure TForm1.Button26Click(Sender: TObject);
    var
      s : string;
    begin
      SetLength(s, 256);
      GetWindowsDirectory(PCHAR(s), 256);
      SetLength(s, StrLen(PChar(s)));  //要这个
      Edit1.Text := s;
    end;
      

  5.   

    严格说来要
     SetLength(s, StrLen(PChar(s)));  //要这个