我试图在不解码文件的情况下获得JPEG图像的分辨率.我从互联网上得到了几个样本但没有一个正常工作.这似乎是这种方式,因为许多 JPEG文件不是标准的,但任何图形应用程序(Irfan,PSP,Firefox等)都可以打开它们.
JPEG的标题应该是:
typedef struct _JFIFHeader
{
BYTE SOI[2]; /* 00h Start of Image Marker */
BYTE APP0[2]; /* 02h Application Use Marker */
BYTE Length[2]; /* 04h Length of APP0 Field */
BYTE Identifier[5]; /* 06h "JFIF" (zero terminated) Id String */
BYTE Version[2]; /* 07h JFIF Format Revision */
BYTE Units; /* 09h Units used for Resolution */
BYTE Xdensity[2]; /* 0Ah Horizontal Resolution */
BYTE Ydensity[2]; /* 0Ch Vertical Resolution */
BYTE XThumbnail; /* 0Eh Horizontal …Run Code Online (Sandbox Code Playgroud) 我有一个名为MyForm的表单存储在一个名为Unit UnitMyFrom的单元中.当然Delphi自动添加了这段代码:
TYPE
TMyForm = class(TForm)
private
public
end;
var MyForm: TMyForm;
Run Code Online (Sandbox Code Playgroud)
但我删除了该单位的var声明.有人说这可能会导致IDE出现问题.这是真的吗?IDE是否需要该变量?
编辑:
MyForm不会自动创建.用户在运行时创建该表单.
我需要存储未知数量的组.每个组都有未知数量的元素/项目.这是我的'小组':
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) 重新安装Delphi(并在其上安装Update 1)后,需要19-20秒才能启动.一开始它什么都没有显示(大约17秒).然后它最终显示启动画面和它加载的模块.我已经有了DelphiSpeedUp插件.
我怎样才能更快地开始?或者这是使用Update 1的Delphi XE的典型加载时间?
更新:
'进程监视器'显示Delphi访问HKLM\system\currentControlSet\Services\TcpIp\Parameters并保持大约10秒钟.此后不再访问其他注册表项或文件,持续10秒!!!!!!!
可能是Embarcadero的保护措施,试图"打电话回家".我想我必须在防火墙中解锁Delphi.也许如果它可以打电话回家它将加载更快.
还有,有人试图让Delphi XE .Net免费吗?
我有一个主窗体(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.
我正在使用提供给我的程序,它将运行一个进程,但我希望该进程在后台运行而不显示窗口.电话是
ExecProcess(ProgPath, '', False);
Run Code Online (Sandbox Code Playgroud)
而且功能是
function ExecProcess(ProgramName, WorkDir: string; Wait: boolean): integer;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
CreateOK: boolean;
ExitCode: integer;
dwExitCode: DWORD;
begin
ExitCode := -1;
FillChar(StartInfo, SizeOf(TStartupInfo), #0);
FillChar(ProcInfo, SizeOf(TProcessInformation), #0);
StartInfo.cb := SizeOf(TStartupInfo);
if WorkDir <> '' then
begin
CreateOK := CreateProcess(nil, Addr(ProgramName[1]), nil, Addr(WorkDir[1]),
false, CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS, nil, nil,
StartInfo, ProcInfo);
end
else
begin
CreateOK := CreateProcess(nil, Addr(ProgramName[1]), nil, nil, false,
CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS, nil, Addr(WorkDir[1]),
StartInfo, ProcInfo);
end;
{ check to see if successful …Run Code Online (Sandbox Code Playgroud) 我最近安装了Delphi XE7.当我第一次编译一个旧应用程序时,当我看到EXE的大小增加10MB时我的下巴掉了!
在'项目选项'中玩,我发现将'调试信息'设置为'有限调试信息'会将EXE大小减小到非常接近Delphi XE生成的EXE.也许在Delphi下,XE7'有限调试信息'相当于Delphi XE的'Debug Information',因为它产生相同的EXE大小?
那么,为什么完整的"调试信息"使得EXE如此之大(与XE相比)?我无法用有限的信息编译EXE(我猜)因为我想完全访问调试好东西(EurekaLog也需要它).
Embarcadero的文档没有说明"有限"和完整调试信息之间的区别.
EurekaLog文档适用于旧版本的Delphi,因此它没有明确说明我是否可以使用新选项(merciful)'有限调试信息'或完整的调试信息.我将不得不进行实验.
我有一个类,我们称之为TMyObject,它应该返回一个稍微修改过的自身副本.因此,它的一个函数应该返回一个与它自身相同类型的对象:
function TMyObject.TrimEnds: TMyObject;
begin
Result:= TMyObject.Create;
Result.DoStuff;
edn;
Run Code Online (Sandbox Code Playgroud)
我能这样做吗?这是合法的我在做什么?
我的意思是,我已经尝试过了,编译器允许我这样做,但我想知道是否会有很长时间/隐藏的负面影响.
任何想法将不胜感激.谢谢.
编辑:新略微修改的副本将保存到磁盘.这是某种"拯救......".工作原理:原始对象创建自身的副本,指示此副本进行一些更改并保存到磁盘.然后原来释放副本.这样我保持原始对象在内存中不变,但我有一个修改版本的磁盘.
您可能认为我的对象有图片.我需要的是一个函数,它返回一个稍微修改过的图片副本.
在安装Delphi XE后,我的旧版Delphi 7开始更频繁地崩溃.今天,我发现我的一个BPL仍然被D7加载,即使我从"c:\ Program Files\Borland\Delphi7\Projects\Bpl"中删除了它.在搜索完整个磁盘后,我在"c:\ Users\Public\Documents\RAD Studio\8.0\Bpl"中发现了该BPL的副本.
我的问题是:为什么Delphi 7会查看"c:\ Users\Public\Documents\RAD Studio\8.0\Bpl"?我怎么能说服它只查看"c:\ Program Files\Borland\Delphi7\Projects\Bpl"?