我需要Delphi中的算法来为指定的整数值生成分区.
示例:对于13,如果将5指定为分区的最大值,则它将给出5,5,3; 如果将4指定为最大分区值,则结果应为4,4,4,1,依此类推.
如何定义泛型TList类型,以便我可以声明该类型的变量,然后为其分配任何特化TList<>?
我想声明这个变量:
var
MyList:THowToDeclareThisListType<T>;
Run Code Online (Sandbox Code Playgroud)
然后像这样实例化它:
MyList:=THowToDeclareThisListType<integer>.Create;
Run Code Online (Sandbox Code Playgroud)
要么
MyList:=THowToDeclareThisListType<double>.Create;
Run Code Online (Sandbox Code Playgroud)
我必须在这里遗漏一些非常明显的东西.我不想要类,只是一个简单的类型定义.
我们有一个Delphi XE2应用程序.Form1有热键Ctrl+ F,并且Form2,它是活动的,没有热键.用户按下Ctrl+ F上Form2并且Form1处理该热键.这完全不正确,因为我们看到了非活动表单的活动.我如何解决它?
我试图获取线程ID的文件路径.我希望这会有用......但事实并非如此
NtOpenThread(@hProc, THREAD_ALL_ACCESS, @ObjAttr, @ClientID) ;
pBuf := AllocMem(MAX_PATH);
GetModuleFileNameEx(hProc, 0, pBuf, MAX_PATH);
Run Code Online (Sandbox Code Playgroud)
知道怎么做吗?
我认为答案应该是否定的,但我今天编写了一些代码,完美编译并使用pow和sqrt显示正确的答案,即使一开始我忘了添加
#include<cmath>
我在这里缺少什么?
我想在Delphi XE5中创建一个Android程序来处理XML文件.我用TXMLDocument.
但是,我无法编译和运行它,因为Delphi Xml.Win.msxmldom在该uses部分中反复添加.发生以下错误:
[DCC致命错误] Unit1.pas(11):F1026找不到文件:'C:\ Users\HamiD\Documents\RAD Studio\Projects\Xml.Win.msxmldom.dcu'(单位范围"Xml.Win"表示Win32 ,仅限Win64)
如何避免在我的项目中使用该单元?
我有一个TStringList有很多字符串的字符串.
我现在要做的是TStringList根据它们所在的列来对某些值进行排序TStringList.
例如.
adsfoiadjfoaidjfoaidfjo BABABA asdfsd 0101010 skfjlgjljkglsdkgjasaasd BABABA dafdff 0419299 asdaksdjakbkj3409560295 BABABA kjfhan 0923858 dsdddsdasdadasdasdasdgg BABABA dafdff 0419299 45645654654654654654666 BABABA dafdff 0489421 dsdddsdasdadasdasdasdgg CACACA dafdff 0419299
正如您所看到的那样,第二行和第四行具有相同的值BABABA以及行尾的相同数字,第五行具有相同的BABABA但不是相同的数字.第六行具有相同的数字但不是相同的BABABA.
我想要对它们进行排序的正确方法是
adsfoiadjfoaidjfoaidfjo BABABA asdfsd 0101010 skfjlgjljkglsdkgjasaasd BABABA dafdff 0419299 dsdddsdasdadasdasdasdgg BABABA dafdff 0419299 45645654654654654654666 BABABA dafdff 0489421 asdaksdjakbkj3409560295 BABABA kjfhan 0923858 dsdddsdasdadasdasdasdgg CACACA dafdff 0419299
我想要的是最重要的是在BABABA(第25-30栏)之后排序,如果数字,数字也匹配.如果数字不匹配,它应该在BABABA之后排序,如果没有排序,它可以以任何方式排序.
更新:尽管上面提到:问题已经有了答案,链接问题中的解决方案在Delphi XE6中不起作用
只是注意到使用Delphi生成的所有可执行文件(包括发行版)都包含该可执行文件使用的所有类型的名称以及它们所属的单元的名称.如果您不小心删除RTTI信息,那么它还包含类方法,字段和属性名称.
这些字符串用于什么(特别是在发布版本中)?
有没有办法防止类型和单位名称被写入可执行文件?
重现这一步的步骤:
定义一个类
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
type TPerson = class
private
FName: string;
public
constructor Create(Name: string);
destructor Destroy; override;
end;
constructor TPerson.Create(Name: string);
begin
inherited Create;
FName := Name;
end;
destructor TPerson.Destroy;
begin
inherited Destroy;
end;
Run Code Online (Sandbox Code Playgroud)创建该类的对象,以便引用/使用该类.
var person: TPerson;
begin
person := TPerson.Create('John Doe');
person.Free;
end;
Run Code Online (Sandbox Code Playgroud)在发布模式下编译项目.
如何防止类名写入可执行文件?
也:
如何在项目级别删除RTTI,这样就不需要手动遍历每个包含的单元并添加{$ RTTI EXPLICIT METHODS([])PROPERTIES([])FIELDS([])}子句?
我尝试在.dpr文件的顶部添加$ RTTI EXPLICIT METHODS([])PROPERTIES([])FIELDS([])}但这在Delphi XE6中不起作用.
我有一个在Delphi 5中创建的程序,该程序在Win7和Win8上仍然运行得非常完美.
但是,当试图在XE6(试用版)中运行此代码时,我遇到两个错误,我无法修复.错误是'DateSeparator'和'LongTimeFormat',每个都有错误"未声明的标识符"
代码段如下:
function AccurateTimeStamp:String;
begin
DateSeparator:='.';
LongTimeFormat:='hhmmsszzz';
result:=TimeToStr(Now);
end;
Run Code Online (Sandbox Code Playgroud)
我对Delphi很新,但我很确定"未声明的标识符"意味着该项目在代码之前未被识别.如果是这种情况,我不知道如何做到这一点.也许,自Delphi 5以来,错误与代码格式的变化有关.
我遇到了LoadLibrary的问题,这在我之前从未发生过,这是我第一次看到这个,我正在尝试在"C:\ Program Files(x86)\ Mozilla中加载模块"nss3.dll" Firefox \"与LoadLibrary,为了从它导入一些功能,但它失败了0返回值,我试图从system32文件夹硬编码.dll它工作正常,任何想法发生了什么?
编辑:我忘了提及,克服这个问题的一种方法是调用SetCurrentDirectory然后导入模块而不指定.dll的路径,但事实并非如此,我想找出它为什么会发生在我身上.
编辑:这是一些片段(这是有效的):
var
NSSModule: HModule;
begin
SetCurrentDir('C:\Program Files (x86)\Mozilla Firefox');
NSSModule := LoadLibrary('nss3.dll');
Run Code Online (Sandbox Code Playgroud)
这个,不起作用,不知道为什么......:
var
NSSModule: HModule;
begin
NSSModule := LoadLibrary('C:\Program Files (x86)\Mozilla Firefox\nss3.dll');
Run Code Online (Sandbox Code Playgroud) delphi ×9
algorithm ×1
android ×1
c++ ×1
cmath ×1
delphi-5 ×1
delphi-7 ×1
delphi-xe2 ×1
delphi-xe6 ×1
firefox ×1
forms ×1
generics ×1
hotkeys ×1
integer ×1
loadlibrary ×1
sorting ×1
tstringlist ×1
type-erasure ×1
winapi ×1
xml ×1