zoukankan      html  css  js  c++  java
  • 在 API 函数中使用 PChar 参数的几种方法


    //以 GetWindowsDirectory 为例:
    
    { 以静态数组做缓冲区 }
    procedure TForm1.Button1Click(Sender: TObject);
    var
      buf: array[0..MAX_PATH-1] of Char;
    begin
      GetWindowsDirectory(buf, SizeOf(buf));
      ShowMessage(buf); { C:\\WINDOWS }
    end;
    
    { 自己分配内存 }
    procedure TForm1.Button2Click(Sender: TObject);
    var
      p: PChar;
    begin
      p := StrAlloc(MAX_PATH);
      GetWindowsDirectory(p, StrBufSize(p));
      ShowMessage(p); { C:\\WINDOWS }
      StrDispose(p);
    end;
    
    { 直接使用 string; 这和下一种方法都需要再删除尾部空白 }
    procedure TForm1.Button3Click(Sender: TObject);
    var
      str: string;
      len: Integer;
    begin
      SetLength(str, MAX_PATH);
      len := GetWindowsDirectory(PChar(str), ByteLength(str));
      SetLength(str, len);
      ShowMessage(str); { C:\\WINDOWS }
    end;
    
    { 同时, 把 PChar(str) 改为 @str[1] }
    procedure TForm1.Button4Click(Sender: TObject);
    var
      str: string;
      len: Integer;
    begin
      SetLength(str, MAX_PATH);
      len := GetWindowsDirectory(@str[1], ByteLength(str));
      SetLength(str, len);
      ShowMessage(str); { C:\\WINDOWS }
    end;
    
    { 这种方法最好, 先获取结果的长度... }
    procedure TForm1.Button5Click(Sender: TObject);
    var
      len: Integer;
      str: string;
    begin
      len := GetWindowsDirectory(nil, 0);
      SetLength(str, len);
      GetWindowsDirectory(PChar(str), len);
      ShowMessage(str); { C:\\WINDOWS }
    end;
    
  • 相关阅读:
    Django框架之ORM常用字段和参数、单表操作
    Django框架之模板层
    Django框架之视图层
    Django框架之路由层,本地虚拟环境搭建
    Django框架
    Django框架
    在学习Django框架之前所需要了解的知识点
    JQuery
    Android开发(八)-界面编程
    Android开发(七)-签名APK
  • 原文地址:https://www.cnblogs.com/del/p/1721350.html
Copyright © 2011-2022 走看看