标签: delphi-7

Delphi,olevariants和字符串数组

我有一个用简单的verion创建的ole对象

obj := CreateOleObject('foo.bar');
obj.OnResult := DoOnResult;

procedure TMyDM.DoOnResult(Res: olevariant);
Run Code Online (Sandbox Code Playgroud)

这一切都有效,res变量有一个函数String [] GetAns() 我就是这样调用的

var
 ans: array of string;
begin
 ans := Res.GetAns;
end;
Run Code Online (Sandbox Code Playgroud)

它再次有效..除非有时没有返回数组,然后抛出异常.

作为一个临时的解决方案我把它包裹在一个空的尝试,除了块,我知道是坏的.我已经尝试过 VarIsArray(Res.GetAns), 但如果结果为null,它仍然无法工作

检查正确结果的正确方法是什么?

ps我无法控制ole对象

arrays delphi ole delphi-7 variant

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

帮助Delphi 7,ADO和MS Access SQL语句 - 部分Deuce

我需要帮助理解为什么我的SQL不起作用.或者,如果我需要以不同的方式编写它以获得我需要的结果.正如标题所示,我使用的是Delphi 7,ADO组件和MS Access 2000数据库.您可以在此处查看第I部分中的表结构:
帮助Delphi 7,ADO和MS Access SQL语句

我目前用来获取基于关键字的所有知识的SQL如下:

select*from(知识K
内连接knowledge_keywords KKW on KKW.knowledgeid = K.id)
内连接关键字KW on KW.id = KKW.keywordid
where(KW.keyword ='job')AND(KW.keyword ='task' )

然而,当知识id中具有相同知识id的那两个单词中显然存在这两个单词时,这不会返回并产生结果.

但是,如果我使用OR而不是AND执行相同的SQL,我会得到我预期的两条记录

select*from(知识K
内连接knowledge_keywords KKW on KKW.knowledgeid = K.id)
内连接关键字KW on KW.id = KKW.keywordid
where(KW.keyword ='job')AND(KW.keyword ='task' )

谢谢你的帮助

sql delphi ms-access ado delphi-7

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

帮助ORA-00933:SQL命令也没有正确结束

如果我使用Oracle的SQL Developer运行以下SQL.

select payee_id, to_char(check_date,'d') as DOW,  
(cmcl_bank_cleared - check_date) as DateDiff from AP_Master  
where (cmcl_bank_cleared is not null) AND ((cmcl_bank_cleared - check_date) >=1)  
order by payee_address_zip, DOW, DateDiff  
Run Code Online (Sandbox Code Playgroud)

它工作正常,但是当我尝试使用Delphi时

SQL.Add('select payee_id, to_char(check_date, ' + QuotedStr('d') + ') as DOW, ');
SQL.Add('(cmcl_bank_cleared - check_date) as DateDiff from AP_Master ');
SQL.Add('where (cmcl_bank_cleared is not null) AND ((cmcl_bank_cleared - check_date) >=:DaysParam))');
SQL.Add('order by payee_id, DOW, DateDiff;');
Run Code Online (Sandbox Code Playgroud)

我收到"ORA-00933:SQL命令也未正确结束"错误消息

delphi oracle delphi-7 ora-00933

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

Interbase SQL语句不起作用

我正在尝试为Interbase编写一个SQL语句.

这个SQL怎么了?

md_master(trm)=主表cd_Med(cdt)=详细信息表

SELECT trm.seq_no, trm.recipient_id, trm.payee_fullname, trm.payee_address1, trm.payee_address2, trm.payee_address3, trm.payee_address_city, trm.payee_address_state, trm.recip_zip, trm.recip_zip_4, trm.recip_zip_4_2, trm.check_no, trm.check_date, trm.check_amount,
cdt.com_ss_source_sys, cdt.cd_pay_date, cdt.com_set_amount,
bnk.name, bnk.address, bnk.transit_routing,
act.acct_no
FROM md_master trm, cd_med cdt, accounts act, banks bnk
join cd_med on cdt.master_id = trm.id
join accounts on act.acct_id = trm.account_tag
join banks on bnk.bank_id = act.bank_id
ORDER BY cdt.master_id
Run Code Online (Sandbox Code Playgroud)

我没有收到错误,计算机只是不停地嘎吱嘎吱地挂起来.

sql delphi interbase delphi-7

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

如何查找正在使用我的服务的网络上的任何和所有计算机?

我有一对自定义的客户端/服务器套接字(TJDServerSocket和TJDClientSocket),它们将TServerSocket和TClientSocket包装在ScktComp单元中.我没有任何问题要解决,但想知道一些事情.我想在客户端添加一项功能,以自动搜索网络中任何服务器套接字实例(特别是我的服务器组件).

