对于类的每个setter,我必须实现一些事件逻辑(OnChanging,OnChanged):
procedure TBlock.SetWeightIn(const Value: Double);
var OldValue: Double;
begin
  OldValue := FWeightIn;
  DoOnChanging(OldValue, Value);
  FWeightIn := Value;
  DoOnChanged(OldValue, Value);
end;
procedure TBlock.SetWeightOut(const Value: Double);
var OldValue: Double;
begin
  OldValue := FWeightOut;
  DoOnChanging(OldValue, Value);
  FWeightOut := Value;
  DoOnChanged(OldValue, Value);
end;
你能否建议一种方法来实现这一点,而不必为每个setter重复所有这些行?
救命 !!!
我花了大约10分钟寻找一种方法来搜索和替换Delphi 2006项目中的所有文件.
请问你能告诉我怎么做
在我们正在开发的Delphi应用程序中,我们有一个相关对象的大结构.这些对象的某些属性具有在运行时计算的值,我正在寻找一种方法来缓存更密集计算的结果.我使用的方法是在第一次计算私有成员时保存值.这是一个简短的例子:
unit Unit1;
interface
type
  TMyObject = class
  private
    FObject1, FObject2: TMyOtherObject;
    FMyCalculatedValue: Integer;
      function GetMyCalculatedValue: Integer;
  public
    property MyCalculatedValue: Integer read GetMyCalculatedValue;
  end;
implementation
  function TMyObject.GetMyCalculatedValue: Integer;
  begin
    if FMyCalculatedValue = 0 then
    begin
      FMyCalculatedValue :=
        FObject1.OtherCalculatedValue + // This is also calculated
        FObject2.OtherValue;
    end;
    Result := FMyCalculatedValue;
  end;
end.
用于计算的对象更改并且应重置和重新计算缓存的值并不罕见.到目前为止,我们通过使用观察者模式解决了这个问题:对象实现OnChange事件,以便其他人可以订阅,在更改和重置缓存值时得到通知.这种方法有效,但有一些缺点:
最后一个问题:你能否提出其他方法来实现缓存的计算值?
今天我遇到了一个'奇怪'的暗示:
覆盖方法xxxx应该匹配祖先yyyy的情况.
解决方案是在祖先中完全声明方法名称....我相信这是自Delphi.Net编译器以来在编译器中休息的东西......
完全按照祖先的方式声明方法使编译器"无声".在Delphi 2006及其他版本中还有其他"区分大小写"的提示/警告?
从TList删除(0)是昂贵的,因为所有后续项目都需要向下移动.如果我需要从更大的列表的开头删除大量项目,那么最快的方法是什么?
我正在运行时创建一个TXMLDocument实例,以加载和解析XML文件.您可以查看以下代码:
    unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls;
type
  Txml = class(TForm)
//    XMLDocument1: TXMLDocument;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  xml: Txml;
implementation
{$R *.dfm}
procedure Txml.FormCreate(Sender: TObject);
var    i,j:integer;
       aNode:IXMLNode;
       ws:String;
       XMLDocument1:TXMLDocument;
begin
 Memo1.Lines.Clear;
 XMLDocument1 := TXMLDocument.Create(nil);
 try
  XMLDocument1.LoadFromFile('C:\a.xml');
  XMLDocument1.Active := true;
  aNode := XMLDocument1.ChildNodes.First;
  while aNode<>nil do
  begin
   for i := 0 to aNode.ChildNodes.Count-1 do …我写了一个小应用程序,它在内存中的图像上绘制文本并将它们写入文件.基本的Delphi代码看起来类似于:
var
   Canvas : tCanvas;
   Text : WideString;
   TextRect : tRect;
begin
   Canvas := Bitmap.Canvas;
   Canvas.Brush.Color := clBlack;
   Canvas.Pen.Color := clBlack;
   Canvas.Font.Name := 'Courier New';
   Canvas.Font.Size := 11;
   Canvas.Font.Color := clWhite;
   TextRect := ...;  // calculate text position
   DrawTextW(Canvas.Handle, PWideChar(Text), Length(Text), TextRect, DT_NOCLIP or DT_NOPREFIX or DT_SINGLELINE or DT_CENTER or DT_VCENTER);
end;
遗憾的是,绘制的文本因运行应用程序的计算机的ClearType设置而异.我希望在我的应用程序中有一个一致的输出,无论本地ClearType设置如何(输出都不会直接显示到屏幕上).是否有一些Win32 API选项来覆盖本地ClearType设置?
你能推荐一个与Delphi 2006,Delphi 2009和Delphi 2010一起使用的开源Delphi加密库
算法需要:DES,MD5,SHA-1
Is there a standard way to convert between TVarRec and Variant values?
I want to parse an 'array of const' and use the values to populate parameters in a TMSQuery. To do this I'm using a list of column names (generated from TMSQuery.KeyFields), and matching the values in the array with the column names in KeyFields (by position), then using the column name to set the corresponding parameter using ParamByName.
The code below is what I've come up with, but …
当数据集已处于插入状态时,如何确定数据感知组件字段是否已被修改?我想知道一个字段是否真的被"修改"了.(我不在乎用户是否在某个字段中输入了某些东西,然后擦除所有内容,这意味着发生了修改).
DataSet.Modified,DataSet.UpdateStatus或ChangeCount都没有解决我的问题.
LE:让我更深入地解释一下.所以,初始数据集看起来像
-------------------------------------
|PK  | Field1| Field2| Field3|Field4|
-------------------------------------
| 1  |  a    | b     | c     | d    |  
-------------------------------------
插入后
-------------------------------------
|PK  | Field1| Field2| Field3|Field4|
-------------------------------------
| 2  |       |       |       |      |  
-------------------------------------
| 1  |  a    | b     | c     | d    |  
-------------------------------------
当数据集真正被修改时
-------------------------------------
|PK  | Field1| Field2| Field3|Field4|
-------------------------------------
| 2  | avalue|       |       |      |  
-------------------------------------
| 1  |  a    | b     | c     | …delphi ×10
delphi-2006 ×10
caching ×1
cryptography ×1
dataset ×1
delphi-2009 ×1
delphi-2010 ×1
oop ×1
pascal ×1
tlist ×1
txmldocument ×1
winapi ×1
windows ×1