//我不知道如何更好地问这个问题…//
我注册了我自己的新类(TDisplay)。这个类中有一个对象(TRectangle,也是我自己的),它是在TCustomDisplay的构造函数中创建的,TCustomDisplay是TDisplay的前置器
当我在表单上放置TDisplay时,我可以像往常一样编辑两个对象(TDisplay、TRectangle)的所有已发布属性,但只有TDisplay是根据对象检查器设置的。TRectangle保留其默认值(左0、上0、右30、下20),尽管这些属性设置
我有一个文本文件,它以如下形式到达我的应用程序:
<row amount="192.00" store="10" transaction_date="2009-10-22T12:08:49.640"
comp_name="blah "
comp_ref="C65551253E7A4589A54D7CCD468D8AFA"
name="Accrington
如何在超级椭圆函数中隔离“slope”参数,由以下公式给出:
MyY:=(1.0-(功率(1.0-功率(x,2.0/斜率),斜率*0.5)))
当我知道“x”和“MyY”时?
(该函数始终在0到1的范围内使用)。不容易。这个方程不能用代数方法求解。您需要使用数值方法来找到解决方案(例如)。不容易。这个方程不能用代数方法求解。您需要使用数值方法来找到解决方案(例如)。我不需要求解它,更准确地说,当我调用已知的函数“MyY:=…”、“x”和“Slope”时
我只需要用斜率的函数来表示。而不是MyY:
如果我编译这个Delphi2007项目
program MyProject;
{$APPTYPE CONSOLE}
procedure Test;
var
i: Integer;
begin
if i = 666 then
i := 42;
end;
begin
Test;
end.
从命令行
MSBuild MyProject.dproj /t:Rebuild /p:Configuration=Release /l:FileLogger,Microsoft.Buil
myrec.name是中文字符,myrec.name的长度是64字节,我读不懂myrec.name来备忘,请帮帮我 我正在使用Delphi 2010,我发现您的代码有几个问题。首先,我无法让RTTI方法处理字符数组的内联声明。我把它改成:
type
myrec = record
id:dWord;
name:array[0..31] of WideChar;
three:dword;
count:dword;
ShuXing:Single;
ShuXing2:dword;
Sh
我有一个TObject类型的类,叫做CModelItem
我希望有一个这些对象的列表,并能够修改每个对象的值
所以,我创建了一个类
CQueueList = class(TList)
private
public
end;
而我
QueueList : CQueueList;
在var中
现在,我可以将CModelItem添加到此列表中,如下所示:
QueueList := CQueueList.Create;
for idx := 0 to ndx - 1 do
begin
使用Delphi XE,TZipMaster 1.91(最新版本)
我想获取与传递给Find函数的FSpec arg匹配的第一个文件名的文件名。但是,我在调用此函数时遇到访问冲突
var
DBBakFl : String;
d : Integer;
begin
ZipMaster191.ZipFileName := 'myzip.zip';
try
DBBakFl := ZipMaster191.Find('*.FBK', d).FileNa
我有一个抽象类,通过重写抽象方法从中派生出一个具体类。我发现我在重写的方法上放置的任何属性都是不可见的。在查看Delphi文档之后,我发现了这样一句话:“注意,声明的属性类不能声明为类抽象,也不应该包含任何抽象方法。”我的问题是,有人知道如何使这些属性可见吗?发现了值得分享的问题。我定义的属性类称为TapiHelpPattAttribute。我实际用于修饰方法的属性称为TapiHelpPatterBute。请注意名称中额外的“r”。编译器没有意识到我犯了一个拼写错误 在重新阅读了文档之后,我将上
我有以下delphi 2010代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Math, ExtCtrls, pngimage;
type
TMyHintWindow = class(THintWindow)
private
FBitmap :
我正在将Epanet的代码从Delphi7转换为XE3。我的问题是关于用C编译的dll中的*字符
dll中的代码如下所示:
int DLLEXPORT ENopen(char *f1, char *f2, char *f3)
/* Check that file names are not identical */
....
if (strcomp(f1,f2) || strcomp(f1,f3) || strcomp(f2,f3))
{
writecon(FMT04
好的,我现在是一名11年级的学生。我正试图完成一项实际作业,但我遇到了一点问题,我正在使用的教科书没有告诉我如果用户没有在RichEdit中输入数据,如何创建错误消息。有谁能告诉我怎么做吗?谢谢你花时间帮忙 这就是引发泛型异常的方式(使用SysUtils.exception类):
未处理的异常会导致执行路径转义到Delphi RTL内部的默认异常处理程序中,然后该处理程序将向用户显示exception.Message的值
您甚至可以像这样处理自己的异常:
try
...
raise Ex
我快发疯了
这就是我正在做的
将TClientDataset、TImage和TButton拖放到窗体上
将Clientdataset1.Filename设置为biolife.xml
双击按钮并添加以下代码:
procedure TForm31.Button1Click(Sender: TObject);
var
BF: TBlobField;
BS: TStream;
BM: TBitmap;
begin
ClientDataset1.Open;
ClientDataset1
标签: Delphi
alignmentfiremonkeydelphi-xe5listboxitem
我想更改在runtim创建并添加到简单列表框中的litboxitem的对齐方式
如果在运行前在设计窗口中添加listview项,则可以通过以下方式轻松调整对齐方式:
但是,当对象在运行时创建时,它根本不以这种方式工作。例如,高度会:
此代码有什么问题?此类设置通常从样式中提取。StyledSettings属性告诉FM应该从样式中提取哪些属性,其他属性将从属性中设置。如果在设计时编辑属性,编辑器将为您调整StyledSettings属性。在运行时,您需要手动执行此操作
尝试添加:
li
问题:我需要在给定的url上通过Delphi XE5或XE4打开Google Chrome,但我需要以弹出格式打开,没有菜单和工具栏。怎么做?用参数创建一个新的Chrome进程--应用程序和你的url用参数创建一个新的Chrome进程--应用程序和你的url用参数创建一个新的Chrome进程--应用程序和你的url静默模式
ShellExecute(Application.Handle,'Open', 'chrome.exe',PChar(' -incognito '+URLText), 0,
用户登录时,其名称将显示在应用程序主窗体的状态栏中:
StatusBar1.面板[1]。文本:=
DataModule1.ADQuery4.FieldByName('USER').AsString
但是,该用户还可以访问(priviledge)另一个表单,通过该表单可以添加或删除用户)。如何防止此用户删除自己?如何判断添加用户的查询以避免状态栏中显示的查询?或者删除之前的消息?使用ADQuery4的BeforeDelete事件
procedure TDataModule1.ADOQuery4Be
我的物业类别:
unit SubImage;
interface
type
TSubImage = class
private
{ private declarations }
function getHeight: Integer;
function getWidth: Integer;
procedure setHeight(const Value: Integer);
procedure setWidth(const Value: Integer);
protect
从Win XP下的Delphi 2007到Win7下的Xe7
我不确定为什么这条突出显示的线不起作用
Error : [dcc32 Error] utilmemblock.pas(935): E2017 Pointer type required
//D:Convert a memory block to a List. Odd sizes are truncated.
procedure MemBlockToList(const MemBlock:TMemBlock;List:TList);
Delphi枚举值本机定义为无符号整数-1、2或4字节,具体取决于MINENUMSIZE的设置
我有一个例子,我们使用变体在应用程序之间传输不同数据类型的数据。所有其他数据类型都可以很好地工作,但现在我们意识到,其他应用程序的期望是枚举值应该是有符号整数,而不是无符号整数(一些应用程序正在验证这一点)
是否有办法配置自动变量转换,将枚举值转换为varInteger,而不是varUInt32
背景:我们正在为OPC UA编写库代码。OPC UA定义了一种称为Variant的类型,它在Windows
我正在尝试创建一个DUN条目
我正在使用lpRasEntry参数null调用RasGetEntryProperties。这将返回lpdwEntryInfoSize参数中的结构大小。相反,它返回一个错误-error\u INVALID\u SIZE
如何调用RasGetEntryProperties函数来获取RasEntry结构大小?表示,当RasEntry记录的dwSize字段不正确时,错误大小为“无效”。如果函数能够读取该字段,那么您没有像您声称的那样为lpRasEntry参数提供空指针。Mi
我正在寻找一个像样的图表库与Delphi2010一起使用
我们不希望在客户端PC上安装额外的框架,因此希望避免使用.Net、Java或Flash的工具包
我们需要的图表类型非常简单(2D和3D饼图/甜甜圈、条形图、线条图),但客户希望有半透明、圆边等有吸引力的图表,类似于从中提供的图表
这似乎是一个自然的选择,我们对此进行了研究,但它们不支持客户要求的外观。我使用了TeeChart和TMS图表。两者都可以在不进行任何其他部署(即ActiveX、DLL)的情况下使用。我倾向于使用更多的图表;这是一
我有一个用Delphi编写的COM对象,它有一个返回变量的属性。基本上,这个属性根据我传递给它的参数返回一个值。当我从VBA(例如Excel)访问对象时,我可以编写如下内容:
MyObject.MyProperty("IntProperty") = 22
现在,属性还可以返回IDispatch对象,该对象存储在变量中。如果我从Delphi访问com对象,我将编写以下代码来提取IDispatch信息
var
Info : IMyInterface;
Info := IDispatch(TV
有人知道如何在Delphi中限制/控制ICS组件中twsocket(客户端)的带宽吗?我们有一个将端口映射到squid的小程序。使用ICS组件的软件将来自LAN的请求传输到squid的一个端口,并将内容返回到原始IP。有人能解释一下,如何控制带宽,将其限制在一定的KB/s,防止坏孩子使用全部资源吗?一些代码片段可能会受到高度赞赏
提前感谢。这在常见问题解答(查找“带宽控制”)中有介绍。
还有一个指向实现它的组件的链接您似乎正在尝试模拟网络约束。
这是几个用于此目的的商业应用程序,它们也模拟延迟
我在带有256x256位图的图像上使用Stretch=True。这将按比例缩小1、2、4或8。正如所料,位图上的文本越是偏离“1”就越可怕。
不过我注意到,Windows7资源管理器将位图的缩小版本渲染得更“柔和”和更令人愉悦。有可能用这种方式“模糊”TBitmap吗?我想你的意思是在时间上拉伸=真,而不是在TBitmap上
不幸的是,TImage在调整图像大小时没有内置重采样器。
我的建议是使用它,因为它支持多种重采样器(一些更适合增大尺寸,另一些更适合减小尺寸)通过使用半色调StretchB
我有一个LOGFONT结构。现在我要做的就是从LOGFONT高度获取相关的字体大小(以点为单位)。当映射模式为mm\u Text(通常是这样)并且lfHeight字段为正值时,它已经给出了以点为单位的高度。当它为负数时,单位为像素。提供了要在它们之间转换的公式:
每英寸有72个点GetDeviceCaps告诉您给定设备上每英寸的像素数。反转公式以从点获取像素:
PointSize := MulDiv(-lfHeight, 72, GetDeviceCaps(hDC, LogPixelsY);
是否可以从代码中设置“版本信息”设置?我想在不使用“项目选项”对话框的情况下设置“注释”属性的版本编号和值。解决方案是编辑项目资源文件。检查此C++示例,您需要重写应用程序资源。
好的起点可能是XN资源编辑器,它附带源代码
值得一读的还有Inno设置(它确实为可执行输出设置了图标)我建议使用一个构建工具,比如(我经常使用),它可以根据适当的方案为您实现这一点。然后,您知道构建选项都是您想要的,您的数字会适当增加,您可以执行诸如上传到FTP站点等操作。在我的脚本中,从EXE到安装程序以及所有程序,
有没有办法将整个数组复制到另一个数组中?而不是使用for循环
or命令对此有效吗?
我确实尝试过,但它有一个错误:不兼容的类型
我应该坚持使用for循环吗?移动或复制将不起作用,您可以使用CopyMemory,但这需要阵列是一个连续的内存块
SetLength(DestArray, Length(MyArray));
CopyMemory(@DestArray[0], @MyArray[0], Length(MyArray) * SizeOf(ArrayElement));
看
对于索引和Le
我正在寻找一个软件,可以反向工程德尔福2010年项目,并创建一个类图。
我已经试用了一些软件(ModelMaker、Enterprise Architect),但它们并不像我预期的那样工作。
Enterprise Architect无法对Delphi 2010代码进行反向工程,例如,它不理解代码中的泛型。
ModelMaker太复杂了,我真的不喜欢它的构建方式(界面很糟糕)。
所以你们对一个好的UML工具有什么建议,它可以与Delphi2010一起使用?不管是免费的还是付费的。我只想要一个好的U
有一个应用程序正在多台机器上运行(大约在2台机器上运行)。此应用程序更新放置在网络上的共享mdb。两个用户都试图一次更新共享mdb,但问题是一次只有一个用户能够更新mdb。另一个用户无法打开它。是否有人建议access支持多用户环境
编辑:
有一个表单TFormRoadAttrib。当它激活时,调用以下函数
procedure TFrmRoadAttrib.FormActivate(Sender: TObject);
if dmTimeDomain <> nil then
be
我正在使用下面的代码在Delphi7中创建messagebox。然而,我在屏幕上还有另一个表单,它的FormStyle设置为fsStayOnTop,并且消息框显示在此表单后面
有没有办法强迫messagebox出现在前面
if Application.MessageBox('Amessage here','Title', +MB_APPLMODAL + MB_ICONQUESTION + MB_YESNO) = IDNO then
在Windows.pas中,您可以找到更多指向Mess
每次我向列表框、列表视图或编辑器中的按钮添加文本时,它都会在每次程序启动时显示。问题是为什么当我在运行时添加它们,然后重新启动程序时,这些项(文本或按钮)会消失。我知道文本可以保存在文件中,但有没有其他方法像编辑器中保存的默认文本一样。当您在设计时添加文本时,它会保存在.dfm文件中并编译到程序中。这不会在运行时发生
想象一下,如果是这样的话。它不能以同样的方式运行,因为一旦部署了应用程序,就不能更改可执行文件。您不希望将用户设置存储在可执行文件中。因此,这些设置确实需要位于应用程序外部
要实现
我试图在dll中创建一个FMX表单,大约17个小时(尝试了不同的方法)后,我让它工作了,除了我在尝试卸载dll时遇到异常。我不知道该怎么做,也许有人能帮我指出我做错了什么
旁注:
我不能在我的VCL应用程序中使用FMX表单,因为AA绘图,我只需要在画布上绘图时在文本上使用FMX表单,而在VCL应用程序中使用FMX表单时,我无法在文本上使用cleartype:(我试图制作某种OSD/HUD
显示我的问题的项目:
exe unit1.pas
unit Unit1;
interface
uses
我们有一个Paradox数据库表,我们希望使用类似DSynchronize的东西在网络上镜像它
我看到的问题是,通过BDE(Borland数据库引擎)的Paradox不会更新文件系统,直到表被关闭,或者它使用的某个缓冲区被填满
我使用了flush buffers调用,它对磁盘上的文件没有影响。在表上调用close将强制执行我正在寻找的更新,但是这是一个非常大的问题
我只是错过了某个BDE设置吗
最后,使用正确的NetDir设置通过网络共享此数据库,使更改对另一台计算机可见。这些文件看起来仍然没有
标签: Delphi
delegatesnesteddelphi-xe232bit-64bit
作为。自结束相关问题以来-下面添加了更多示例
下面的简单代码(查找顶级Ie窗口并枚举其子窗口)适用于“32位Windows”目标平台。早期版本的Delphi也没有问题:
procedure TForm1.Button1Click(Sender: TObject);
function EnumChildren(hwnd: HWND; lParam: LPARAM): BOOL; stdcall;
const
Server = 'Internet Explorer_Server';
标签: Delphi
modal-dialogvcltactionmanager
情景:
与此操作关联的战术管理器、战术按钮和TButton
ActionManager在其OnUpdate事件处理程序中不断启用该操作
动作事件处理程序中的代码使用Jedi代码库JCL使用ShellExecAndWait方法启动外部程序
要求:应用程序不应允许通过再次快速单击按钮来启动应用程序两次
问题:
ShellExecAndWait不会阻止应用程序消息循环,因此用户可以在外部应用程序仍处于打开状态时单击
如果操作处理程序方法在ShellExecAndWait调用之前禁用该操作,则更新方法将
标签: Delphi
delphi-xe2code-completion
在较新的Delphi版本中,可以使用“代码完成”一次在case语句中对所有案例进行编码,例如枚举类型
但不管我怎么做,我都无法让它发挥作用。我应该开始键入什么,然后使用什么热键?可能我缺少工具/选项设置,尽管我不怀疑,因为这是一个手动操作。使用选项卡退出case变量字段,如果变量是枚举类型,IDE将自动完成case选项
在代码编辑器的适当位置键入casespace
IDE添加了一个case模板,并显示一个蓝色矩形字段,您可以在其中键入case语句的变量名
写下该变量的名称,然后
使用Tab键退
如何检查Web服务是否可用或是否具有有效的url
我正在使用Delphi向导导入和自动生成必要的WSDL函数
向导为我创建的函数不会在WSDL或URL错误时引发异常或返回空对象。只有在调用返回的WSDL类的函数时,它才会抛出一个奇怪的异常,即XML字符串没有有效的“text/html”样式
以下是自动生成的WSDL函数:
function GetcheckVatPortType(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): checkVa
如何将格式化文本添加到SynEdit控件?我实际上不需要语法高亮显示,我希望能够控制线条特定部分的颜色
为了达到这个效果,我目前正在使用一个TRichEdit并设置seldattributes.Color和seldattributes.Text。它工作的很好,但我希望摆脱使用TRichEdit
我能做类似于SynDIT的事情吗?或者它不是这个工作的理想组件吗?也许你应该考虑嵌入一个WebBuffor。这可能就是我解决它的方法。SynEdit它基本上是一个代码编辑器。您可以控制某些属性,但通常通过
我想使用通用TList的OnNotify事件。将过程分配给OnNotify会产生错误消息:
E2010 Incompatible types: 'System.Generics.Collections.TCollectionNotification' and 'System.Classes.TCollectionNotification'
我声明了一个类,其中使用了一个通用TList,如下所示:
TEditor_Table = class (TObject)
public
FEditors
我有一段代码没有编译:
function IsControlOneOf(AControl: TControl; AControls: array of TControl): Boolean;
begin
Result := False;
// if AControls <> nil then // does not compile!
if Length(AControls) <> 0 then // this compiles
Result := AC
我正在DelphiXE4中使用FastReport4。
我在运行时设置连接字符串,如下所示:
ADOConnection.ConnectionString := ConStr;
ADOConnection.Connected := True;
AdoQuery1.Connection := ADOConnection;
所以我无法在FastReport Designer中看到预览!
我有这样一个问题:
AdoQuery.Sql.Text :='SELECT Table1.title,Table
我有一个带有图标的菜单。在我在表单上放置TMemo之前,一切都很好。当我运行我的程序时,图标出现了。发生了什么,我如何解决这个问题
我使用Delphi 2010作为IDE。调试VCL时,我跟踪了TMenuItem.AppendTo过程中的问题。当变量IsOwnerDraw设置为False时,图像不显示,在这种情况下,当GetImageList返回Nil时,图像不显示。这可能是VCL上的一个错误,但在TMainMenu中设置OwnerDraw=True可以解决问题
编辑:考虑到OwnerDra
标签: Delphi
delphi-xechmhtml-help
Delphi-如何在Delphi XE应用程序中使用CHM HTML帮助文件
本文介绍如何使用CHM文件。
我完成了上面描述的所有步骤
增加
公共职能`
function TForm1.HH(Command: Word; Data: Integer;
var CallHelp: Boolean): Boolean;
begin
if (Command = 0) and (Data = 0) then
HtmlHelp(Application.Handle,
P
我需要用7个不同的单选按钮动态创建一个TRadioGroup
单选按钮如下:
螺钉12mm
桃子罐头250克
笔芯蓝笔
西红柿
意大利面
双弯5m
透明胶250ml
我认为它应该是这样的:
rgpOptions := TRadioGroup.Create(frmSale);
rgpOptions.Parent := frmSale;
rgpOptions.Left := 30;
rgpOptions.Top := 100;
rgpOptions.Width := 300;
r
简单问题
缓存更新选项和阵列DML之间有什么区别?
我以为缓存更新是为了限制LAN往返,但现在我看到了阵列DML特性
有什么区别?缓存更新是如何在稍后的时间在单个批中执行缓冲更改的方式。这些更改将被缓冲,并且可以在稍后立即刷新。Array DML是一种将数据从客户机传输到DBMS的方法,对于具有本机支持的DBMS来说,它可以从根本上提高速度。所以它们是不同的东西,有不同的应用。如果它们可以组合,如果你可以使用缓存的更新,然后这些更新作为DML数组传输到DMB,我不知道。但这将是一个不同的主题。那
我使用一些字典来提高搜索速度。但我不想让它在我释放它时清除我的对象。像属性OwnsObjects=False的TObjectList一样,可能吗
谢谢t词典没有自己的会员。TObjectDictionary可以选择同时拥有键和值,也可以不拥有键和值。此所有权由传递给构造函数的参数确定
如果您正在使用TDictionary并认为它正在破坏其成员,那么您就错了 t词典不拥有其成员。TObjectDictionary可以选择同时拥有键和值,也可以不拥有键和值。此所有权由传递给构造函数的参数确定
如果您
标签: Delphi
delphi-xe2sybase-asa
我有一个多用户数据库系统,它存储不同字段的记录,例如文本、日期和时间等
是否有人知道当用户更改/修改记录字段时如何捕获。有点像审计历史记录,它显示记录中发生的所有事件
我通过tdatasource和TADQuery(fireDAC)连接到数据库
谢谢,我看到了一个解决方案,每个重要的表都有许多触发器,在插入、更新和删除记录时都会触发这些触发器。这些触发器将记录的旧状态和新状态保存到相应的“历史”表中。在DBMS端执行此操作。
我想在运行时将新面板添加到表单中,但我遇到的问题是,将它们与顶部对齐时,它们不会按照创建它们的顺序显示
我按照这篇文章中的提示使用DisableAlign()和EnableAlign()
这适用于我添加的最初四个面板
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TPanel * test;
Panel1->DisableAlign();
for(int i = 0; i<
我的项目中有许多表单使用表单OnClose事件。
然而,我需要在运行时在所有表单上添加另一个“通用”OnClose。
有没有办法只添加新的事件方法,而不是替换它?因此,表单将触发两个OnClose事件。一次只能为一个事件分配一个处理程序
您可以将“通用”处理程序分配给每个窗体的OnClose事件,然后让每个窗体重写其虚拟DoClose()事件以执行其本地工作。当准备好调用泛型处理程序时,它可以调用继承的DoClose()方法。例如:
type
TMyForm = class(TForm)
我在Delphi 2010上遇到问题。当我尝试编译时,我得到以下输出:
Checking project dependencies...
Compiling prjAlarmBlock.dproj (Debug configuration)
[DCC Fatal Error] F2039 Could not create output file 'MyProjectName.exe'
Failed
Elapsed time: 00:00:00.4
我几乎
我是德尔福的新手,我正在尝试做一些网络操作。在本例中,我希望连接到一个(我们称之为)通知服务器,该服务器将在任何事件发生时发送字符串
我的第一个方法是:
我在自己的线程上运行TIdTCPClient并设置ReadTimeout,这样我就不会总是被阻塞。这样我可以检查线程的终止状态
ConnectionToServer.ReadTimeout := MyTimeOut;
while( Continue ) do
begin
//
try
Command := Con