我对任何建议持开放态度,但必须具体使用Delphi 7中的ScktComp单元.

这是我的组件的链接.

sockets delphi networking winsock delphi-7

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

如何在Delphi中实现决策矩阵

我必须在Delphi 7中实现一个决策矩阵.该函数是

CalcNewStatus(actionCode:string; reportType:string; currentStatus:string):string;

  • ActionCode可以具有值'A'和'N'
  • ReportType可以具有值'I'和'F'
  • CurrentStatus可以具有值'P','I','F'.

例如,在C#中我会使用字典.我怎么能在Delphi 7中做到这一点?

delphi algorithm dictionary boolean-logic delphi-7

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

缩进子弹

我对编程很陌生,这还不够糟糕; 本周我做了更多的谷歌搜索,而不是谷歌的发现.

Delphi v7

我已经想出如何在我的richedit控件中创建项目符号.我无法找到的是当用户创建它们时如何缩进它们.

有任何想法吗?

delphi delphi-7

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

在运行时创建对象并使用它们

我的程序运行时创建的对象有问题

首先我创建n个对象(假设n:= 3)

for i:=0 to n-1 do
  begin
    With TGauge.Create(Form1) do
      begin
        Parent  := Form1;  // this is important
        Left    := 20;     // X coordinate
        Top     := 20+i*45;     // Y coordinate
        Width   := 250;
        Height  := 20;
        Kind    := gkHorizontalBar;
        Name    := 'MyGauge'+IntToStr(i);
        //.... 
        Visible := True;
      end;
  end;
Run Code Online (Sandbox Code Playgroud)

这三个对象在表单中创建并可见.现在我想改变它的'属性,但每当我尝试访问这些创建的对象时,我只会得到它

EAccessViolation
Run Code Online (Sandbox Code Playgroud)

例如,当我尝试获取一个对象的名称时

g := Form1.FindComponent('MyGauge0') as TGauge;
Form1.Label1.Caption:=g.Name;
Run Code Online (Sandbox Code Playgroud)

delphi components runtime reference delphi-7

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

如何用TSpeedButton替换TDBNavigator?

我做了:

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  DataTable.qOrders.Next;
end;
Run Code Online (Sandbox Code Playgroud)

它的工作原理,但问题是当我点击按钮到达最后一条记录时,按钮没有被禁用,就像在a TDBNavigator.

我是如何进行TSpeedButton禁用并自动启用的TDBNavigator

delphi delphi-7 delphi-2010 delphi-xe2 delphi-10.2-tokyo

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

如何从Delphi7正确打开.bat文件(例如,它打开RandomApp.exe)?

我搜索了很多,但我找不到正确的答案.

目录:

  • Project(此文件夹包含delphi代码和名为"RunThis"的文件夹

    • RunThis

      • RandomApp.exe
      • 的run.bat
      • CONFIG.TXT

Run.bat代码

start %cd%\RandomApp.exe
pause
Run Code Online (Sandbox Code Playgroud)

Delphi 7(单击按钮执行此代码.)

ShellExecute (application.handle, 'open', 'cmd', PChar('cmd.exe /c RunThis\Run.bat'), nil, SW_MAXIMIZE
Run Code Online (Sandbox Code Playgroud)

如果我没有为目录添加'cmd.exe/c'部分,Delphi将打开一个没有任何代码的cmd.类似于是否必须运行cmd.exe.但是,如果我添加'cmd.exe/c',则它会正确打开Run.bat.

Windows给我这个错误:Windows无法找到'C:\ Project\RunThis\RandomApp.exe'.请确保您正确键入名称,然后再试一次.

有趣的是,如果我只是双击Run.bat,它就会完美无缺.但是,当我通过Delphi打开它时,它给了我这个错误.我想也许Run.bat当前地址有问题.所以不要说:

start RandomApp.exe
Run Code Online (Sandbox Code Playgroud)

我使用了完整的当前目录:

start %cd%\RandomApp.exe    
Run Code Online (Sandbox Code Playgroud)

只是补充一下,当我让Delphi 7直接打开程序时,例如:

ShellExecute(Handle, 'open', PChar('RunThis\RandomApp.exe'),null, null, SW_SHOWNORMAL) ;
Run Code Online (Sandbox Code Playgroud)

该程序给了我一个错误,它无法找到"Config.txt".RandomApp.exe使用存储其所有设置的文本文件.

同样,如果我只是单击Run.bat或RandomApp.exe,它们都会完美执行.问题是当我尝试用代码打开它时.我觉得它与目录有关,但我不太清楚.

非常感谢你.

PS:运行Windows 10.

windows delphi cmd batch-file delphi-7

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