我目前正在使用:
if ParamStr(1)<>'%1' then
begin
address.Text:=ParamStr(1);
autoconfigfile;
end;
Run Code Online (Sandbox Code Playgroud)
获取用于通过文件关联打开文件的文件的名称.
我现在想要开发对多个文件进行操作的能力.即如果我选择5个文件并右键单击并选择打开"EncryptionSystem".我有注册表项:
reg.OpenKey('*\shell\Encrypt\command', true);
reg.WriteString('','C:\Program Files\EncryptionSystem\EncryptionSystem.exe "%1"');
reg.CloseKey;
Run Code Online (Sandbox Code Playgroud)
为所有文件添加右键单击打开功能.然后我想要检测的能力
我正在处理一个应用程序,我需要存储用户密码,所以我想我会将它存储在注册表的当前用户类中,但我也想把它哈希,原因很明显,我已经看到新闻项目表明SHA1已被破解,"标准"系统或.net中是否有更好的(未破解的)散列算法?
我想使用Delphi 2009的FFTW C库并根据本文档;
http://www.fftw.org/install/fftw_usage_from_delphi.txt
为了提高FFTW库内的性能(使其可以使用SIMD扩展),传入Single(float)或Double(double)的数组需要在4或8字节边界对齐.我找到了关于记录结构对齐的文档,但没有关于数组的具体内容.在Delphi 2009中有没有办法做到这一点.
所以代码(从上面的文档中复制)看起来像这样;
var
in, out : Array of Single; // Array aligned at 4 byte boundary
plan : Pointer;
{$APPTYPE CONSOLE}
begin
...
SetLength(in, N);
SetLength(out, N);
plan := _fftwf_plan_dft_1d(dataLength, @in[0], @out[0],
FFTW_FORWARD, FFTW_ESTIMATE);
Run Code Online (Sandbox Code Playgroud)
同样在上面的文档中,他们讨论了8和16字节的边界,但它看起来它应该是4和8字节边界,如果有任何可以清除,那将是伟大的.
谢谢,布鲁斯
我有一个表已经包含一些行,并没有主键.
我想现在添加一个主键,但为此我需要为现有行的主键字段设置唯一值.如何使用新添加的发电机完成?
在Inno Setup中,我创建了一个自定义页面,其中包含以下代码,其中包含3个文本框.
现在我想验证自定义窗体下一个按钮单击的文本框.如果在text.text ='2121212'中,用户输入了一些文本,则只启用下一个按钮.
[CustomMessages]
CustomForm_Caption=CustomForm Caption
CustomForm_Description=CustomForm Description
CustomForm_Label1_Caption0=College Name:
CustomForm_Label2_Caption0=Product Type:
CustomForm_Label3_Caption0=Product ID:
[Code]
var
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
{ CustomForm_Activate }
procedure CustomForm_Activate(Page: TWizardPage);
begin
// enter code here...
end;
{ CustomForm_ShouldSkipPage }
function CustomForm_ShouldSkipPage(Page: TWizardPage): Boolean;
begin
Result := False;
end;
{ CustomForm_BackButtonClick }
function CustomForm_BackButtonClick(Page: TWizardPage): Boolean;
begin
Result := True;
end;
{ CustomForm_NextkButtonClick }
function CustomForm_NextButtonClick(Page: TWizardPage): Boolean;
begin
RegWriteStringValue(HKEY_LOCAL_MACHINE, …Run Code Online (Sandbox Code Playgroud) 我正在使用Inno Setup创建一个安装程序.我必须从用户那里采取两条路径.一个用于程序可执行文件,另一个用于库.默认的app文件夹是{pf}/companyname/applicationname
在InitializeWizard我创建了第二页,它从用户获取lib文件夹.
有没有办法将默认的lib文件夹更改为用户选择的文件夹{app}?
我试过了WizardDirValue.它只提供默认{app}值,而不是用户在第一页中选择的路径.
[code]
procedure InitializeWizard();
begin
page2:= CreateInputDirPage(wpProgress,
'Select Library Location', 'Where Library files should be stored?',
'To continue, click Next. If you would like to select a different folder, click Browse.',
False, 'Libs');
page2.Add('');
page2.Values[0] := WizardDirValue+'\libs';
LibDir := page2.Values[0];
end
Run Code Online (Sandbox Code Playgroud) 在创建线程对象时,我想从需要同步的应用程序中调用代码.问题是我不知道如何调用Synchronize带参数的应用程序函数.
说我们有
procedure ThreadObject.Execute;
var
val1,val2:integer;
Star:string;
begin
Synchronize(funcyfunc); //how to pass val1,val2,star here?
end;
Run Code Online (Sandbox Code Playgroud)
其中funcyfunc定义如下
procedure OtherClass.funcyfunc(param1,param2:integer;spok:string);
begin
letsCallFriends(spok,param1);
letsCallFriends(spok,param2);
end;
Run Code Online (Sandbox Code Playgroud)
现在奇怪的解决方案是在ThreadObject私有中说
private
star:string;
val1,val2:integer;
procedure starVal;
Run Code Online (Sandbox Code Playgroud)
在我们的实施中
procedure ThreadObject.starVal;
begin
funcyfunc(Star,val1,val2);
end;
Run Code Online (Sandbox Code Playgroud)
并在线程执行中我们改为
procedure ThreadObject.Execute;
var
val1,val2:integer;
Star:string;
begin
Synchronize(starVal); //how to pass val1,val2,star here?
end;
Run Code Online (Sandbox Code Playgroud)
但这是一个麻烦,因为每个过程调用必须有一个全局变量.有没有更好的办法?
码:
unit ThreadObject;
interface
uses
Classes;
type
TThreadObject= class(TThread)
private
star:string;
val1,val2:integer;
procedure starVal;
protected
procedure Execute; override;
//assume we have a constructor that ini the star …Run Code Online (Sandbox Code Playgroud) 我正在Delphi 5程序中寻找一个难以捉摸的内存问题,该内存在客户站点被随机覆盖。在尝试了许多没有结果的事情之后,我现在想使用来自的FastMM4输出LogAllocatedBlocksToFile()来找出在覆盖区域之前立即分配了哪些对象。该程序使用计时器每30分钟将分配的块信息写入一个新文件。不幸的是EOutOfMemory,根据MadExcept的说法,使用分配的1.83 GB内存后,我的程序(DEBUG版本)的测试运行在大约23小时后崩溃,但异常。
在SysInternals Process Explorer中,它看起来像每次LogAllocatedBlocksToFile()分配调用,但不会释放内存:

“ CPU使用率”图中的红色峰值是LogAllocatedBlocksToFile()调用。我已经LogMemoryManagerStateToFile()在之前和之后添加了调用,最后一个峰值的数据(私有字节从大约183 MB增加到大约218 MB)看起来像这样:
55054K分配的
47911K开销
53%的效率
和这个:
55055K分配的
47910K开销
53%的效率
因此,根据Process Explorer,FastMM4似乎不知道程序占用的额外内存。
我使用的是FastMM4的4.991版本,今天已从SourceForge下载。测试程序以DEBUG模式运行,并设置了以下定义:
FullDebugMode
UseCustomFixedSizeMoveRoutines
UseCustomVariableSizeMoveRoutines
NoDebugInfo
ASMVersion
DetectMMOperationsAfterUninstall
RawStackTraces
LogErrorsToFile
LogMemoryLeakDetailToFile
AlwaysAllocateTopDown
SuppressFreeMemErrorsInsideException
EnableMemoryLeakReporting
HideExpectedLeaksRegisteredByPointer
RequireDebuggerPresenceForLeakReporting
EnableMMX
ForceMMX EnableBackwardCompatibleMMSharing
UseOutputDebugString
问题:
这些功能是否存在任何已知问题?我是否没有正确使用它们,难道它们不打算在一个调试会话中多次调用吗?有没有办法再次释放该内存?
我们有一个在 Delphi 2006 中运行良好的大型应用程序。我们已将其移至 XE5,并且经常遇到零星的访问冲突。我们正在使用 VCL 表单和许多 DevExpress 和其他第三方组件。我们正在使用带有 Delphi XE Enterprise 版本 19.0.14356.6604 的 Windows 7 Professional。
在移植到 XE5 之后,我们在网上、这里和其他地方查看了有关 A/V 的帖子,但没有发现任何似乎与我们的问题相关的内容。
以下是我们对 A/V 的了解:
{$IFDEF CPUX86}asm 部分procedure Move(const Source; var Dest; Count: NativeInt);中。线路是FILD QWORD PTR [EAX] {Last 8}。我们猜测这个问题与我们的应用程序如何处理 Windows 7 内存管理有关,但我们不知道如何找出哪里出错了。附加了一个示例调用堆栈。
任何人都可以建议我们如何继续解决此问题?是否有第三方调试工具可以提供帮助?我们是否可以使用 Delphi IDE …
我想在listview中获取所有项目和子项目,但我得到的只是"TlistItem"
这是我的代码:
procedure TFrameAnalyzer.AddEntry(opcode:word;data:Array of byte;direction:byte);
begin
MessageBox(0,PChar(sListView1.Items.Item[4].ToString),'',0);
end;
Run Code Online (Sandbox Code Playgroud)
如何将项目的名称作为字符串以及它的2个子项目的名称?
delphi ×6
inno-setup ×2
alignment ×1
arrays ×1
c# ×1
command-line ×1
delphi-2009 ×1
delphi-5 ×1
delphi-xe5 ×1
fastmm ×1
filenames ×1
firebird ×1
hash ×1
installer ×1
listviewitem ×1
parameters ×1
pascal ×1
sql ×1
synchronize ×1
vcl ×1
windows-7 ×1