小编Jan*_*gen的帖子

编译器是否优化(关闭)相同的FieldByName调用?

在我维护的一些代码中,我看到TClientDataSet.OnCalcFields事件处理程序中使用了两种不同的方法:

 with DataSet do
 begin
   // 1. Call FieldByName twice
   if AMinDate > FieldByName(SPlanAllocatieFromDate).AsDateTime then
      AMinDate := FieldByName(sPlanAllocatieFromDate).AsDateTime;
   // 2. Put the retrieved FieldByName value in a temp var
   lEmpID := FieldByName(SPlanAllocatieEmpID).AsInteger;
   if lEmpID <> 0 then lTSAllocatedEmpIDs.Add(IntToStr(lEmpID));
 end;
Run Code Online (Sandbox Code Playgroud)

编译器(Delphi XE2,Win32 app)是否会优化方法2以使用temp var?这两个FieldByNames非常接近,你甚至可以说是嵌套的.

如果没有,我应该重写1.因为OnCalcFields经常执行.

BTW.我知道Fields []和FieldByName(),或者在运行EOF循环时使用temp TField var,这些不是问题.

delphi optimization delphi-xe2

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

一个mysql表中的类别和子类别

因此,我无法以最简单的方式解决如何从我的sql表中获取类别和子类别的问题.

这就是我的表格:

在此输入图像描述

这就是我想用mysql输出的内容:

如果有人可以帮助我,那会很棒!

php mysql sql mysqli

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

对于0为0的句柄,PostMessage调用是否安全?

我有一个带有HWND句柄的数据模块,可以接收PostMessage调用.

手柄被分配在DataModuleCreate像这样(被TTNONVISUAL 没有定义):

{$IFNDEF TTNONVISUAL}
FHWND := AllocateHWND(WindProc);
{$ELSE}
FHWND := 0;
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)

该数据模块还用于在TTNONVISUAL非可视程序定义.

数据模块中的WindProc包含在{$ IFNDEF TTNONVISUAL}中,因此在非可视程序中没有WindProc和FHWND = 0

在该程序中,对这个0句柄进行PostMessage调用是否安全?

注意:PostMessage不发送任何其他数据:
PostMessage(FHWND,WM_SYNC_PROGRESS,0,0)
和WM_SYNC_PROGRESS是WM_USER + 111,并且没有其他WM_SYNC_PROGRESS处理程序.

delphi postmessage

0
推荐指数
1
解决办法
523
查看次数

在delphi/lazarus中搜索已放入记录数组的记录

我有一个包含许多记录的数组。像这样设置:

Tcustomer= record
  Name: string[40];
  Address: string[100];
  phone: string[15];
  email:string[50]; 
end;
Run Code Online (Sandbox Code Playgroud)

现在,假设我想在这个数组中搜索具有特定姓名地址的人。我该怎么办?所以基本上搜索不仅仅是1个元素。(我可以专门搜索 1 个属性,但不能过滤超过 1 个)

附件是我的表单如何设置的图片,这将更详细地显示我所指的内容:

在此处输入图片说明

arrays delphi pascal record lazarus

0
推荐指数
1
解决办法
4047
查看次数

将动态XML加载到数据集中

我正在尝试使用XML将文件加载到Delphi数据集中 mydataset.loadfromfile("myfile.xml")

问题是我不知道XML字段名称和它有多少字段.我知道XML只有一个级别,例如:

<DOCTO id ="3892" usuario="2" data="22/12/2015 10:33:22">
  <CONDUTA_1>teste conduta 1</CONDUTA_1>
  <CONDUTA_2>teste conduta 2</CONDUTA_2>
</DOCTO>
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来加载xml而不创建之前的字段.

xml delphi dataset

0
推荐指数
1
解决办法
4725
查看次数

如何通过ipworks获取文档

库ipworks提供了一些获取textmessage的方法.

在文档中,我找不到如何使用imaps通过ipworks库读取附件.

你能帮助我吗?谢谢

c# email parsing imap ipworks

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

有什么区别C#

我是C#的新手.
在表单设计中,假设我有一个Textbox,Listview和一个按钮.我为这个按钮编写代码:

listBox1.Items.Add(textBox1.Text);
Run Code Online (Sandbox Code Playgroud)

...它只是将文本框中的文本添加到ListView中.

另一种方式是:

我创建了一个Person.cs类,在那里我添加了它

string FirstName;
public string FN {
    get { return FirstName; }
    set { FirstName = value; }
}
Run Code Online (Sandbox Code Playgroud)

在按钮上我添加:

Student NewStudent = new Student();
NewStudent.FN = textBox1.Text;
listBox1.Items.Add(NewStudent.FN);
Run Code Online (Sandbox Code Playgroud)

这两个会做同样的事情.
第一行只需要一行代码,但第二行是几行.为什么不使用只需要一行的第一个呢?

c#

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

Firemonkey加载多个图像内存过载

我尝试用FireMonkey编写照片编辑器.我有50个在运行时创建的TImage组件.如果我将大图像(大约3 MB)加载到这些组件中,我会收到"内存过载"错误.

这是我的图像传输代码;

img1:=(sender as timage).Name;
strm:=TMemoryStream.Create;
(data.Source as timage).Bitmap.SaveToStream(strm);
(sender as timage).Bitmap.LoadFromStream(strm);
strm.Free;
Run Code Online (Sandbox Code Playgroud)

memory delphi image firemonkey

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

Delphi 10 Seattle - Enter提供的不仅仅是entercode

我是Delphi 10 Seattle的新手,突然间我每次按下时都会得到一些额外的文字ENTER.这很烦人......

任何人都知道为什么会这样,以及我如何回到普通ENTER代码?

按下ENTER它会导致换行和换行

  until ;
Run Code Online (Sandbox Code Playgroud)

我不知道我做了什么来获得额外的文字until ;.

ide delphi code-completion delphi-10-seattle

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

使Delphi DFM文件与其PAS文件同步

我有一个包含许多DFM文件和匹配的PAS文件的Delphi项目。我可以通过重建项目来编译PAS,但是如何重建DFM文件并使它们与PAS文件保持同步?
现在,我收到很多“ [[Variable.field]]没有相应的组件。要删除声明吗?” 从IDE进行提示。

delphi

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

如果Button1.Click = true

Button1: TButton; 
Label2: TLabel;

procedure TForm5.Button1Click(Sender: TObject);
 begin 
 if Button1.Click = True then
      Label2.Caption := 'lol';
Run Code Online (Sandbox Code Playgroud)

基本上我想要的是,当用户点击按钮时,Label2会改变那里写的内容.是的我有Label2.出现的错误是" E2008不兼容的类型 "......任何人都可以帮助我吗?

delphi

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