小编not*_*aho的帖子

如果需要,Delphi是否只能使用.dll?

我已将这两种方法添加到我的Delphi 5应用程序的第一个单元中.

function Inp(PortAddress: Integer): Integer; stdcall; external 'inpout32.dll' name 'Inp32';

procedure Output(PortAddress, Value: Integer); stdcall; external 'inpout32.dll' name 'Out32';
Run Code Online (Sandbox Code Playgroud)

但是,除非他们明确需要,否则我不想使用该软件发布inpout32库.目前程序在执行时说"未找到",除非它们存在于根或System32中.

用户只有在设置了特定选项时才会调用这些方法,但在使用inpout库之前,不会从.ini文件中收集这些方法.

有没有办法只在某些组件需要时才使用这个库,而不是按照我的方式声明它?

delphi dll delphi-5

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

Delphi Word自动化 - 打印合并文档

我的D5应用程序当前可以使用以下方式将多个成员数据合并到Word文档:

wrdapp := CreateOleObjct(word.application);
wrdDoc := wrdApp.Document.Open(TemplateLocation);
wrdMailMerge := wrdDoc.MailMerge;
populateMailMergeDateFile;
wrdMailMerge.execute;
Run Code Online (Sandbox Code Playgroud)

然后

wrdDoc.Saved := False;
wrdDoc.Close(False);
wrdApp.Visible := True;
Run Code Online (Sandbox Code Playgroud)

我想提供将合并文档直接传递给打印机的选项.但是我找不到允许这种情况发生的代码

wrdDoc.PrintOut;
wrdDoc.Saved := False;
wrdDoc.Close(False);
Run Code Online (Sandbox Code Playgroud)

打印出没有合并数据的模板文档.

wrdDoc.Saved := False;
wrdDoc.Close(False);
wrdDoc.PrintOut;
Run Code Online (Sandbox Code Playgroud)

显示变体对象错误.

wrdMailMerge.PrintOut;
Run Code Online (Sandbox Code Playgroud)

显示自动化错误.

我也试过使用True而不是False.任何人都可以告诉我如何正确打印合并文档?

非常感谢

printing delphi ms-word mailmerge

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

Delphi 5与库不兼容

我正在尝试将Advantech(BDaqCL.pas)库添加到我在Delphi 5中的应用程序项目中,但.PAS文件中充斥着如下代码:

    AccessMode = (
  ModeRead = 0,
  ModeWrite,
  ModeWriteWithReset
);
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

',' or ')' expected but '=' found
Run Code Online (Sandbox Code Playgroud)

这是Delphi后期版本中D5不兼容的功能吗?如果是这样,值得手动改变每个人(有很多)或者我是否会遇到更深层次的问题?

编辑:大多数枚举如上所述,但也有很多更复杂的如下.手动做的太多了:

DioPortDir = (
  Input   = $00,
  LoutHin = $0F,
  LinHout = $F0,
  Output  = $FF
);
Run Code Online (Sandbox Code Playgroud)

编辑:我开始将它们声明为常量.谁能告诉我,做以下事情是否正确

var
    DioPortDir = LongInt;
const
      Input   = $00;
      LoutHin = $0F;
      LinHout = $F0;
      Output  = $FF;
Run Code Online (Sandbox Code Playgroud)

我在哪里列出var声明并将const声明移到顶部.

我不确定当const不等于任何东西时该怎么做,例如

ValueRange = (
  V_OMIT = -1,            // Unknown when get, ignored when set
  V_Neg15To15 = 0,        // +/- 15 …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-5

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

使用批处理脚本检测文件损坏

如何使用命令检查新文件的大小是否明显小于它要替换的文件的大小?

我每晚都有一个批处理文件,除其他外,它调用一个应用程序UpdVMem.exe,该应用程序VMembers.Adt从主文件创建一个减少的成员数据库Members.Adt.然后将此文件移动到具有相同脚本的远程站点.

在一些站点上,VMembers.Adt会定期被破坏.我不知道为什么,因为我们已经排除了表格被锁定进行编辑(通过我的Delphi Membership软件).它通常看似相同的大小,但包含不到一半的记录.

更好的是一组可以检测到这种损坏或执行失败的命令UpdVMem.exe,因为单独的大小不是最好的指标.

谢谢

delphi batch-file filesize

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

Delphi5 DirectoryExists()

我在Win2000上使用D5但是为所有平台构建应用程序.

我可以FileExists在我的D5应用程序中使用,但DirectoryExists它是未声明的标识符.

它们都来自我在使用列表中放入的SysUtils.Pas.任何人都可以建议我如何使用此功能,如果不能如何解决它?

delphi directory delphi-5

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

Delphi通过Registry检测Word版本

我刚刚添加了这个函数,它决定了使用哪种mailmerge方法.它似乎适用于XP和Windows 2000.它有什么理由不适用于NT,Vista,7和其他Windows版本?我在想,注册表会出现问题吗?

function GetMSOfficeVersion: String;
var Reg: TRegistry;
begin
Result := 'Office Version Not Found';
// create the registry object
Reg := TRegistry.Create;
try
// set the root key
Reg.RootKey := HKEY_LOCAL_MACHINE;
// check for Office97
if Reg.OpenKey('\SOFTWARE\Microsoft\Office\8.0', False) then
begin
Result := 'Microsoft Office97';
end;
// check for Office2000
if Reg.OpenKey('\SOFTWARE\Microsoft\Office\9.0', False) then
begin
Result := 'Microsoft Office2000';
end;
// check for OfficeXP -- not sure if this is correct
// you have to verify the key on a …
Run Code Online (Sandbox Code Playgroud)

delphi registry operating-system ms-word

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

Delphi 5 Unknown Publisher版本信息

我在Delphi 5中构建了许多可执行应用程序,它们通过网络与数据库进行通信.在我的Windows 7 PC和其他PC上,它们在没有任何警告的情况下运行,但在某些客户端PC上,它会发出"未知发布者"警告,这种警告看起来并不专业,可能会导致其他权限问题.

我的问题如下:

  • 可以在设计时将任何内容添加到应用程序中,例如在版本信息中,以使其成为更受信任的应用程序.这在Delphi5中实际可行吗?
  • 有什么我必须要求Microsoft作为应用程序构建器来帮助他们信任我的应用程序吗?
  • 如果不能解决上述问题,如何在Windows 7中禁用"受信任的发布者"警告?(道歉这不是德尔福问题)

谢谢

delphi delphi-5 partial-trust

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