相关疑难解决方法(0)

Delphi语言功能列表以及引入/弃用它们的版本

在开始之前,我想指出的是,我已经通过谷歌进行了这样的事情,并且无法找到一个,我已经诚实而真实地搜索过.

我要求(对于我正在开发的项目)列出所有Delphi(2007年到最新发布的版本,我不再支持2007年以前的任何版本)"语言功能",以及它们被引入的版本和(在适用的情况下)弃用,改进或删除.

我之前已经在Stack Overflow上注意到类似的问题,尽管其中大部分是以"哪个特征最好"的形式表达的,并且被认为是不合适的.

如果有人知道这样的清单(或有足够的业余时间来编制一个清单),我将非常感激.

接受的答案将包含指向此类列表的链接或列表本身.

delphi delphi-2007

110
推荐指数
3
解决办法
3万
查看次数

如何在Delphi中正确释放包含各种类型的记录?

type
  TSomeRecord = Record
    field1: integer;
    field2: string;
    field3: boolean;
  End;
var
  SomeRecord: TSomeRecord;
  SomeRecAr: array of TSomeRecord;
Run Code Online (Sandbox Code Playgroud)

这是我所拥有的最基本的例子,因为我想重复使用SomeRecord(某些字段保持为空,没有释放所有字段将在重复使用时被转移SomeRecord,这显然是不受欢迎的)我正在寻找一种方法一次释放所有字段.我已经开始string[255]使用ZeroMemory(),这很好,直到它开始泄漏内存,这是因为我切换到string.我仍然缺乏了解原因的知识,但似乎与动态有关.我也在使用动态数组,因此我认为尝试ZeroMemory()任何动态都会导致泄漏.有一天浪费了这一点.我想,我通过使用解决了这个Finalize()SomeRecordSomeRecAr之前ZeroMemory(),但我不知道这是正确的做法,或只是我太傻了.

所以问题是:如何一次性解放所有东西?是否存在一些我不知道的单一程序?

换句话说,或者我会建议如何以不同的方式实现这些记录,所以我不需要做出复杂的尝试来释放东西.我已经研究过创建记录New()然后去掉它Dispose(),但我不知道当调用之后的变量Dispose()是未定义的而不是nil 时它意味着什么.另外,我不知道某个type(SomeRecord: TSomeRecord)的变量与指向type()的变量之间的区别是什么SomeRecord: ^TSomeRecord.我现在正在调查上述问题,除非有人能够快速解释,否则可能需要一些时间.

delphi records

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

Initialize(),Default()和FillChar()之间的区别

假设您有一个您想要初始化的本地记录:

type 
  TMyRec=record
    Val1, Val2:Integer;
  end;

procedure MyProc;
var
  MyVar:TMyRec;
begin
  // ... ?

  WriteLn(Val1,Val2);
end;
Run Code Online (Sandbox Code Playgroud)

除了"手动"设置每个字段外,还有几种方法可以实现.

  1. 使用Initialize():

    Initialize(MyVar);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用默认值():

    MyVar := Default(TMyVar);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用FillChar:

    FillChar(MyVar,SizeOf(MyVar),0);
    
    Run Code Online (Sandbox Code Playgroud)
  4. 定义一个空常量,并将其赋值给var

    const cMyVar:TMyVar=();  
    ...    
    MyVar := cMyVar;    
    
    Run Code Online (Sandbox Code Playgroud)

以上所有似乎都适用于这个例子.我想你甚至可以定义一个全局变量来初始化它.

但是有一种首选方法吗?或者在某些情况下,不建议使用上述任何一种情况,或者它根本不起作用?

把它短,有什么明确的正确方法TM初始化一个局部堆栈变量?:-)

delphi initialization

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

在Delphi中使用SecureZeroMemory

我知道有一个SecureZeroMemoryC中的功能实现是在定义函数<WinnNT.h>作为RtlSecureZeroMemory函数.

QNS:如何SecureZeroMemory在Delphi中使用?Delphi是否发布了包含该功能的库?我正在使用Delphi 7. Windows.pas只有ZeroMemory但不是SecureZeroMemory.

c c++ memory delphi security

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

如何设置默认值以在delphi中记录

我正在使用RAD XE7.在我的Delphi应用程序中,我想为Records字段设置默认值.

我尝试了下面的代码,但它没有编译,我知道这是错误的.我还有别的办法吗?

 TDtcData = record
    TableFormat     : TExtTableFormat = fmNoExtendedData;
    DTC             : integer = 0;
    Description     : string = 'Dummy';
    Status          : TDtcStatus;    
    OccurenceCnt    : integer =20;
    FirstDTCSnapShot: integer;
    LastDTCSnapShot: integer;
  end; 
Run Code Online (Sandbox Code Playgroud)

delphi default record delphi-xe7

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