【问题标题】:How to use `TArg<PAnsiChar>` in delphi?如何在delphi中使用`TArg<PAnsiChar>`?
【发布时间】: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 是什么。编译器消息很清楚不是吗。
  • 向我们展示一些上下文。您打算如何使用它,为什么?
  • stackoverflow.com/questions/20712386/… procedure GetDosOutput(const ACommand, AParameters: String; CallBack: TArg);

标签: delphi createprocess


【解决方案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);

【讨论】:

    猜你喜欢
    • 2011-05-31
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多