小编Dav*_*nan的帖子

为什么在此代码中使用Action?

嗨,我看到以下代码:

void UpdateMessage (string message)
{
    Action action = () => txtMessage.Text = message;
    this.Invoke (action);
}
Run Code Online (Sandbox Code Playgroud)

为什么使用Action然后在这里调用动作?为什么不只是txtMessage.Text = message用来替换函数体中的代码?


更新

在评论中提供的更完整版本的代码,下面再现了语法高亮,缩进等.

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
        InitializeComponent(); 
        new Thread(Work).Start(); 
    } 

    void Work() 
    { 
        Thread.Sleep(5000); 
        UpdateMessage("My Garden"); 
    } 

    void UpdateMessage(string message) { 
        Action action = () => textBox1.Text = message; 
        this.Invoke(action); 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

c# multithreading action invoke

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

检查函数是否是某个对象的方法

如何检查函数是否是某个对象的方法?

例如:

def check_method(f):
    ...

check_method(lambda x: x + 1)           # >>> False
check_method(SomeClass().some_method)  # >>> True
Run Code Online (Sandbox Code Playgroud)

我的'helloworld'示例中的方法中有一些特殊属性(例如'im_self','__ self__'等).我可以依靠它们还是有更好的方法?

python methods function

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

64位Delphi目标可以静态链接到已编译的C对象文件吗?

我的32位Delphi 2010应用程序使用$LINK编译器指令链接到许多C对象文件.在针对64位时,我可以在Delphi XE2中执行此操作吗?

我目前正在使用bcc32版本5.5编译,但我不介意我使用哪个编译器,如果它证明Embarcadero C编译器还没有输出64位对象.

delphi delphi-xe2

12
推荐指数
1
解决办法
2737
查看次数

使用OnKeyDown的Delphi XE和陷印箭头键

我希望我的表单处理箭头键,我可以这样做 - 只要表单上没有按钮.为什么是这样?

windows delphi winapi delphi-xe

12
推荐指数
3
解决办法
7607
查看次数

在Delphi中使用SetLength()时,解除内存的正确方法是什么?

我最近在看一些使用SetLength为一个字节数组分配内存的代码,但我没有看到任何释放该内存空间的逻辑.我已经读过,对于一个字节数组,你应该将值设置为nil还是使用Finalize?

处理这个问题的最佳方法是什么...根据我发现的内容,建议如下...

var
  x: array of byte;
begin
  SetLength(x, 30);
  // Do something here
  :
  // Release the array
  x := nil;
  Finalize(x);
end;
Run Code Online (Sandbox Code Playgroud)

arrays delphi

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

如何使Java看起来像Windows程序?

有没有办法(使用Java)使您创建的GUI看起来像普通的Windows程序?我不喜欢Java按钮和滚动条的外观和感觉......它可以使用它们,如果它在Mac或Linux上运行,但我希望它继承Windows中的按钮和东西.有什么建议?

java windows user-interface swing awt

12
推荐指数
1
解决办法
9361
查看次数

如何将字符串转换为TColor值?

我正在创建一个Delphi表单,并希望在运行时为其指定背景颜色.这段代码:

Form1.Color := clSkyBlue; 
Run Code Online (Sandbox Code Playgroud)

效果很好.我的问题是我已将颜色名称作为字符串存储在表中.因此,当我从表中获取颜色名称并将其分配给时Form1.Color,上面的语句变为:

var
  ColorName: string;
....
Form1.Color := ColorName;
Run Code Online (Sandbox Code Playgroud)

这导致编译时错误.

如何将字符串转换为TColor值?

delphi

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

如何从表单中删除标题栏

有没有人知道如何创建没有标题栏的Delphi表单?我已经看到一些链接/提示,但它不完全是我想要的,我自己也做不到.

这就是我想要实现的目标:

在此输入图像描述

delphi delphi-7

12
推荐指数
1
解决办法
9551
查看次数

Delphi双字节数组

将double值转换为其字节表示的简单方法是什么?我尝试使用如下指针:

var
  double_v:double;
  address:^double;
....
double_v:=100;
address:=@double_v;
Run Code Online (Sandbox Code Playgroud)

但我的每一个概念:如何从地址读取8个字节,以"AV"结束.

delphi pointers

12
推荐指数
3
解决办法
4506
查看次数

对于非寄存器大小的操作数,shl和shr的行为是什么?

这个问题的灵感来自于我尝试回答另一个问题:将十进制/整数转换为二进制 - 它是如何以及为什么以它的方式工作?

我能找到的按位移位运算符的唯一文档说:

操作x shl y和x shr y将x的值向左或向右移位y位,其中(如果x是无符号整数)等于x乘以或除以2 ^ y; 结果与x的类型相同.例如,如果N存储值01101(十进制13),则N shl 1返回11010(十进制26).请注意,y的值以x的类型的大小为基础进行解释.因此,例如,如果x是整数,则x shl 40被解释为x sh18,因为整数是32位而40 mod 32是8.

考虑这个程序:

{$APPTYPE CONSOLE}
program BitwiseShift;
var
  u8: Byte;
  u16: Word;
  u32: LongWord;
  u64: UInt64;
begin
  u8 := $ff;
  Writeln((u8 shl 7) shr 7);
  // expects: 1 actual: 255

  u16 := $ffff;
  Writeln((u16 shl 15) shr 15);
  // expects: 1 actual: 65535

  u32 := $ffffffff;
  Writeln((u32 shl 31) shr 31);
  // expects: 1 actual: 1

  u64 := $ffffffffffffffff;
  Writeln((u64 …
Run Code Online (Sandbox Code Playgroud)

delphi

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