哪些语言元素可以使用Delphi的属性语言功能进行注释?
delphi 2010引入了自定义属性,可以将其添加到类型的声明和方法中.对于哪些语言元素可以使用自定义属性? 我到目前为止发现的示例包括类声明,字段和方法. (和AFAIK通用类不支持自定义属性). 基于本文,属性可用于 类和记录字段和方法 方法参数 属性 非本地枚举声明 非本地变量声明 还有其他语言元素可以放置属性吗? 更新:本文指出可以将自定义属性放置在属性之前: http://francois-piette.blogspot.de/2013/01/usise-custom--attribute-for-data.html 它包含此代码示例: type TConfig = class(TComponent) public [PersistAs('Config', 'Version', '1.0')] Version : String; [PersistAs('Config', 'Description
0 2024-02-26
编程技术问答社区
有没有Boyer-Moore字符串搜索和快速搜索和替换功能以及Delphi 2010 String(UnicodeString)的快速字符串计数?
我需要三个快速的大弦函数:快速搜索,快速搜索和替换,以及字符串中的子字符串的快速计数. 我曾在C ++和Python中遇到Boyer-Moore String搜索,但是唯一用于实施快速搜索和更换的Delphi Boyer-Moore算法是Petstrings的一部分,Peter Morris是Droopyeyes软件的Peter Morris的一部分,他的网站和电子邮件不再工作. 我已经移植了 fastStrings 转发为在Delphi 2009/2010的Ansistrings工作,一个字节等于一个Ansichar,但是使它们也与Delphi 2010中的字符串(Unicodestring)一起使用,这似乎是非平凡的. 使用此Boyer-Moore算法,应该可以轻松地进行案例不敏感的搜索,以及对案例不敏感的搜索和替换,而无需任何临时字符串(使用strupper等),而无需调用pos()比Boyer-Moore搜索在需要相同文本的重复搜索时进行搜索. (编辑:我
0 2024-01-22
编程技术问答社区
将记录转换为序列化的表单数据,以便通过HTTP发送
有没有办法转换此记录 TError = record code: Word; message: String; end; TState = record caption: String; address: Cardinal; counters: TArray; errors: TArray; end; 像 序列化的形式数据字符串(Content-Type: application/x-www-form-urlencoded) caption=Foo& address=175896& counters[]=2& counters[]=2& errors[0][code]=52& errors[0][message]=ERR_NOT_AVAILABLE 通过http? 发送 也许有一些功能类似于 jquery.param()? 解决方案 好吧,这是一个样板解决方案,可以适合您的特定序列化或其他用途. 记
0 2024-01-11
编程技术问答社区
表达式在评估器中是非法的(及违反访问权限)。
im尝试通过使用类TBB2UC来处理纯文本文件(加载到字符串列表中),但在调用函数getAddress中获取AV. TArrayQuotePositions = array[1..4] of integer; Tbb2uc = class(TObject) private Farrayquotes: TArrayQuotePositions; SlInput: TStringList; Inputfilename: TFileName; SlOutput: TStringList; function GetQuotePositions( aLine: string ): TArrayQuotePositions; function GetInvoice( aLine: string ): string; function GetName( aLine: string ): string; function
4 2024-01-09
编程技术问答社区
Delphi 64位预览编译器可用吗?
很久以前宣布,是否有64位预览编译器可用?我找不到任何东西. 我真的需要一个64位编译器来针对Microsoft Office的64位版本. 解决方案 还没有. 根据如果您想早点窥视这些东西,那么值得其他解决方案 您可以尝试FPC: and 应该在64位delphi P>
0 2024-01-08
编程技术问答社区
我应该如何为最终的64位编译器准备我的32位Delphi程序?
可能的重复: 如何还如何准备迁移到Delphi 2010和Unicode 时64位 由于我相信 64bit delphi编译器将很快出现,所以 我很好奇有人知道什么样的程序 现在的 32bit 将编译和工作没有任何更改 使用 64bit 编译器. ,如果有一般规则,我们应该进行哪种更改 系统地在我们的旧程序中进行编译 如 64bit ? 当 64bit 编译器突然在这里做好准备... 任何建议都将不胜感激. 解决方案 首先,一个免责声明:尽管我在Embarcadero工作.我不能为我的雇主说话.我要写的是基于我自己对假设的64位Delphi应该如何工作的看法,但是可能会有或可能没有竞争的意见以及其他预见或不可预见的不兼容和事件,这些意见和事件会导致替代设计决策. 也就是说: 有两种整数类型,本机int和nativeuint,它们的大小将 根据平台,漂浮在32位至64位之间.他们去过了 周围有很多版本.没有其他整数类型会改变尺寸 取决于目标的位.
6 2024-01-08
编程技术问答社区
Delphi 2010/Delphi XE的免费ZIP组件?
您知道任何免费组件,与Delphi 2010 或 Xe 兼容以管理邮政编码(实际上,仅阅读档案内容并提取所需的文件)? 请不要beta. 我想到了来自Componentace的Zipforge,但仅供个人使用.不允许软件分发. 解决方案 您可以从: http://tpabbrevia.sourceforge.net/ 其他解决方案 您可以看一下其他解决方案 如果您只需要解码(为Delphi 2007开发,尚未根据Delphi 2010/Xe进行测试): unit UnitZip; interface uses SysUtils, Classes; type EZipException = class( Exception ); TZipFileInfo = record LastModified: TDateTime; Crc32:
4 2023-12-26
编程技术问答社区
xmpp-当我的朋友登录时,我如何获得通知,他在我的名册列表中-Delphi
搜索和阅读RFC的一天后,我在这个主题中没有找到任何提示. 我写了Delphi组件以访问OpenFire服务器,到目前为止,所有步骤都不错,但是我遇到的一个问题是: 我的名单列表中有很多朋友,例如我的帐户是" a@localhost" 当帐户" b@localhost" 记录我没有得到根据此通知. " B"帐户已添加到我的名册列表中. 预先感谢 解决方案 XMPP的存在是共识.您的朋友必须接受您的订阅请求.尝试与其他地方联系,并要求他这样做.
0 2023-12-23
编程技术问答社区
Delphi 2010-从XML文档中解码Base64编码的图像
我试图从我的应用程序中的XML文档中解码Base64编码的EMF映像并在屏幕上渲染,但是它似乎从未出现过. 如果我将XML文档中的数据复制/粘贴到记事本++中,并使用Base64 Decode选项,然后将文件保存为.emf,则在MSpaint中打开了良好.所以我认为问题是我如何解码. 我尝试了这些文章中描述的以下解码方法: 如何编码/decode base 64字符串 我也尝试过TIdDecoderMIME班级. 有人知道用XML解码基本64字符串的最可靠方法? 示例 procedure TXmlSerializer.SaveImageFromString(const AValue: string); var StrStream: TStringStream; Decoder: TIdDecoderMIME; begin // AValue is base64 encoded string from XML doc Decoder :
6 2023-12-23
编程技术问答社区
如何在Delphi中正确签署XML
我试图在Delphi中签名XML,但我得到的只是一些未认可的字符. 我正在使用此功能 var xmlData, signature: PByte; data: array[0..0] of PByte; msgCert: array[0..0] of PCCERT_CONTEXT; dwDataSizeArray: array[0..0] of DWORD; sigParams: CRYPT_SIGN_MESSAGE_PARA; cbSignedBlob: DWORD; begin if PCertContext = nil then Exit; GetMem(xmlData, Length(AXml)); try system.Move(Pointer(AXml)^, xmlData^, Length(AXml)); ZeroMemory(@sigParams, SizeOf(CRYPT_SIGN_
2 2023-12-22
编程技术问答社区
是否可以用Delphi发送和接收XML到WSDL的功能...?
过去,我们曾经使用Delphi的Web服务,而这些服务很简单,很少有参数,并将单个值返回给客户端.我们工作的新服务应该能够输入并接收XML输出. 是否有可用于此目的的组合? 我尝试使用以下类似的情况时会收到错误" searchAgreements in搜索参数xmlelement -system.nullReferenceException:对象引用未设置为对象的实例." > LDocument := NewXMLDocument; > DocSearchOut := SearchArgsResponse.Create(); DoxSerchIn := SearchArgs.Create(); DoxSerchIn.SOAPTOObject(LDocument.DocumentElement,LDocument.DocumentElement,HTTPRIO1.Converter); DoxService
2 2023-12-15
编程技术问答社区
带阴影的无边界TF表格
我制作了一个tform衍生物,其作用类似于组合的下拉部分,提示窗口或弹出菜单 - 暂时的东西.它没有标题 - 它的borderstyle设置为BSNONE.该表格使用Show以非模式为单位显示,设置了其位置. 为了使其脱颖而出,它需要在边界周围落下阴影.但是,将其与BSNONE的边界设置为后果是滴影消失了. 各种Google来源提出了这样的变化: procedure TdlgEditServiceTask.CreateParams(var Params: TCreateParams); const CS_DROPSHADOW = $00020000; begin inherited; { Enable drop shadow effect on Windows XP and later } if (Win32Platform = VER_PLATFORM_WIN32_NT) and ((Win32MajorVersion > 5) or
2 2023-12-09
编程技术问答社区
在Delphi中用管理员权限开发应用程序
我正在使用Windows 7下的D2010编写一个似乎需要管理权的应用程序(我认为它使用COM与第三方.EXE进行通信,这也需要管理员权利). 我已经根据需要添加了清单资源,但是当我尝试从IDE调试应用程序时,它报告 "无法创建过程. 请求的操作需要 海拔" ...并且它不会运行.如果我以管理员的身份运行Delphi,那么我的应用程序可以正确运行,但这感觉就像是一种危险的蛮力方法,尤其是因为我开发的大多数应用程序都不需要管理员特权. 在我运行应用程序时,是否有任何方法可以使Delphi提示高程,而不是让整个IDE升级? 解决方案 没有,它也不适用于: https://stackoverflow.com/questions/3265787/3265787/how-do-i-i-debug-an-process-as-as-as-elevated-with-visual-visual-studio-2008-sp1--s-on-windows-7
4 2023-12-07
编程技术问答社区
在Delphi中,CreateFile没有返回适当的Handle-devices
希望找到一个在Windows中具有服务经验的人. 我试图在delphi 中使用NdisProt驱动程序作为以太网适配器 my_Handle := CreateFile(PChar('\\.\NdisProt'), GENERIC_WRITE or GENERIC_READ, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); (也尝试了\\.\\NdisProt) 执行后my_Handle 始终具有'4008'小数的值,而getlasterror始终返回0 如果我尝试读取或写入违规的文件,任何人都知道为什么我会得到这种不必要的行为? 解决方案 如果CreateFile不返回Invalid_Handle_Value,则它给了您有效的句柄,否则该设备的驱动程序很严重.假设前者 违规访问与您的手柄价值无关.这意味着您正在访问不属于过程的内存(例如,通过删除空指针,非初始化的指针,非指针或已释
2 2023-12-07
编程技术问答社区
来自图像列表的PNG图像
如何从TImageList中拍照并将其放入TImage(或将其返回为TGraphic)? 重要的一点是A TImageList可以包含32-BPPα混合图像.目的是获取这些Alpha混合图像之一,并将其​​放在A TImage中.这意味着在某个时候我可能需要TGraphic.虽然,严格来说,我的问题是要将图像从 Imagelist 放入图像中.如果没有中介TGraphic可以完成,那也很好. 我们想要什么? 我们想要一个函数的胆量: procedure GetImageListImageIntoImage(SourceImageList: TCustomImageList; ImageIndex: Integer; TargetImage: TImage); begin //TODO: Figure this out. //Neither SourceImageList.GetIcon nor SourceImageList.GetBit
6 2023-12-06
编程技术问答社区
我如何将一个表格放入帮助模式?
我试图在Delphi 2010中将表格纳入"帮助模式". 我有一个按钮,用户可以单击,我希望光标更改为"帮助光标",然后当用户单击控件时,显示控件的帮助 > 有我可以发送的窗口消息吗? 解决方案 发送 SC_CONTEXTHELP as lParam. 用指针将光标更改为问号.如果用户然后单击对话框中的控件,则控件将接收 wm_help 消息. 在您的按钮中写下这样的东西OnClick事件处理程序: procedure TMyForm.Button1Click(Sender: TObject); begin SendMessage(Handle, WM_SYSCOMMAND, SC_CONTEXTHELP, 0); end;
12 2023-12-06
编程技术问答社区
Delphi和C++的WinAPI函数的地址在不应该的情况下有差异
在C ++中,如果您尝试获取Windows API函数的功能指针,则指针指向如果您在该函数的名称上使用GetProcAddress,则指向相同的地址,并且是各自的模块.例如: &MessageBoxA == GetProcAddress("User32.dll", "MessageBoxA"); 将是true.但是,在Delphi中,情况并非如此.此代码: @MessageBoxA = GetProcAddress('User32.dll', 'MessageBoxA'); 将不是 be true,在我的测试中,@MessageBoxA是0x0040bd18,而等效GetProcAdress返回了测试的C ++对应器所做的一切,0x7550fd1e. 所以现在我的问题:为什么? 解决方案 使用0x004 ..的地址是导入API函数声明的地址(in windows.pas in windows.pas for MessageBoxA),以使其
2 2023-12-04
编程技术问答社区
Delphi TPath.GetTempPath的结果被裁剪了
我正在使用Delphi 2010,我的程序希望获得系统的温度路径.我正在使用tpath.gettemppath,一切正常……至少对我和我的同事来说.但是在某些客户机器上,此方法返回(当然)不存在的裁剪路径.我发现问题似乎是呼叫GetlongPathName()的基本呼叫的结果. 完整的代码看起来像这样: [...] var TmpDir : String; Len : Integer; begin [... Call to GetTempPath succeeds and we have a valid temp directory in short "~" notation in var TmpDir ...] Len := GetLongPathName(PChar(TmpDir), nil, 0); // Len = 37 SetLength(TmpDir, Len - 1); // We w
2 2023-12-04
编程技术问答社区
使用带有认证的网络服务时,总是给出需要认证的消息。
我尝试使用Delphi 2010的消耗一个Web服务. 此Web服务在端口8000上具有身份验证. 我实施 function TForm4.EncodeLoginPW(const ALogin, APW: string): string; begin Result := EncdDecd.EncodeString(ALogin + ':' + APW); // EncdDecd is not documented in end; procedure TForm4.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp; Data: Pointer); var s: string; begin s := 'Authorization: Basic ' + EncodeLoginPW(UserName, Password); if not HttpAddRequestHeaders(D
4 2023-12-02
编程技术问答社区