当使用FindFirst()搜索文件时,我在TSearchRec.Attr字段2080中获得了一个属性值.它没有在帮助中指定,因为只有这些值可用,并且它们的组合没有产生2080:
1 faReadOnly
2 faHidden
4 faSysFile
8 faVolumeID
16 faDirectory
32 faArchive
64 faSymLink
71 faAnyFile
有谁知道2080意味着什么以及为什么我得到那个属性值?操作系统是嵌入式XP.
这个问题来自较早的问题.大多数代码来自可能在后续版本的Delphi中使用的建议答案.在D2006中,我没有获得全范围的不透明度,图像的透明部分显示为白色.
图片来自http://upload.wikimedia.org/wikipedia/commons/6/61/Icon_attention_s.png.
它在运行时从PNGImageCollection加载到TImage中,因为我发现你必须这样做,因为在保存DFM后图像不会保持不变.出于演示行为的目的,您可能不需要PNGImageCollection,并且可以在设计时将PNG图像加载到TImage中,然后从IDE运行它.
表单上有四个按钮 - 每个按钮设置不同的不透明度值.Opacity = 0工作正常(paintbox图像不可见,opacity = 16看起来没问题,除了白色背景,不透明度= 64,255相似 - 不透明度似乎在10%左右饱和.
关于什么事情的任何想法?
unit Unit18;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, pngimage, StdCtrls, Spin, PngImageList;
type
TAlphaBlendForm = class(TForm)
PaintBox1: TPaintBox;
Image1: TImage;
PngImageCollection1: TPngImageCollection;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure PaintBox1Paint(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
FOpacity : Integer ;
FBitmap : TBitmap ;
{ …Run Code Online (Sandbox Code Playgroud) 我发布版本时,我喜欢备份项目的源代码集.我使用GExperts项目备份,它似乎将项目管理器中的所有文件收集到ZIP文件中.你也可以在这个文件集中添加任意文件,但我总是意识到我不一定得到所有文件.除非我专门通过uses子句并将我拥有的所有单元添加到项目中,否则我将永远不会确定存储重新创建可安装/可执行文件所需的所有文件.
我已经考虑过滚动应用程序来遍历项目,跟踪所有使用的单位并查看所有搜索路径并查看是否有可用于该单元的源文件,并构建要以这种方式备份的文件列表,但是嘿 - 也许某人已经完成了这项工作?
我有以下代码正在运行,但我不理解它100%(请参阅代码中的注释):
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TMyRec=record
a:Integer;
b:String;
end;
TRecArray=array of TMyRec;
PRecArray = ^TRecArray;
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
v1:TRecArray;
procedure Test(a:PRecArray);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
SetLength(v1,3);
v1[0].b:='test1';//set the first value
Test(PRecArray(v1));//call method to change the value assigned before
end;
procedure TForm1.Test(a: PRecArray);
begin
ShowMessage(v1[0].b);//shows test1
try
a^[0].b:='test2' …Run Code Online (Sandbox Code Playgroud) 我有一个线程有时冻结(我怀疑)由于DLL调用永远不会返回.在一般情况下,如果您调用了像Indy这样的阻塞例程,有没有一种方法可以通过线程OnTerminate处理程序触发来恢复?如果我调用TerminateThread会发生这种情况吗?
我正在研究一个软件,所以我刚开始在我的项目中使用FastMM4(真实的).
我在网上找到了关于如何获取line numberFastMM4,我得到了行号,但我可以弄清楚日志中的其他信息是什么意思?
我在日志文件中有这个
This block was allocated by thread 0x15F8, and the stack trace (return addresses) at the time was:
402E86 [system.pas][System][System.@GetMem][2648]
403A3B [system.pas][System][System.TObject.NewInstance][8824]
403DAA [system.pas][System][System.@ClassCreate][9489]
403A70 [system.pas][System][System.TObject.Create][8839]
46A257 [u_home.pas][u_home][u_home.TForm1.SpeedButton1Click][80] {<-memory leak is here, but what are the Other detections?}
443AAC [Controls.pas][Controls][Controls.TControl.Click][5226]
46958B [Buttons.pas][Buttons][Buttons.TSpeedButton.Click][1211]
46956B [Buttons.pas][Buttons][Buttons.TSpeedButton.MouseUp][1204]
443FB2 [Controls.pas][Controls][Controls.TControl.DoMouseUp][5352]
441BA0 [Controls.pas][Controls][Controls.TControl.SetMouseCapture][4379]
444042 [Controls.pas][Controls][Controls.TControl.WMLButtonUp][5364]
The block is currently used for an object of class: TStringList
The allocation number is: 440
Run Code Online (Sandbox Code Playgroud)
在这leak是
46A257 [u_home.pas][u_home][u_home.TForm1.SpeedButton1Click][80] {<-memory leak is here, …Run Code Online (Sandbox Code Playgroud) 这是TForm我TEdit在顶部和TComboBox底部的图像.

如您所见,TEdit没有Windows控件默认主题的经典3D边框.那是因为我Ctl3D property将该组件设置为False.然后你看到TComboBox有它的普通3D边框,但在这种情况下我也设置了Ctl3D property该组件False,但它继续显示3D边框.
它似乎是开发级别的Delphi错误.我怎么能在代码中修复它?
在测试RRUZ答案之后BevelKind=bkFlat,这来了:

我不知道为什么它如此不同......而且奇怪.: - /
我有一个程序在Delphi 3中运行正常,我在Turbo Delphi 2006上编译和测试,发现了一个问题.问题是:我使用"基数"数据类型作为某种东西的索引.它在Delphi 3中有效,但我发现Turbo Delphi 2006编译版本的值大于128-256左右,具体取决于具体的数据.将这些数据类型更改为"longint"修复了问题,以便程序与两个编译器一起正常工作.
问题:这是为什么?
我的理解是Cardinal数据类型只是典型的无符号整数数据.这与它们在这个程序中的应用是一致的,特别是通过Delphi 3编译正常工作的事实证明了这一点.那么为什么Turbo Delphi 2006编译不起作用呢?
在Delphi 2009中,我们有:
RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName,TEncoding.UTF8);
RichEdit1.Lines.SaveToFile(OpenDialog2.FileName,TEncoding.Unicode);
Run Code Online (Sandbox Code Playgroud)
如果我还没有,我如何在Delphi 2006上做到这一点TEconding?
有没有办法将那个较新的图书馆运回那里?或者是否存在隐藏在Web中的解决方案?
我有Midas项目,在服务器的RemoteDataModules之一中使用TDataSetProvider
目前我正在利用以下事件
题:
即使是更新错误,也会始终调用'AfterApplyUpdates'吗?