小编Dav*_*nan的帖子

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

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

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

delphi delphi-xe2

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

如何让Delphi独自离开我的DFM?

使用DXE2,我编写了一个表单生成器,可以创建.pas和.dfm文件.我正在编写一个例程,允许我修改dfm中的不同属性,例如Font.Height和TabOrder.

当我在记事本中打开生成的文件时,一切看起来都与我期望的完全一样.当我在Delphi中打开它时,属性会发生变化!令人沮丧的是我使用最初在Delphi IDE中设计的表单作为我的模板.我不明白为什么Delphi不尊重我的简单改变...

例如,原始Font.Height是-11.我在dfm中读到,将其更改为-17,然后保存.在记事本中,它显示-17.当我在Delphi中打开它时,它显示为-21!

任何想法/提示/建议将不胜感激!

delphi delphi-xe2

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

如何将字符串转换为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双字节数组

将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
查看次数

如何在Delphi中的BitBtn上放置GIF/PNG/...图像?

我正在使用Delphi 2007.如何在BitBtn组件上放置GIF/PNG图像?(最好支持alpha透明度)

delphi delphi-2007

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

在C中,+ = b比a = a + b更有效吗?

我在某些语言中知道以下内容:

a += b
Run Code Online (Sandbox Code Playgroud)

比以下更有效:

a = a + b
Run Code Online (Sandbox Code Playgroud)

因为它不需要创建临时变量.这是C的情况吗?使用+ =更高效(因此也是-= *=等)

c variable-assignment assignment-operator

11
推荐指数
4
解决办法
1882
查看次数

如何引用局部变量在C中共享全局变量的同名?

例如

#include<stdio.h>

int foo = 100;

int bar()
{
    int foo;
    /* local foo = global foo, how to implemented? */
    return 0;
}

int main()
{
    int result = bar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为在功能栏中,直接调用foo将获得全局foo.我怎么能引用当地的foo?我知道在C++中,有这个指针.但是,C有类似的东西吗?

非常感谢!

c scope global-variables local-variables

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

使用按位运算符的条件语句

所以我看到这个问题已经被提出,但答案有点模糊,无益.好的,我只需要使用"&^〜!+ | >> <<"来实现ac表达式

表达式需要类似:a?b:c

所以,从我能够讲述的,表达式需要看起来像:

return (a & b) | (~a & c)

当a = 0时,这是有效的,因为用b表示它将给出零,然后或表达式将返回右侧,(~a & c)这是有效的,因为~0给出了所有1,并且所有1的和c都返回c.

但是,当a> 0时,这不起作用.有人可以尝试解释为什么会这样,或者如何解决它?

c conditional bit-manipulation bitwise-operators

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

TControlState.csDesignerHide与TControlStyle.csNoDesignVisible

VCL似乎提供了两种隐藏表单设计者控件的机制:TControlState.csDesignerHideTControlStyle.csNoDesignVisible.

就IDE而言,它们之间有什么区别?你应该在什么时候使用?

delphi vcl

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