小编Hei*_*cht的帖子

如何在变量值改变时触发事件?

我目前正在使用Visual Studio在C#中创建一个应用程序.我想创建一些代码,以便当变量的值为1时,执行某段代码.我知道我可以使用if语句,但问题是该值将在异步进程中更改,因此从技术上讲,if语句可以在值更改之前被忽略.

是否可以创建事件处理程序,以便在变量值更改时触发事件?如果是这样,我该怎么做?

完全有可能我误解了if语句是如何工作的!任何帮助将非常感激.

c# silverlight event-handling visual-studio windows-phone-7

90
推荐指数
5
解决办法
17万
查看次数

ASCIIEncoding在Windows Phone 7中

有没有办法在Windows Phone 7中使用ASCIIEncoding?

除非我做错了什么Encoding.ASCII不存在,我需要它用于C# - > PHP加密(因为PHP仅在SHA1加密中使用ASCII).

有什么建议?

c# encoding ascii windows-phone-7

19
推荐指数
1
解决办法
1万
查看次数

是否存在像TInterfacedObject这样的非引用计数基类?

我需要一个基类,TInterfacedObject但没有引用计数(所以一种TNonRefCountedInterfacedObject).

这实际上是第n次我需要这样一个课程,不知何故,我总是一次又一次地写作(阅读:复制和粘贴)我自己.我无法相信我没有可以使用的"官方"基类.

在RTL实现的某个地方是否存在基类,IInterface但没有引用计数,我可以从中派生我的类?

delphi interface reference-counting delphi-xe

16
推荐指数
1
解决办法
1864
查看次数

使用匿名方法的VCL事件 - 您对此实现有何看法?

由于在Delphi中出现了匿名方法,我想在VCL组件事件中使用它们.显然,为了向后兼容,VCL没有更新,所以我设法做了一个简单的实现,但有几点需要注意.

type
  TNotifyEventDispatcher = class(TComponent)
  protected
    FClosure: TProc<TObject>;

    procedure OnNotifyEvent(Sender: TObject);
  public
    class function Create(Owner: TComponent; Closure: TProc<TObject>): TNotifyEvent; overload;

    function Attach(Closure: TProc<TObject>): TNotifyEvent;
  end;

implementation

class function TNotifyEventDispatcher.Create(Owner: TComponent; Closure: TProc<TObject>): TNotifyEvent;
begin
  Result := TNotifyEventDispatcher.Create(Owner).Attach(Closure)
end;

function TNotifyEventDispatcher.Attach(Closure: TProc<TObject>): TNotifyEvent;
begin
  FClosure := Closure;
  Result := Self.OnNotifyEvent
end;

procedure TNotifyEventDispatcher.OnNotifyEvent(Sender: TObject);
begin
  if Assigned(FClosure) then
    FClosure(Sender)
end;

end.
Run Code Online (Sandbox Code Playgroud)

以下是它的用法:

procedure TForm1.FormCreate(Sender: TObject);
begin    
  Button1.OnClick := TNotifyEventDispatcher.Create(Self,
    procedure (Sender: TObject)
    begin
      Self.Caption := 'DONE!'
    end)
end;
Run Code Online (Sandbox Code Playgroud)

我相信很简单,有两个缺点:

  • 我必须创建一个组件来管理匿名方法的生命周期(我浪费了更多的内存,对于间接方式来说它有点慢,我仍然希望在我的应用程序中更清晰的代码)

  • 我必须为每个事件签名实现一个新类(非常简单).这个有点复杂,VCL仍然有非常常见的事件签名,而且对于我创建类的每一个特殊情况,它都是永远完成的. …

delphi vcl anonymous-methods

15
推荐指数
2
解决办法
4115
查看次数

我可以确定我的单位初始化的顺序吗?

我正在寻找可能与单元初始化顺序相关的错误.有没有办法看到哪个initialization部分执行时?我需要知道订单.这是在调试期间,所以我拥有Delphi IDE的全部功能,在我的案例中是Delphi 2009.

我可以设置断点,但是当有很多单位时这是相当繁琐的.

你有什么建议吗?

windows delphi debugging desktop-application delphi-2009

13
推荐指数
2
解决办法
3408
查看次数

我们可以为"Skype for Business"构建Skype机器人吗?

我见过与"Skype"配合使用的机器人编程示例.是否有可能使用Microsoft的Bot/Cognitive服务工具/框架开发在"Skype for Business"上运行的企业机器人?

skype-for-business microsoft-cognitive skypedeveloper skype-bots microsoft-skype-bot

12
推荐指数
2
解决办法
8163
查看次数

是否可以使用全局异常挂钩?

我的代码很好地涵盖了异常处理(try..except).预计不会发生一些异常,并且会经常发生一些异常,这是预期的,也可以.现在我想为这段代码添加一些自动化测试.知道在执行期间发生了多少异常会很好,所以我稍后可以看到是否提出了预期的数字或发生了什么意外.我不想用调试代码混淆每个异常处理块,所以我的问题是:

有没有办法安装某种全局异常处理程序,它位于所有其他异常处理块之前?我正在寻找一个记录这些例外的中心位置.

谢谢你的任何建议!

(如果这很重要:它是Delphi 2009)

delphi exception-handling

11
推荐指数
2
解决办法
4435
查看次数

编译器忽略Exit命令的缺失括号

为什么Delphi编译器会忽略这个缺少的括号?

function Test: Boolean;
begin
  Exit(True;    // <-- eek! it compiles...
end;
Run Code Online (Sandbox Code Playgroud)

我发现我的一些代码看起来像这样,并且首先认为Delphi忽略了我的单元 - 但它只是忽略了这种类型的语法错误.所以现在我当然想知道原因.

delphi delphi-2009 delphi-xe

11
推荐指数
1
解决办法
387
查看次数

如何将方法作为回调传递给Windows API调用?

我想将类的方法作为回调传递给WinAPI函数.这是可能的,如果可以,怎么样?

设置计时器的示例:

TMyClass = class
public
  procedure TimerProc(Wnd:HWND; uMsg:DWORD; idEvent:PDWORD; dwTime:DWORD);
  procedure DoIt;
end;
[...]
procedure TMyClass.DoIt;
begin
  SetTimer(0, 0, 8, @TimerProc);  // <-???- that's what I want to do (last param)
end;
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

编辑:目标是将此类的方法指定为回调.课外没有程序.

编辑2:我感谢你的帮助,但只要该方法没有"TMyClass".在它的名字前面它不是我正在寻找的.我曾经这样做,但想知道是否可以完全保持在面向对象的世界.指针魔术欢迎.

delphi winapi

8
推荐指数
2
解决办法
5390
查看次数

Delphi messagebox出现在其他表单后面

我正在使用下面的代码在Delphi 7中创建一个消息框.但是我在屏幕上还有另一个表单FormStyle设置为fsStayOnTop,并且消息框出现在此表单后面.

有没有办法强制消息框出现在前面?

    if Application.MessageBox('Amessage here','Title', +MB_APPLMODAL + MB_ICONQUESTION + MB_YESNO) = IDNO then
Run Code Online (Sandbox Code Playgroud)

delphi messagebox delphi-7

8
推荐指数
1
解决办法
7273
查看次数