我用Delphi2007创建了一个Windows CGI,使用CGIExpert进行调试
有没有简单的方法可以在IDE中运行它,同时向它传递参数?我尝试将主机应用程序设置为iexplore.exe(Run | Parameters)并在Parameters字段中输入一些文本,但它似乎无法在运行时传递任何参数
有人知道我可以在Delphi IDE中使用一些参数运行cgi的方法吗?这并没有回答您的问题,但可能会有所帮助:
您传递CGI的URL,它向它发送值以检测问题。您需要一个Web服务器。将其加
如何在Delphi6中搜索动态字符数组中的子字符串,并返回匹配的索引,而不是指针?我在Delphi6中看到过这样的函数,它们对字符串执行此操作,但对动态字符数组不执行此操作。有一个名为SearchBuf的函数,但当我需要匹配的数组索引时,该函数返回指向匹配位置的PChar指针
谢谢。如果你有一个指向匹配的指针,只需减去指向第一个字符的指针,就可以得到索引
var
Buf, Result: PChar;
Index: Integer;
Result := SearchBuf(Buf, .
有人知道系统范围的API与Delphi挂钩吗
我下载了madCodeHook,但它没有任何来源,所以我不想使用它;我想自己编程
我发现了,但是它是C++的。请帮助我在Delphi2010中编写它。您必须使用钩子过程(全局:整个系统;或局部:单个程序或线程)
基本上,您将调用以下过程:
SetWindowsHookEx功能:安装挂钩(监控系统事件)
钩子函数:当我们“钩子”到的事件发生时,windows将调用该过程
UnhookWindowsHookEx函数:移除钩子
下面是本地钩子监视键盘条
标签: Delphi
delphi-7corbaidltypelib
Delphi7中有没有从idl生成tlb的方法?或者甚至从类/接口定义?您可以使用批处理文件(IDL2PAS.batC:\Program Files\Borland\Delphi7\Bin)或应用程序 在Delphi 7中,最简单的方法之一是将IDL复制/粘贴到类型库编辑器源窗口中。不是类型库后面的*_TLB.pas源单元,而是类型库编辑器本身
我现在手头没有D7,但是iirc您可能需要将IDE设置中的“Type Library Language”选项设置为IDL而不是Pascal。我似乎还记得
我需要使用ADO查询从现有表的查询中创建一个新表。
DB是MS Access 2003。有没有一个简单的方法来重现这个
DROP TABLE IF EXISTS tmp_report;
CREATE TABLE tmp_report
SELECT Userid, Name,
DATE(CheckTime) AS date,
MIN(CheckTime) AS first_login,
MAX(checktime) AS last_login,
COUNT(C
如何访问“Flist”变量?
谢谢
德尔福2010,印地10,Win7
是的,这让我自由了:
你的文章没有太多的上下文来解释代码部分;请更清楚地解释您的场景。您需要解决变量Form1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, IdTCPClient;
type
TForm1 = class(TForm
我正在使用Indy和Delphi-XE开发一个下载管理器(应用程序使用多线程尝试与服务器建立多个连接)。一切正常,但有时最终下载的文件会被破坏,当我检查下载的临时文件时,我发现其中2或3个文件的末尾填充了零。(每个临时文件都是每个连接的下载结果)。
文件越大,我得到的临时文件就越多。
例如,在一个65536000字节的临时文件中,只有0-34359426的范围是有效的,而从34359427到64535999的范围则全是零。若我删除那个些零,应用程序将自动下载缺失的片段,我得到的结果是,若问题不会
使用此(测试)代码从PNG读取文本块:
procedure TForm1.Button1Click(Sender: TObject);
var
PngVar: TPngImage;
n: Integer;
begin
PngVar := TPNGImage.Create;
PngVar.LoadFromFile('C:\test.png');
for n := 0 to pred(PngVar.Chunks.count) do
if PngVar.Chunks.item[
标签: Delphi
delphi-xe2tactionmanager
我正在为用户界面实施操作(在TActionManager)。单击某些控件时,执行相同的操作。但是,在该操作处理程序中,我需要知道用户实际单击了哪个控件。但是发送方是战术而不是原始控制
如何识别用户实际按下了使用此操作的哪个控件?您可以从操作属性获取此信息。您可以在此处找到答案:@Toon该问题似乎更多关于菜单、按钮或快捷方式。但我想在什么地方会有个傻瓜!;-)老实说,我所做的实际上是一个菜单项和一个复选框(同时来回切换选中状态),但操作执行处理程序是相同的。@Jerry-对于控件,您已经得到了答
在TMemo字段中,我有3行:
第1行
第2行
第3行
是否可以将所有三行作为一个字符串
例如:
line1、line2、line3您可以使用Lines.CommaText属性进行此操作。请执行以下操作:
CommaString := Memo1.Lines.CommaText;
如果希望文本使用另一个分隔符,则使用DelimitedText属性也很有用。您可以使用以下方法来实现此目的:
Memo1.Lines.Delimiter := '-';
Memo1.Lines.StrictDelim
因此,我有一个带有事件的Delphi对象,它是“对过程()的引用”。
通常我可以这样做来分配代理
MyObj.OnBooom:=HandleOnBooom
现在,我想对事件是否被调用进行单元测试。因此,使用依赖于接口的Delphi Mock,我将创建一个具有过程“OnBooom”的接口,将接口传递给TMock对象。然后这样做
MyObj.OnBooom:=FMockCaller.Instance.OnBooom
但这不会编译,因为显然Delphi认为,在右侧,我只是调用接口的过程,而不是希望将其
标签: Delphi
firemonkeyfiremonkey-style
创建自定义FireMonkey样式时,经常会遇到样式对象,例如TButtonStyleObject,其中包含一个或多个属性(例如TButtonStyleObject.NormalLink),这些属性是TBitMapLink的集合。每个单独的TBitmapLink定义三个属性:capinset、Scale和SourceRect。SourceRect包含位图段的坐标,用于绘制控件的某些方面(有关详细信息,请参阅)
我的问题是,CapInsets做什么 我认为这与如何使用单个位图绘制可调整大小的组件有
如何在DesignTime中将firedac配置为数据库firebird的相对路径
object Conn: TFDConnection
Params.Strings = (
'Database=..\..\Win32\' +
'bin\DADOS.FDB'
'Protocol=TCPIP'
'Server=127.0.0.1'
'User_Name=sysdba'
'Password=masterkey'
'CharacterSet=win1252'
假设我有以下记录:
type
TTest = record
test1 : TTest1;
test2 : TTest2;
test3 : TTest3;
end;
pTTest = ^TTest;
TDictestDictionary = TDictionary<integer,pTTest>;
testDictionary : TDictestDictionary
或者需要初始化pValue
我正在使用GLScene编写一个3D建模应用程序,所以我需要通过抓取顶点将鼠标位置下的一些顶点移动到新位置。
首先,我加载一个球体并用鼠标拾取一个顶点,然后我尝试拖动它,但我意识到该顶点不能在鼠标插入符号下正确移动
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics
我有典型的tcp/ip datasnap服务器应用程序,我创建为vcl表单(XE 8),它连接到同一台机器上的Firebird数据库,现在我想将其转换为windows服务运行。如何做到这一点?您可以从文件->新建->其他->数据捕捉服务器->数据捕捉服务器创建一个数据捕捉应用程序作为Windows服务;第一个向导表单,选择“服务应用程序”,完成向导并将非UI代码迁移到该项目中。请参阅。基本上你需要删除所有的GUI部件。为什么你有GUI?@David实际上我所有的服务都是从一个测试UI开始的-但是
我尝试在DelphiV10中编写一个新的ComponentEditor,当您在formdesigner中右键单击组件时,这应该会向组件TFDQuery添加一个新的菜单项
我的代码有严重的问题。有时出现正确的菜单,有时不出现。我的新menuitem工作正常,但旧组件编辑器的四个menuitem的后代会引发异常,有时不会。重新启动IDE后,我的组件不再注册
使用谷歌时,我没有找到解决问题的特定信息
也许有人能给我一个提示,我做错了什么
致意
格雷戈
遵循我的代码
UNIT GK_Query_Reg
DelphiV10.1柏林。Indy v10.6.2 OpenSSL v1.0.2h
我在Delphi中设置了一个表单,使用带有SSL连接的TIdIMAP4(TIdSSLIOHandlerSocketOpenSSL)进行测试。因为这是为了测试,所以我设置了一个复选框来显示IMAP组件当前是否已连接,并且我将IMAP和SSL IOHandler的OnStatus和OnStatusInfo事件连接到更新复选框的代码。这一准则很简单:
IsConnectedCB.Checked := imap.Con
我已经在应用程序的主窗口中添加了一个鼠标滚轮处理程序,它似乎可以工作,但并不像我从MSDN在线文档中期望的那样
根据MSDN帮助,结果应设置为零,以指示消息已被处理,但如果我这样做,则例程将被调用两次。设置为非零值(在我的例子中为-1)会导致只调用一次
下面是一些说明问题的测试代码:
unit Mouse_Wheel_Testing;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Form
我试图使用dcc32(-J$+开关)的可写结构化常量参数,但它不起作用。示例代码:
program Project2;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
const
TEST : array [0..3] of string =
('1', '2', '3', '4');
begin
try
TEST[1] := '1';
except
on E: Exception do
标签: Delphi
tls1.2tcpclientdelphi-10.2-tokyo
我正在使用TTCPClient与服务器建立连接。如何使用TTCPClient启用TLS?TTCPClient没有TLS的概念。您必须在其上使用第三方TLS库,如OpenSSL
昨天我开始讨论“MDI与选项卡式界面”。我问过我是否应该继续开发基于MDI的应用程序,还是应该将子表单嵌入到选项卡页中。
有人指出我应该使用TFrames来代替。。。我的问题是:为什么
在TFrame上嵌入表单时,使用TFrame的优点是什么?到目前为止我还不知道,切换只需要我重写部分代码
(无论如何,我不会在设计时使用嵌入!)
提前感谢当您想在表单中多次重复“子表单”时,帧是很好的。我不会将它们用于选项卡式界面,因为嵌入式表单是MDI/选项卡式界面使用的更好解决方案。也许您会在这个线程中找到一
我正在尝试调试DirectShow源过滤器。我正在Windows XP上使用Delphi Pro 6以及DSPACK组件库。我使用Skype作为我的主机应用程序,我在运行菜单的参数选项中设置它,用于测试我的源过滤器DLL ax文件扩展名。Skype运行正常,我在事件查看器中看到OutputDebugString消息流,但我的断点从未被击中。在我的项目设置中,我关闭了优化,打开了堆栈帧,打开了调试DCU,打开了范围检查,打开了溢出检查。每次修改代码并运行测试时,我:
做一个完整的构建
注销Dire
如何确定单元是否位于虚拟树视图的查看端口中?谢谢。使用控件的GetDisplayRect方法查找您感兴趣的节点的坐标。指定列,或为整行指定-1。对于不可见或过滤掉的节点,它将返回Rect(0,0,0,0)。然后检查返回的矩形是否在控件的客户端区域内(ClientRect)。你可以用它来做那部分
我使用Indy TIdhttp组件构建了一个简单的网站监控应用程序。我想检测在指定的时间范围内(我使用5000毫秒)指定的页面何时没有返回。作为一个测试,我在一个网站上创建了一个页面,故意用15秒来响应。但我不能让我的程序在5秒钟后“放弃”。我尝试了使用计时器和OnWorkBegin事件的ReadTimeout(在get调用后,无法立即触发OnWorkBegin)
注意我不担心连接超时。我关心的是服务器返回页面的超时
下面是我一直在使用的一些源代码。它包含我引用的许多元素
procedure T
调用重载函数是否有额外的运行时开销
(我专门针对Delphi提出这个问题,以防所有编译语言的答案都不一样)
我认为不应该在编译时解决这个问题,但您永远不能确定,是吗?当然可以确定,因为确实如此。是在编译时解析它的编译器,因此在Delphi中调用重载函数时没有额外的开销
[编辑]
我为你做了一个小测试:
var
j: Integer;
st: string;
procedure DoNothing(i: Integer); overload;
begin
j := i;
end;
标签: Delphi
reverse-engineeringexedecompiling
与使用其他编程语言/编译器构建的其他可执行文件相比,为什么反编译delphi exe如此简单?您的说法是错误的。Delphi并不比其他主流编译器生成的代码更容易反编译
对于.net语言来说,有
本文介绍了C++语言
解释Python/Perl/Ruby等
如果您能够证明反编译Delphi可执行文件的结果的质量明显高于其他广泛使用的语言,那么您的问题将具有更大的份量。以下几点有助于逆转Delphi程序:
您将获得完整的表单数据,包括事件处理程序方法的名称
所有具有发布的可见性的成员都将元数据
我想到的是这里的客户端PC。当有人来运行我的应用程序时,他们可能没有安装MySql连接器/ODBC
现在,我可以尝试连接InformationScheme(或mysql)数据库(哪个更好?)——但是,如果失败,可能只意味着数据库服务器已关闭。我可以ping它,但它可能已启动,MySql进程当前未运行
我想我还是可以安装这个连接器,尽管它听起来很邋遢,但如果这样做会明显减慢我的应用程序的启动时间,那就不行了
最好的方法是什么
当我安装时,如何从Delphi进行安装,因为连接器将在d/b服务器上可用
到目前为止,我拥有使用COM+技术构建三层应用程序的经验。
这是一项巨大而先进的技术,支持许多有趣的概念。
它只适用于在局域网上运行的应用程序
现在我正计划构建三层系统,仍然基于D7。区别在于它应该在互联网上工作。客户将分散在世界各地。
根据我在这种情况下的经验,我不会依赖com+。
Com+基本上需要稳定的连接,配置防火墙服务器并不容易,它必须打开相当大范围的端口(即使你缩小了它)
所以问题是。在生产中,什么体系结构(web服务、服务或其他)适合您?我想我希望有一个tcp端口监听的服务。在其中
当Delphi 2010在Windows 7上安装的内存超过4 GB时,是否有办法获得总的可用内存
此代码返回的空间不超过3.99 GB:
var
Memory: TMemoryStatus;
Memory.dwLength := SizeOf( Memory );
GlobalMemoryStatus( Memory );
dwTotalPhys1.Caption := 'Total memory: ' + IntToStr( Memory.dwTotalPhys ) + ' Bytes
标签: Delphi
adodatamoduleadoconnectiontadotable
好的,所以我的应用程序运行得很好,直到我决定通过创建一个DataModule表单并将所有数据库组件移动到其中来稍微清理一下设计时表单。我使用的是Delphi XE2 Update 1和这些组件:TADOConnection、TADOTable、TADOQuery、TADOCommand。当我第一次尝试在DataModule窗体(而不是主窗体)上使用上述组件运行应用程序时,它现在在执行DPR中的这一行时返回一个错误:
Application.CreateForm(TDataModule1,Data
标签: Delphi
delphi-xe2code-organizationproject-files
我们有一个大型的SQL驱动的软件系统,它从Delphi1开始就存在了。它在所有不同的项目中使用相同的原始项目文件。我们最近开始升级到Delphi XE2,我一直在考虑创建新的项目文件并重新添加所有源代码,以确保它们获得新Delphi XE2项目的推荐默认值
有人推荐这个吗?风险是什么?显然,重新定义版本号、项目名称/描述/公司信息等是一项困难的任务。但让我害怕的是原始项目的规模。3个主要可执行文件加上许多其他文件,总计可能接近300万行代码
我考虑这样做的主要原因是因为我已经看到了新的Delph
我需要监控在远程计算机上执行的应用程序的活动,所以我选择使用简单的SendLn/RecieveLn方法,但我不确定它在非常大的本地网络中是否稳定(一台服务器将从大量计算机接收简单的文本)
从来就没有保证的交付-网络问题要注意这一点。客户端知道服务器已收到通知的唯一方式是客户端是否收到服务器的响应。但是,在状态更新的情况下,只要更新中发送了完整的状态,您就可以设计系统,这样,如果奇数消息丢失,就不会有真正的问题,因为下一条消息或其他消息最终会通过。除非你有永久性的网络问题,在这种情况下,“snea
我在另一个“下方”图像上显示透明图像
在这种情况下,底部(实体)图像是棋盘格,顶部图像是狮子(透明):
=
原因是要更好地显示透明区域,因为通常您无法看到哪些区域是透明的
问题是,位图的尺寸可以是任意大小,因此网格也需要与位图的尺寸相同
如果您愿意,一种肮脏的方法是在上面创建一个更大版本的棋盘格,大小如2000x2000,然后根据您正在使用的位图的大小,您可以调整网格画布的大小以匹配。这并不理想,因为这意味着在应用程序中存储大型棋盘格位图,然后调整其大小,这可能会根据纵横比等给出正确的结果
我
标签: Delphi
progress-barinplace-editing
my DBTreeListView中的一个单元格绑定到作为进度条的存储库项
我希望能够通过单击此单元格编辑显示的进度。在这个阶段,我的应用程序应该将其单元格更改为另一个存储库项:一个文本字段,我可以在其中插入一个值。一旦焦点更改为另一个单元格,我的进度条将再次显示,并显示一个新值。我该怎么做
DBTreeListView具有列事件OnGetEditingProperty和OnGetEditingProperties。我可能会使用其中的一个(或两个),但我想不出任何好主意。这可能很简单。你应该点击
在这段代码中,正如您在Connect上看到的那样,AContext.Data中填充了一些内容
TmyTThreadList = class(TThreadList)
id: integer;
end;
var unique_id:integer;
procedure TfrmTestIdTCPServer.IdTCPServerConnect(AContext: TIdContext);
begin
CS.Enter;
try
inc(unique_id);
fin
我使用TMimeMess对基于SMTP服务器的传入电子邮件进行解码
在突触上
我发现,对于50MB MIME消息的解码(带有
附件),TMimeMess使用了600-800MB的内存
此处解码代码:
FMimeMsg.Header.DecodeHeaders(FMimeMsg.MessagePart.Lines);
FMimeMsg.MessagePart.DecomposeParts;
ExtractPartsFromMess(FMimeMsg.MessagePart);
...
proced
我在我的应用程序中使用了大量的TIdHTTP,我的用户请求了一个具有特定超时的Socks4/5功能。我使用我的应用程序与SSL网站通信,以前我只使用常规的ProxyParams。
如何将Socks4和/或Socks5支持添加到具有特定超时的TIdHTTP组件
编辑:
因为我没有任何Socks4/Socks5代理,所以我创建了一个新的应用程序来测试。
我添加了tidsockserver,并为其分配了tidserveriohandlerslopenssl。
为了确保it连接,我在OnConnect中
我是Spring4D框架的新手,请求帮助
我有下一个类和接口:
ICommand = interface
TCommand = class(TInterfacedObject, ICommand)
IVecadCommand = interface(ICommand)
TVecadCommand = class(TCommand, IVecadCommand)
TVecadCommandJPG = class(TVecadCommand, IVecadCommand)
TCommand
标签: Delphi
firemonkeydelphi-xe6livebindings
我的软件主要基于Firemonkey TListView,它是根据Delphi示例项目中的“SampleListViewMultiDetailAppearanceProject”定制的
“C:\Users\Public\Documents\Embarcadero\Studio\14.0\Samples\Object Pascal\Mobile Samples\User Interface\ListView\”
这是使用PrototypeBindSource时的情况:
每条记录显示1个图像和4个
标签: Delphi
firemonkeydelphi-xe8
在TApplication.Run的实现中,有以下内容:
{$IFNDEF ANDROID}
AddExitProc(DoneApplication);
{$ENDIF}
这意味着,DoneApplication永远不会在Android上执行
Android和所有其他FireMonkey目标之间出现这种差异的原因是什么?在XE7的VCL中,它是{$IF NOT DEFINED(CLR)}。在这种情况下,对DontApplication的调用将在TApplication.ProcessMes
我使用组件标记赋值(NativeInt)将其添加到字节集。该程序在为WIN32编译时工作正常,但不为WINx64编译。(错误:需要序号类型)
这是一个MCVE:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, System.Classes;
var
S:set of byte;
C:TComponent;
begin
C:=TComponent.Create(nil);
我有一个DPK项目,它在编译(到DelphiIDE)时有时会显示错误(“内存不足”),有时它会成功编译。
但是,当我尝试通过MSBUILD编译它时,它总是抛出以下错误消息:
错误F2084:内部错误:AV004A784A-WFFFD3764-1
有人有办法解决吗?像这样的内部错误是编译器错误。我们无法解决这些问题,只有编译器开发人员才能解决。您需要向Embarcadero提交错误报告。鉴于XE3的古老性,您不太可能得到修复
Delphi的现代版本不太容易出现内存不足故障,因此如果升级是一种选择,
我正在尝试使用IPreviewHandler界面在我的应用程序中的TPanel上显示类似windows 7的预览
当我通过调用卸载(这意味着要处理COM对象)然后将对象置零来销毁预览对象时,就会出现问题。应用程序将冻结(在析构函数之后),直到预览主机进程退出。这可能需要几分钟。使用adobe预览.pdfs时经常发生这种情况
我想知道是否有一种方法可以避免这种情况,或者有一种不同的方法来完成文件预览
unit uHostPreview;
interface
uses
Winapi.ShlO
当我使用下面的结构时,我仍然不知道如何消除关于未初始化变量的警告,即使我知道这永远不会发生
TCustomEnum = (ceValue1, ceValue2, ceValue3);
function DoSomething(LI_Enum: TCustomEnum): Integer;
var
lNumber : Integer;
begin
case LI_Enum of
ceValue1 : lNumber := 1;
ceValue2 : lNumber :=
由于Delphi使用UTF-16作为其内部表示,简单地将Unicode解构的所有字节复制到字节数组是否正确
这个平台独立吗?如果你想玩安全牌:TEncoding.Unicode.GetBytes('Hello World')。当前的实现看起来相当高效,您不必担心未来的平台。如果您想玩安全牌:TEncoding.Unicode.GetBytes('Hello World')。当前的实现看起来相当高效,您不必担心未来的平台
我可以使用OnCustomDrawCell中的codeACanvas.Brush.color:=color为TcxGrid单元格的背景上色。是否可以在此事件处理程序中添加纹理?我不能使用单元格的自定义绘制,因为这里有很多其他配置(字体颜色、样式等)。那么-我应该以某种方式使用画笔属性吗?保留我从未使用过的TcxGrid我很有信心您可以使用Vcl.Graphics.TBrush属性。有趣的可能是Style:TBrushStyle和Bitmap:TBitmap。位图应该非常清晰,Vcl.Graphi
我一直在努力解决一个问题,并开发了一个示例应用程序,它显示了(或多或少——错误发生了,但它位于不同的位置)我遇到的问题
这段代码的思想是创建一个对象TGenericList,其中包含一个包含不同类型数据(例如整数、双精度、记录等)的通用对象列表。当其中一个对象发生更改时,它应通知保存该对象的列表
示例程序在运行时,会在第行显示一个EInvalidPointer异常
L.Free;
ABase.RegisterObserver(Self);
在应用程序的末尾
在调试器中跟踪时,在TInterf
我在一个应用程序中工作,该应用程序通过LDAP根据Active Directory验证用户名/密码,并检索用户所属的所有组的列表。这些组确定其在应用程序中的权限级别。当Active Directory可用时,此功能可以正常工作
如果网络关闭和/或Active Directory不可用,我需要同时执行以下两项操作:
验证用户名/密码
检索与用户关联的广告组列表
我可以通过使用LogonUser Windows API调用来完成#1。我搞不懂的是如何为用户获取广告组列表。我甚至不确定当用户登录到计算
我们可以通过以下代码获得类方法地址:
type
TMyClass = class
procedure A;
end;
var P: Pointer;
begin
P := @TMyClass.A;
end;
对于泛型类,如何从泛型类获取方法地址
type
TGeneric<T> = class
procedure A;
end;
var P: Pointer;
begin
P := @TGeneric<T>.A; // &
1 2 3 4 5 6 ...
下一页 最后一页 共 825 页