小编jpf*_*ius的帖子

如何有效地检索目录中的文件数?

有没有办法(在使用Delphi 2010的Windows上)获取文件中的文件数而不实际遍历所有文件?

我想在一些文件系统索引操作期间实现进度条.出于这个原因,我需要知道目录中有多少文件.

获取目录中文件数的最快方法是什么?

windows filesystems delphi delphi-2010

7
推荐指数
2
解决办法
3129
查看次数

应用程序最小化时隐藏表单

我有一个主表单和状态表单,我在我的应用程序中进行工作时显示.如果工作完成,我只需调用Hide状态表单,状态表单就会消失.

当我在等待表单可见时最小化主表单时,我的问题就出现了.然后隐藏这两种形式,这就是我想要的.但是,如果工作在主窗体最小化时完成,那么当我恢复它时,状态窗体也会恢复,即使Hide已在最小化时调用它.

Visible似乎是False对状态表单应用程序最小化时,因此呼吁Hide似乎没有任何效果(帮助说,它只是设置VisibleFalse).

这些观察是否正确?当应用程序再次获得焦点时,表单可见性如何恢复?在应用程序最小化时如何隐藏表单?

windows delphi delphi-xe

7
推荐指数
1
解决办法
2781
查看次数

与Hudson一起构建时,"找不到必需的包rtl"

我想让Hudson使用我的Delphi项目.我使用以下批处理文件来构建我的项目(如本博文中所示):

call "C:\Program Files\Embarcadero\RAD Studio\8.0\bin\rsvars.bat"
msbuild /p:Win32LibraryPath="$(BDS)\lib;$(BDS)\lib\win32\release;$(BDS)\lib\win32\debug;$(BDSUSERDIR)\Imports;$(BDS)\Imports;$(BDSCOMMONDIR)\Dcp;$(BDS)\include;" /t:build /p:config=Debug /verbosity:detailed "MyProject\src\MyProject.dproj"
if errorlevel 1 exit 1
Run Code Online (Sandbox Code Playgroud)

我总是最终得到错误

Embarcadero Delphi for Win32 compiler version 22.0
Copyright (c) 1983,2010 Embarcadero Technologies, Inc.
Fatal: E2202 Required package 'rtl' not found
Run Code Online (Sandbox Code Playgroud)

我不明白这个rtl.dcp在库路径上的"$(BDS)\ lib\win32\release"中.我顺便使用运行时包.

有什么提示我可以做些什么来解决这个问题?

编辑似乎路径不会在命令行中结束,这看起来像(删除项目特定的路径后):

C:\Program Files\Embarcadero\RAD Studio\8.0\bin\dcc32.exe -$O- -$W+ --inline:off -$A4 -$R+ -$Q+ --doc --no-config -B -LUrtl;vcl;ReportingR;ComponentsR -Q -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG;CONSTRAINT_CHECKING;_VER6;EUREKALOG_VER6;EurekaLog -V -VN -GD --drc -W-SYMBOL_DEPRECATED -W-SYMBOL_PLATFORM -W-UNIT_PLATFORM -W-UNIT_DEPRECATED   Myproject.dpr   
Run Code Online (Sandbox Code Playgroud)

delphi continuous-integration hudson delphi-xe

7
推荐指数
1
解决办法
1万
查看次数

Delphi上的大位图

我想用代码创建大型Bitmap

  LargeBmp := TBitmap.Create;
  try
    LargeBmp.Width := 1000; // fine 
    LargeBmp.Height := 15000; // XP - EOutOfResources, Not enough memory, Win 7 - works fine
    ...
  finally
    FreeAndNil(LargeBmp);
  end;
Run Code Online (Sandbox Code Playgroud)

此代码EOutOfResources在Windows XP上引发了"内存不足" 的异常,但在Windows 7中运行正常.

怎么了?为什么内存不足?它只有60 MB.

delphi graphics bitmap

7
推荐指数
3
解决办法
2086
查看次数

以编程方式重启Delphi应用程序

不应该运行我的应用程序的多个实例.因此项目源包含:

