标签: delphi-3

在支持接口的Delphi 3中有什么相同之处?

我支持用Delphi 3编写的应用程序,我想在等待有机会将其升级到更新版本的Delphi时对源代码进行一些改进.我想要使​​用的一件事是Interfaces.我知道Delphi 3已经有了Interfaces的概念,但是我很难找到如何做等效的

if Supports(ObjectInstance, IMyInterface) then
Run Code Online (Sandbox Code Playgroud)

delphi legacy-code delphi-3

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

适当的灾难性错误处理

有一些我一直在努力的东西,我真的没有用Delphi程序解决,并想知道是否有人可以指导我.正如主题所说,你如何做正确的灾难性错误处理?例如:

// is file necessary for the program present?
if not FileExists(FilePath1) then
   begin
     raise Exception.Create(FilePath1 + ' does not exist and is required for this program to function.');
   // I obviously need to do something here to make the program QUIT and not have
   // any more code run.

     Application.Terminate;
     Abort;
   end;
Run Code Online (Sandbox Code Playgroud)

我也可以在那里使用异常单元并抛出异常,但程序继续像以前一样.我过去曾经使用过停止呼叫,但它似乎没有进行任何清理等等,所以我最终制定了一个大程序,通过近距离和免费调用我所做的一切就是为了确保(即使那时我我不确定任何幕后的东西.

那么处理这类事情的正确方法是什么?

编辑:为了澄清,我想知道如何让程序做它需要做的清理,然后立即退出而不做任何其他代码.

delphi error-handling delphi-2006 delphi-3

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

Delphi TStringList Free导致异常

考虑这个简短的Delphi程序:

procedure TfrmXQuery.FieldListFillFromDefault;
var
  field_list: TStringList;
begin
  try
    if x <> '' then begin
      field_list := TStringList.Create;
      {do some stuff with field_list}
    end;
  finally
    if field_list <> NIL then 
    begin
      field_list.Free;
    end;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

当我在Delphi 3中运行它时,x =''以便永远不会创建field_list,

  1. 为什么field_list <> NIL
  2. 对象未初始化为NIL
  3. 如果它不是NIL什么?
  4. 如果它没有分配,NIL我怎么不知道Free它是否?该Assigned功能并没有告诉我:if Assigned(an_object)相当于if an_object = NIL

delphi delphi-3

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

为什么我的应用程序中的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 3到SQL 2008

我的客户有一个用Delphi 3编写的系统,数据库是Paradox.我的工作是将其转换为使用SQL Server 2008.如何使其连接到SQL 2008?我知道,这是很老的东西.我很感激帮助.谢谢

sql-server delphi delphi-3

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