我在Delphi 7程序中有这个常量.他们没有在Delphi XE下编译.
TYPE
TSingleChar= AnsiChar;
CONST
noData: TSingleChar= '.';
Ambiguity= ['x'];
DNA_Ambig= ['x', noData]+ Ambiguity;
Run Code Online (Sandbox Code Playgroud)
[DCC错误] E2026预期的常量表达式.
我已将旧项目从Delphi 7升级到Delphi XE.该项目(以及其他)有一些THOTKey控件.在Delphi 7下,THOTKey控件正常工作.但在Delphi XE下他们就像残疾人一样.这意味着即使为它们分配了快捷方式(例如Alt + A),它们也没有显示任何内容,我无法编辑它们.
还有其他人有这个问题吗?
更新:
我删除了所有控件和该项目的所有代码.现在我只有主窗体和一个THOTKey控件.基本上,删除所有控件后,我的项目就像一个全新创建的项目,没有一行代码.但是THOTKey仍然不能在Delphi XE下工作,仍然可以在D7下运行.
Embarcadero的TTaskbar有内存泄漏.由于我在表单上删除了此控件,因此每次关闭应用程序时,FastMM都会报告泄漏.
我尝试使用以下代码将FastMM静音:
procedure TMainForm.FormCreate(Sender: TObject);
begin
fastmm4.RegisterExpectedMemoryLeak(Taskbar);
end;
Run Code Online (Sandbox Code Playgroud)
但它不会起作用.如何注册此泄漏?
内存块已泄露.大小是:100
该块由线程0xC64分配,当时的堆栈跟踪(返回地址)为:406A52 409A7B 409CAC 4283A0
[System.SysUtils] [System] [System.SysUtils.FmtStr] 409CC6 40D775 7628A65F
[StretchDIBits的未知功能] 7731594E
[RtlpNtMakeTemporaryKey上的
未知函数] 7731594E
[ RtlpNtMakeTemporaryKey上的未知函数] 773168F8
[ RtlpNtMakeTemporaryKey上的未知函数] 773168DC [ RtlpNtMakeTemporaryKey上的未知函数]该块当前用于类的对象:UnicodeString
分配编号为:2209内存块已泄露.大小是:36
该块由线程0xC64分配,当时的堆栈跟踪(返回地址)为:406A52 407D43 40846A 42CD40
[System.SysUtils] [System] [System.SysUtils.Exception.CreateFmt] 5DEDD7
[System.Win.TaskbarCore] [System.Win] [System.Win.TaskbarCore.TTaskbarBase.UpdateTab] 610F00
[Vcl.Taskbar] [Vcl] [Vcl.Taskbar.CheckMDI] 5DF39F
[System.Win.TaskbarCore] [System.Win] [System.Win. TaskbarCore.TTaskbarBase.ApplyTabsChanges] 610DB8
[Vcl.Taskbar] [Vcl] [Vcl.Taskbar.TCustomTaskbar.Initialize] 5EB044
[Vcl.Forms] [Vcl] [Vcl.Forms.TApplication.Run] 62573A
[MinimalTemplate.dpr] [MinimalTemplate ] [MinimalTemplate.MinimalTemplate] [26]该块当前用于类的对象:ETaskbarException
分配编号为:2207此应用程序已泄露内存.小块泄漏(不包括指针注册的预期泄漏):
21 - 36字节:ETaskbarException x 1
85 - …
如果我使用 OV 证书签署我的应用程序,在声誉建立并且智能屏幕消失之前我需要下载多少次?
当然,这里可能会产生一些影响:
有人说下载10次就够了,也有人说需要上万次下载。有些人说向微软提交申请会有帮助,另一些人则说没有帮助。
有没有人真正经历过这个过程并可以分享一些真实的数据/统计数据?
我想分发一些图像,除非他们使用我的程序,否则不允许其他人看到它们.我的目的是使用JPG文件,我将在其中更改标题,以便其他图像查看器无法再读取它们.例如,我可以删除作为JPG魔术签名的字节7-10.稍后,我的程序将重建标题并显示JPG文件.
问题:我如何动态执行此操作,而不读取"损坏的"JPG文件,恢复标头,将好文件保存到磁盘,然后将其重新加载为"好"的JPG文件?
我想从互联网上下载一个文件,我想这应该是一个简单的任务.尝试了几种不同的方法,我发现每种方法都有自己的缺点.主要问题是:
(细节:
如何通过HTTP从Internet检索文件?
从Internet下载文件时连接不会超时)
所以,最后我使用了我从几个人那里得到的建议来使用像Indy这样的"专业"库.但是,Indy并没有比我尝试过的代码要好得多(但它更大,更难维护).使用Indy时,应用程序不会仅在短时间内冻结,因此它仍然(某种程度上)可用.但是,在下载完成之前无法关闭应用程序(从不会因为Internet连接中断而关闭).
其他人报告了同样的问题:http://borland.newsgroups.archived.at/public.delphi.internet.winsock/200609/0609079112.html
https://forums.embarcadero.com/thread.jspa?threadID=25199&tstart= 90
那么,为了让它发挥作用,我必须对TIDAntiFreeze进行一些黑客攻击?
此外,无法识别ConnectTimeout属性.
fIDHTTP := TIDHTTP.Create(NIL);
fIDHTTP.ConnectTimeout:=5000;
Run Code Online (Sandbox Code Playgroud)
我应该放弃Indy并回到最初在单独的线程中下载文件的想法,并在它没有响应时结束线程(至少这样我摆脱了第三方库)?如果我这样做会有不可预见的副作用吗?
使用:Delphi 7,Indy 10.1.5 10.5(可能).
谢谢
我需要存储未知数量的组.每个组都有未知数量的元素/项目.这是我的'小组':
TGroup= array of Integer; <------ dynamic array (as you can see) :)
Run Code Online (Sandbox Code Playgroud)
我想用TList来保持我的团队.我的想法是,我可能希望稍后访问这些组并向其添加更多项目.
我有这个代码,但我不能让它工作:
TYPE
TGroup= array of Integer; // Each group has x items (x can be from 1 to 10000)
procedure TForm1.FormCreate(Sender: TObject);
VAR CurGroup: TGroup;
grp, item: Integer;
Groups: TList; // can contain up to 1 million groups
begin
Groups:= TList.Create;
{ Init }
for grp:= 1 to 4 DO // Put a dummy item in TList
begin
SetLength(CurGroup, 1); // Create new group
Groups.Add(@CurGroup); // …Run Code Online (Sandbox Code Playgroud) 我有一个主窗体(MainForm)和一个MDI子窗口(TFormChild).我想创建多个TFormChild表单,但第一个必须以某种方式运行,所以我需要检测TFormChild窗口是否已经存在.
我使用此代码,但它无法正常工作:
function FindChildWindowByClass(CONST aParent: HWnd; CONST aClass: string): THandle;
begin
Result:= FindWindowEx(aParent, 0, PChar(aClass), NIL);
end;
Run Code Online (Sandbox Code Playgroud)
我称之为:
Found:= FindChildWindowByClass(MainForm.Handle, 'TFormChild')> 0;
Run Code Online (Sandbox Code Playgroud) 如何清除TJPEGImage图像?
该JPG.Width := 0招是行不通的.另外,我不想创建一个空位图(0x0像素)并将其分配给jpeg.
我想将一些数据记录存储到磁盘.我希望每个数据记录具有相同的大小,以便我可以快速计算并跳转到某个记录.所以,我将记录中唯一的字符串存储为chars数组:
type TFileNameIO = array[1..512] of Char;
Run Code Online (Sandbox Code Playgroud)
从磁盘读取字符串后,我的字符串内容如下:
c:\ windows#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0等
我想截断#0字符,我做这样的事情:
function GetFileName(DiskName: TFileNameIO): string;
VAR PC: PChar;
begin
SetString(Result, PChar(@DiskName), Length(DiskName)); <----- here Result is: c:\windows#0#0#0 etc
PC:= PChar(Result);
Result:= WideCharToString(PC);
end;
Run Code Online (Sandbox Code Playgroud)
还有更好的方法吗?
delphi ×9
delphi-7 ×3
delphi-xe ×2
certificate ×1
code-signing ×1
delphi-xe7 ×1
fastmm ×1
image ×1
indy10 ×1
jpeg ×1
leakcheck ×1