标签: delphi-2006

FindFirst()报告的奇怪属性值,Attr = 2080

当使用FindFirst()搜索文件时,我在TSearchRec.Attr字段2080中获得了一个属性值.它没有在帮助中指定,因为只有这些值可用,并且它们的组合没有产生2080:

1 faReadOnly
2 faHidden
4 faSysFile
8 faVolumeID
16 faDirectory
32 faArchive
64 faSymLink
71 faAnyFile

有谁知道2080意味着什么以及为什么我得到那个属性值?操作系统是嵌入式XP.

delphi delphi-2006 file-attributes

3
推荐指数
2
解决办法
1650
查看次数

为什么这个D2006代码不能淡化PNG图像?

这个问题来自较早的问题.大多数代码来自可能在后续版本的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)

delphi png timage alphablending delphi-2006

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

是否有任何简单的自动方式来查找与Delphi项目相关的所有源文件?

我发布版本时,我喜欢备份项目的源代码集.我使用GExperts项目备份,它似乎将项目管理器中的所有文件收集到ZIP文件中.你也可以在这个文件集中添加任意文件,但我总是意识到我不一定得到所有文件.除非我专门通过uses子句并将我拥有的所有单元添加到项目中,否则我将永远不会确定存储重新创建可安装/可执行文件所需的所有文件.

我已经考虑过滚动应用程序来遍历项目,跟踪所有使用的单位并查看所有搜索路径并查看是否有可用于该单元的源文件,并构建要以这种方式备份的文件列表,但是嘿 - 也许某人已经完成了这项工作?

delphi backup delphi-2006 gexperts

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

delphi指针问题

我有以下代码正在运行,但我不理解它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)

delphi pointers delphi-2006

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

Delphi 2006 - 优雅地杀死一个线程并且仍然使用OnTerminate处理程序的最佳方法是什么?

我有一个线程有时冻结(我怀疑)由于DLL调用永远不会返回.在一般情况下,如果您调用了像Indy这样的阻塞例程,有没有一种方法可以通过线程OnTerminate处理程序触发来恢复?如果我调用TerminateThread会发生这种情况吗?

delphi multithreading terminate thread-safety delphi-2006

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

FastMM4,如何读取日志文件?

我正在研究一个软件,所以我刚开始在我的项目中使用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)

delphi logging memory-leaks delphi-2006 fastmm

3
推荐指数
2
解决办法
2337
查看次数

如何修复TComboBox Ctl3D属性错误?

这是TFormTEdit在顶部和TComboBox底部的图像.

在此输入图像描述

如您所见,TEdit没有Windows控件默认主题的经典3D边框.那是因为我Ctl3D property将该组件设置为False.然后你看到TComboBox有它的普通3D边框,但在这种情况下我也设置了Ctl3D property该组件False,但它继续显示3D边框.

它似乎是开发级别的Delphi错误.我怎么能在代码中修复它?


在测试RRUZ答案之后BevelKind=bkFlat,这来了:

在此输入图像描述

我不知道为什么它如此不同......而且奇怪.: - /

delphi combobox interface delphi-2006

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

为什么我的应用程序中的Cardinal类型发生了变化?

我有一个程序在Delphi 3中运行正常,我在Turbo Delphi 2006上编译和测试,发现了一个问题.问题是:我使用"基数"数据类型作为某种东西的索引.它在Delphi 3中有效,但我发现Turbo Delphi 2006编译版本的值大于128-256左右,具体取决于具体的数据.将这些数据类型更改为"longint"修复了问题,以便程序与两个编译器一起正常工作.

问题:这是为什么?

我的理解是Cardinal数据类型只是典型的无符号整数数据.这与它们在这个程序中的应用是一致的,特别是通过Delphi 3编译正常工作的事实证明了这一点.那么为什么Turbo Delphi 2006编译不起作用呢?

delphi delphi-2006 delphi-3

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

如何在Delphi 2009之前处理UTF-8和ANSI转换?

在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中的解决方案?

delphi unicode utf-8 delphi-2009 delphi-2006

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

Delphi中TDataSetProvider所需的信息

我有Midas项目,在服务器的RemoteDataModules之一中使用TDataSetProvider

目前我正在利用以下事件

  • BeforeApplyUpdates - 创建一个Object
  • BeforeUpdateRecord - 使用该对象
  • AfterApplyUpdates - 来破坏对象

题:

即使是更新错误,也会始终调用'AfterApplyUpdates'吗?

delphi delphi-2006

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