我正在设计一个自定义控件,每次我在表单设计器中突出显示它,然后从控件选项板中选择另一个控件,新的控件最终在我的控件内,就像它是TPanel或TGroupBox一样.这不是我想要的,所以我怎么能阻止它发生?
这是一个检查内存分配的简单程序.使用任务管理器检查值之前和之后建议每个动态数组占用大小为1的20字节内存.元素大小为4,这意味着簿记数据的开销为16字节.
从查看system.pas,我可以找到一个-4字节的数组长度字段,以及-8字节的引用计数,但我似乎找不到任何对其他的引用8.任何人都知道他们做了什么?
示例程序:
program Project1;
{$APPTYPE CONSOLE}
type
TDynArray = array of integer;
TLotsOfArrays = array[1..1000000] of TDynArray;
PLotsOfArrays = ^TLotsOfArrays;
procedure allocateArrays;
var
arrays: PLotsOfArrays;
i: integer;
begin
new(arrays);
for I := 1 to 1000000 do
setLength(arrays^[i], 1);
end;
begin
readln;
allocateArrays;
readln;
end.
Run Code Online (Sandbox Code Playgroud) 我正在努力将一个旧项目从Delphi 2007迁移到Delphi 2010.我发现有一件事是生成的可执行文件的大小增加了一倍以上,而且原始版本已经很大了.(超过50 MB.)我怀疑它与扩展RTTI有很大关系.
由于该项目早于Delphi 2010,因此它不会在任何地方使用扩展的RTTI,我希望保守包含它.有没有办法使用"项目选项"对话框全局设置{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}为默认值?我曾期望在$WEAKLINKRTTI某个地方有一个选择,但是我没有看到它们.
有没有人知道这是否可以从"传递给编译器的附加选项"字段或其他方式完成?我真的不想为项目中的每个单元添加一个包含文件,因为有几千个...
我在表单上有一个TCheckListBox.它的Columns属性设置为2,如果有多个项目可以放在屏幕上的两列中,它会在控件底部放置一个水平滚动条.
事实上,这种形式的布局,垂直滚动会更方便.但我似乎无法弄清楚如何让盒子做到这一点.我认为将Columns设置为1应该可以工作,但事实并非如此.
任何人都知道如何使TCheckListBox垂直滚动而不是水平滚动?
我遇到了RegEx和Delphi 2k9(Win32)的问题.我得到以下错误:$ 7C812AFB的第一次机会异常.消息'TPerlRegEx.Compile()的异常类异常 - 请在RegEx中指定正则表达式'.我从网站上获得了最新版本的TPerlRegEx.使用其defualt设置(使用DLL)
我包括演示源代码.它使用RegExBuddy生成的代码,最新版本.
http://www.4shared.com/file/236428923/97478b61/googleresultstestdata.html
http://www.4shared.com/file/236439483/e0acbe6d/Unit2.htmlDelphi FORM
http://www.4shared.com/file/236439473/6734a2a2/Unit2.htmlDelphi PAS
谢谢你的帮助
-Brad
数据来自谷歌外部关键字工具RegEx可以使用一些改进...但在RegExBuddy中工作不在Delphi中
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, PerlRegEx;
type
TForm2 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
Regex: TPerlRegEx;
GroupIndex: Integer;
begin
Regex := TPerlRegEx.Create(nil);
Regex.RegEx := 'criteria\.push\(new kpCriterion\('(?P<keyword>(.*?))', (?P<number1>(.*?)),'#13#10'''(?P<localsearch>(.*?))'', ''(?P<globalsearch>(.*?))'', (?P<localsearchnum>(.*?)), …Run Code Online (Sandbox Code Playgroud) 如果我在EXE中有一个资源并且我想要提取它,那就非常简单了.就像是:
stream := TResourceStream.Create(HInstance, ResourceName, RT_RCDATA);
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为全局变量HInstance是EXE的句柄.BPL中的代码有没有类似的方法来获取它所属的包的句柄,所以我可以从中提取资源?
我需要一个可以在DelphiXE中运行的PBears thtmlviewer版本.
我发现Google代码页(http://code.google.com/p/thtmlviewer)现在支持了,但我无法弄清楚在哪里/如何下载我可以使用的版本.
我也无法弄清楚如何在网站上问别人.
我错过了一些明显的东西,还是没有可用的下载?
史蒂夫...
如果我想查找类型为Firebird数据库中所有列的表名和列名BLOB SUB_TYPE TEXT,那么返回此信息的正确元数据查询是什么?
我尝试为Firebird构建UDF.我能够编译DLL并向数据库注册UDF,但我实际上无法运行它.每一次,我都会收到错误:
invalid request BLR at offset 63.
function [FUNCTION_NAME] is not defined.
module name or entrypoint could not be found.
Run Code Online (Sandbox Code Playgroud)
我已经尝试将UDF DLL放在与应用程序相同的文件夹中,并且放在与数据库相同的文件夹中,但无论如何它似乎永远不会加载它.
当我尝试Googling寻求帮助时,我得到的所有结果似乎要么通过将它放在服务器的UDF文件夹中来使它在FB服务器上工作(这不适用于我使用FB Embedded)或者通过编辑conf文件在FB服务器上修复权限问题(由于我使用的是FB Embedded,因此不适用).
那么,如果我使用FB Embedded,如何确定/配置放置UDF DLL的正确位置?
我正在开发一个使用JavaScript编写脚本的程序.像大多数脚本系统一样,脚本可以调用预定义的本机函数库,我只是添加了一个新的脚本系统.
新函数采用DateTime(它在Delphi中,其中DateTime由Double表示),字符串和布尔值.最后两个参数来得很好,但似乎在系统的某个地方,时间值正在变得严重.我得到了1362394800000,而不是可识别的DateTime,根据Delphi的时间戳方案,这没有任何意义.
我在哪里可以找到有关JavaScript如何表示DateTime值的信息,因此我可以弄清楚如何将其转换为我的Delphi代码可以使用的东西?(这是使用Windows 7标准的Microsoft JScript系统,以防实施情况发生变化.)
delphi ×7
delphi-2010 ×2
firebird ×2
bpl ×1
javascript ×1
metadata ×1
overhead ×1
packages ×1
pcre ×1
regex ×1
regexbuddy ×1
resources ×1
rtti ×1
sql ×1