小编hik*_*ari的帖子

Delphi:函数结果在for循环期间没有清空

这是正常的吗?

for a := 1 to 10 do
    x.test;

   x.test;
   x.test;
   x.test;

function test: string;
begin
  {$IFDEF DEBUG}  DebugMessage('result check = '+Result,3); {$ENDIF}
   result := result + 'a';
end;

10:39:59: result check = 
10:39:59: result check = a
10:39:59: result check = aa
10:39:59: result check = aaa
10:39:59: result check = aaaa
10:39:59: result check = aaaaa
10:39:59: result check = aaaaaa
10:39:59: result check = aaaaaaa
10:39:59: result check = aaaaaaaa
10:39:59: result check = aaaaaaaaa

10:39:59: result …
Run Code Online (Sandbox Code Playgroud)

delphi stack function

5
推荐指数
2
解决办法
422
查看次数

Delphi XE2 VCL样式,更改窗口Icon在标题栏上不会更新,直到RecreateWnd

VCL风格的另一个奇怪的故障:

更改表单的图标仅更新其任务栏按钮,除非您使用RecreateWnd,否则标题中的图标不会更新.(使用VCL样式时)

ImageList3.GetIcon(0,Form1.Icon);
Run Code Online (Sandbox Code Playgroud)

有没有办法解决它而不必使用RecreateWnd?(实际上可以创建其他问题)

delphi vcl styles delphi-xe2

5
推荐指数
1
解决办法
1129
查看次数

Delphi XE2 VCL样式,从TLabel中删除样式或禁用类外观

使用XE2 VCL样式,我想禁用TLabel(或属性sfTextLabelNormal)的外观

我已经尝试过其他问题的所有解决方案,比如使用Engine.UnRegisterStyleHook,但它没有效果.

delphi vcl skinning delphi-xe2 vcl-styles

4
推荐指数
1
解决办法
3048
查看次数

Delphi:64位快速Pos

是否有任何Pos()版本的代码在64位上比当前的32位快?

据我所知,Delphi中的32位版本(经过XE5测试)多年前采用了FastCode汇编程序版本,但对于64位版本,它使用的是PurePascal版本,速度大约慢5到10倍.

一些测试,长循环中的相同过程:

32位:65..90ms

64位:280..300ms

delphi string 64-bit search

4
推荐指数
2
解决办法
1850
查看次数

Delphi TList <T>泛型

如果有可能,有人可以向我解释,或者我完全不了解这个Delphi功能.

假设我有一个类,我创建了一些类,然后将它们添加到ObjectList中.通常我会这样做:

Type TMyClass = class(TObject)
  stuff: string;
..
end;

Var things: TObjectList;

things := TObjectList.Create;
things.Add(TMyClass.Create);

// now I want to access stuff, so I need to typecast the class
TMyClass(things[0]).stuff..
Run Code Online (Sandbox Code Playgroud)

所以现在我的问题是,是否有可能以我可以做的方式声明列表.. thing [0] .stuff并且仍然可以访问常见的TObjectList功能,如.sort .indexof等.?(没有为此创建一个特殊的类来模拟objectlist)

delphi generics tlist

4
推荐指数
1
解决办法
5210
查看次数

Windows10中的Delphi桌面截图,GetDeviceCaps问题

如何在Windows10中获取正确的屏幕尺寸以截取屏幕截图?它似乎得到不正确的值(可能是DPI问题?)

// screenshot
b := TBitmap.Create;
DC := GetDC(GetDesktopWindow);
try
  b.Width  := GetDeviceCaps (DC, HORZRES) ;
  b.Height := GetDeviceCaps (DC, VERTRES) ;
  BitBlt(b.Canvas.Handle, 0, 0, b.Width, b.Height, DC, 0, 0, SRCCOPY) ;
finally
  ReleaseDC (GetDesktopWindow, DC) ;
end;
Run Code Online (Sandbox Code Playgroud)

在4K屏幕上只会捕获左上角的一小部分.

delphi screenshot

4
推荐指数
1
解决办法
1253
查看次数

Delphi 10 Seattle IDE问题:在函数/ proc之后没有提示

我在两台机器上安装了Delphi 10 Seattle.我两个都有同样的问题.

当我输入一个函数/ proc并键入时(,用于在先前版本中弹出的提示显示函数参数以及您所处的步骤,但这不再有效.它被删除了吗?

delphi

4
推荐指数
1
解决办法
328
查看次数

W10 + Delphi Seattle,TFileOpenDialog + fdoForcePreviewPaneOn =在某些图像上崩溃

TFileOpenDialog的预览窗格设置似乎存在问题,当选择某些图像时应用程序崩溃.有没有解决这个问题?

测试图像

演示来源:

procedure TForm1.Button1Click(Sender: TObject);
begin
  FileOpenDialog1.Execute;
end;
Run Code Online (Sandbox Code Playgroud)

object FileOpenDialog1: TFileOpenDialog
  FavoriteLinks = <>
  FileTypes = <>
  Options = [fdoForcePreviewPaneOn]
  Left = 200
  Top = 32
end
Run Code Online (Sandbox Code Playgroud)

编辑:它似乎只发生在Windows10(AN.更新)中,在Win7中正常工作.一些调试:

callstack crc      : $6ac33669, $66c06792, $66c06792
exception number   : 1
exception class    : EInvalidOp
exception message  : Invalid floating point operation.

main thread ($ae0):
6ac33669 +000 PhotoMetadataHandler.dll
71f6447f +09f PROPSYS.dll                                   PSCreateDelayedMultiplexPropertyStore
773ef71a +00a combase.dll                                   PropVariantClear
74d317c2 +082 KERNELBASE.dll                                QISearch
71f4f677 +097 PROPSYS.dll                                   #424
71f4f829 +249 PROPSYS.dll                                   #424
6c5f1bba +11a DUI70.dll                                     ?_PreSourceChange@Element@DirectUI@@AAEJPBUPropertyInfo@2@HPAVValue@2@1@Z …
Run Code Online (Sandbox Code Playgroud)

delphi

4
推荐指数
1
解决办法
409
查看次数

Delphi - 将物理路径(设备文件句柄)转换为虚拟路径

我怎样才能转换像这样的路径

\设备\ HarddiskVolume3\Windows下

进入相应的虚拟路径?(比如c:\ Windows在这种情况下)

delphi virtual path

3
推荐指数
1
解决办法
1906
查看次数

Delphi - Graphics32,绘制抗锯齿的圆角矩形

如何使用 Graphics32 绘制消除锯齿的圆角矩形?

我设法在 bitmap32 画布上用 TPolygon 制作了一个普通矩形,但我找不到任何绘制圆角的参考。会欣赏一些代码。

delphi antialiasing graphics32

3
推荐指数
1
解决办法
2604
查看次数