小编WeG*_*ars的帖子

获得JPEG分辨率而不解码图像

我试图在不解码文件的情况下获得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)

delphi jpeg

6
推荐指数
2
解决办法
7219
查看次数

删除IDE创建的表单变量是否安全?

我有一个名为MyForm的表单存储在一个名为Unit UnitMyFrom的单元中.当然Delphi自动添加了这段代码:

TYPE
  TMyForm = class(TForm)
  private
  public
 end;

var MyForm: TMyForm;
Run Code Online (Sandbox Code Playgroud)

但我删除了该单位的var声明.有人说这可能会导致IDE出现问题.这是真的吗?IDE是否需要该变量?


编辑:

MyForm不会自动创建.用户在运行时创建该表单.

forms delphi

6
推荐指数
2
解决办法
405
查看次数

如何在TList中存储动态数组?

我需要存储未知数量的组.每个组都有未知数量的元素/项目.这是我的'小组':

 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 delphi-7

6
推荐指数
2
解决办法
7499
查看次数

Delphi XE需要20秒才能启动

重新安装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免费吗?

delphi delphi-xe

6
推荐指数
2
解决办法
1671
查看次数

如何检查子窗口是否存在?

我有一个主窗体(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)

delphi

6
推荐指数
2
解决办法
3299
查看次数

如何清除jpeg图像?

如何清除TJPEGImage图像?

JPG.Width := 0招是行不通的.另外,我不想创建一个空位图(0x0像素)并将其分配给jpeg.

delphi

6
推荐指数
1
解决办法
2918
查看次数

使用'CreateProcess'隐藏流程窗口

我正在使用提供给我的程序,它将运行一个进程,但我希望该进程在后台运行而不显示窗口.电话是

 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 delphi-xe5

6
推荐指数
1
解决办法
2931
查看次数

什么是'有限的调试信息'?(完整的"调试信息"生成巨大的EXE文件)

我最近安装了Delphi XE7.当我第一次编译一个旧应用程序时,当我看到EXE的大小增加10MB时我的下巴掉了!

在'项目选项'中玩,我发现将'调试信息'设置为'有限调试信息'会将EXE大小减小到非常接近Delphi XE生成的EXE.也许在Delphi下,XE7'有限调试信息'相当于Delphi XE的'Debug Information',因为它产生相同的EXE大小?

那么,为什么完整的"调试信息"使得EXE如此之大(与XE相比)?我无法用有限的信息编译EXE(我猜)因为我想完全访问调试好东西(EurekaLog也需要它).
Embarcadero的文档没有说明"有限"和完整调试信息之间的区别.

EurekaLog文档适用于旧版本的Delphi,因此它没有明确说明我是否可以使用新选项(merciful)'有限调试信息'或完整的调试信息.我将不得不进行实验.

delphi delphi-xe eurekalog delphi-xe7

6
推荐指数
1
解决办法
859
查看次数

我可以创建与自身类型相同的对象吗?

我有一个类,我们称之为TMyObject,它应该返回一个稍微修改过的自身副本.因此,它的一个函数应该返回一个与它自身相同类型的对象:

function TMyObject.TrimEnds: TMyObject;
begin
  Result:= TMyObject.Create;
  Result.DoStuff;
edn;
Run Code Online (Sandbox Code Playgroud)

我能这样做吗?这是合法的我在做什么?

我的意思是,我已经尝试过了,编译器允许我这样做,但我想知道是否会有很长时间/隐藏的负面影响.

任何想法将不胜感激.谢谢.


编辑:新略微修改的副本将保存到磁盘.这是某种"拯救......".工作原理:原始对象创建自身的副本,指示此副本进行一些更改并保存到磁盘.然后原来释放副本.这样我保持原始对象在内存中不变,但我有一个修改版本的磁盘.

您可能认为我的对象有图片.我需要的是一个函数,它返回一个稍微修改过的图片副本.

delphi

5
推荐指数
1
解决办法
544
查看次数

安装Delphi XE(BPL混合路径)后Delphi 7崩溃

在安装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"?

delphi

5
推荐指数
1
解决办法
918
查看次数

标签 统计

delphi ×10

delphi-xe ×2

delphi-7 ×1

delphi-xe5 ×1

delphi-xe7 ×1

eurekalog ×1

forms ×1

jpeg ×1