如何在delphi中使用`TArg<PAnsiChar>`?

Posted

技术标签:

【中文标题】如何在delphi中使用`TArg<PAnsiChar>`?【英文标题】:How to use `TArg<PAnsiChar>` in delphi? 【发布时间】:2018-03-29 10:42:01 【问题描述】:

如何使用TArg&lt;PAnsiChar&gt;

编译器说它是未定义的。

我需要包含一些东西、安装一些东西还是我需要什么? 谷歌搜索后,我只找到了 Delphi 的 Spring Framework。我不太确定这是否是使用&lt;TArg&lt;PAnsiChar&gt; 所需要的。我正在使用 Delphi Starter 10.2。

感谢您对此提供的任何帮助...


来自 cmets 的更新:

这个问题使用了TArg&lt;PAnsiChar&gt;这个表达式:

CreateProcess using netsh hangs/freezes the application [Delphi]

procedure GetDosOutput(const ACommand, AParameters: String; CallBack: TArg<PAnsiChar>);

【问题讨论】:

如果编译器没有找到声明,添加声明或声明它的单元。之后就可以使用它了。如果你不知道它是什么或者这个表达式来自哪里,那么使用它的目的是什么? 顺便说一句,Spring4D TArg 是具有通用方法的记录,例如 TArg.Isxxx&lt;T&gt;,这与问题中的不同。 您真的需要告诉我们您认为TArg 是什么。编译器消息很清楚不是吗。 向我们展示一些上下文。您打算如何使用它,为什么? ***.com/questions/20712386/… procedure GetDosOutput(const ACommand, AParameters: String; CallBack: TArg); 【参考方案1】:

从链接的问题可以看出TArg&lt;PAnsiChar&gt;被用作回调参数:

procedure GetDosOutput(const ACommand, AParameters: String; CallBack: TArg<PAnsiChar>);

在调用中用作匿名过程:

GetDosOutput(ACommand, AParameters, 
  procedure (const Line: PAnsiChar)
  begin
    Tmp := Line;
    S := S + Tmp;
  end
);

这意味着TArg&lt;PAnsiChar&gt; 的声明应如下所示:

type
  TArg<T> = reference to procedure (const Arg1: T);

【讨论】:

以上是关于如何在delphi中使用`TArg<PAnsiChar>`?的主要内容,如果未能解决你的问题,请参考以下文章

delphi调用外部程序~~~~~~~~~~~~

我如何在不使用Delphi约束的情况下确定泛型类型为nil?

如何将清单 <requestedPrivileges> 信息添加到 delphi 项目中

delphi如何访问xml文件

【delphi线程】 如何自动释放?

如何单击按钮类 WebBrowser Delphi