CreateMutex (nil, False, PChar (ID));
if (GetLastError = ERROR_ALREADY_EXISTS) then
  Halt;
Run Code Online (Sandbox Code Playgroud)

现在我想以编程方式重新启动我的应用程序.通常的方式是:

AppName := PChar(Application.ExeName) ;
ShellExecute(Handle,'open', AppName, nil, nil, SW_SHOWNORMAL) ;
Application.Terminate;
Run Code Online (Sandbox Code Playgroud)

但是由于互斥锁,这在我的情况下不起作用.即使我在启动第二个instace之前释放互斥锁也无法工作,因为shutdown需要一些时间并且两个实例不能并行运行(因为常见的资源和其他影响).

有没有办法重新启动具有这些特征的应用程序?(如果没有额外的可执行文件可能)

提前致谢.

delphi delphi-2010 application-restart

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

为什么TObjectList <T>.清除不是自由对象?

我刚才注意到了

var
  ObjList : TObjectList <TMyObject>;
...
ObjList := TObjectList <TMyObject>.Create (True);
ObjList.Add (TMyObject.Create);
ObjList.Clear;
Run Code Online (Sandbox Code Playgroud)

不释放对象.查看源代码,似乎没有cnRemoved触发通知Clear(继承自TList <T>).

我的问题:这是故意的吗?有没有理由为什么人们不想在这种情况下收到这些通知Clear?或者这可以被视为集合类中的错误?

编辑

事实证明,我把线放了

inherited Create;
Run Code Online (Sandbox Code Playgroud)

TMyObject析构函数的顶部,它应该进入构造函数.这就是为什么我报告的内存泄漏看起来像是TObjectList没有释放物品.看看来源说服了我(我被Count财产困住了).还是要谢谢你的帮助!

delphi generics collections delphi-xe

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

用于编辑键/值对的Delphi控件?

您建议使用哪些Delphi可视控件或控件组合来编辑,添加和删除键/值对(字符串)?

delphi user-interface vcl delphi-xe

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

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

Delphi:为什么FreeAndNil*真的没有我的对象?

我想将对象A传递给第二个对象B,让B做一些处理,最后释放A以防不再需要它.下面给出了一个淡化版本.

program Project6;
{$APPTYPE CONSOLE}
uses
  SysUtils;
type
  TMyObject = class(TObject)
  public
    FField1:  string;
    FField2:  string;
  end;
  TBigObject = class(TObject)
  public
    FMyObject:  TMyObject;
    procedure Bind(var MyObject:  TMyObject);
    procedure Free();
  end;
procedure TBigObject.Bind(var MyObject: TMyObject);
begin
  FMyObject := MyObject;
end;
procedure TBigObject.Free;
begin
  FreeAndNil(FMyObject);
  Destroy();
end;
var
  MyObject:   TMyObject;
  BigObject:  TBigObject;
begin
  try
    MyObject := TMyObject.Create();
    BigObject := TBigObject.Create();
    BigObject.Bind(MyObject);
    BigObject.Free();
    if (Assigned(MyObject)) then begin
      WriteLn('Set MyObject free!');
      MyObject.Free();
    end;
    ReadLn;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end; …
Run Code Online (Sandbox Code Playgroud)

delphi memory-management

5
推荐指数
3
解决办法
1277
查看次数

禁用某些密码输入字段的Firefox密码管理器

我有一份注册表和一份登录表.登录表单(我的)Firefox默认提供用户名和密码,这没关系.但是在注册表上它也是一样的 - 这没有任何意义,它会产生问题,因为输入密码字段而"重复密码"字段不是.

有没有办法可以更改注册表单的HTML,以便Firefox和其他浏览器不会自动填写特定的密码字段

编辑:我在这个主题上发现了很多问题(和答案),但是建议的解决方案(autocomplete=off在密码输入字段上设置)对我来说在Firefox上不起作用(它仍然自动填充字段).我找到了这个解决方案,但它看起来有点难看(如果用户输入用户名并点击Tab,则不起作用).有谁知道更好的方法?

html passwords firefox

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