小编lke*_*ler的帖子

我在哪里报告Windows核心库问题?

我如何让微软了解我在其核心库例程中发现的问题?他们是否有一个中央存储库来报告这些事情?

我不是Microsoft Development Network(MSDN)的成员.

或者我应该打扰?

windows msdn bug-reporting core-api

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

如何在Delphi中获取编译日期和时间

我希望能够在Delphi 2009程序中显示程序编译的日期和时间.

有一个简单的方法吗?

delphi compilation

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

如何防止快捷方式在 Delphi 中发生冲突/交互?

我在主菜单上使用标准的剪切、复制、粘贴操作。他们有捷径Ctrl-XCtrl-CCtrl-V

当我打开一个模态表单时,例如 FindFilesForm.ShowModal,然后所有的快捷方式都在表单中工作。

但是当我打开一个非模态表单时,例如 FindFilesForm.Show,那么快捷方式就不起作用了。

如果 FindFilesForm 是活动表单,我认为这些操作应该有效。它的模态应该与它无关,还是我的想法错了?

尽管如此,我怎样才能获得在非模态表单上工作的快捷方式?


在 Cary 的回应之后,我进一步研究了它。对于某些控件,例如 TMemo 或 TEdit,这不是问题。

但它适用于其他一些人。具体来说,它发生的地方包括:

  1. TComboBox 中的文本
  2. TFindDialog 中的文本
  3. TElTreeInplaceEdit 控件,LMD 的 ElPack 的一部分

我会看看是否还有其他人并将他们添加到列表中。

这些都是我程序中重要的非模态形式。

所以我仍然需要一个解决方案。


好的。我真的需要这方面的帮助。所以这成为我悬赏的第一个问题。

我与 Cary 的讨论是通过他的回答以及那里的评论更详细地描述了我的问题。

正如我在其中一条评论中提到的,这里似乎讨论了一个相关的问题

我需要的是一个解决方案或变通方法,这将允许Ctrl-X,Ctrl-CCtrl-V始终在非模态窗口中的 TComboBox 和 TFindDialog 中工作。如果这两个问题得到解决,我相信我的 TElTreeInplaceEdit 也能正常工作。

正如 Cary 所描述的,设置一个简单的测试程序只需要几分钟。希望有人能够解决这个问题。

只是要小心,似乎有些东西可以让它有时工作,但有时却不起作用。如果我可以更详细地隔离它,我会在这里报告。

感谢您为我提供的任何帮助。


Mghie 非常努力地寻找解决方案,他的 OnExecute 处理程序与他的 ActionListUpdate 处理程序相结合,可以解决问题。所以为了他的努力,我给了他公认的解决方案和赏金点。

但是他的 actionlist 更新处理程序并不简单,您需要在其中指定要处理的所有情况。假设还有您可能想要的Ctrl+A全选或Ctrl-Y撤消。一般的程序会更好。

因此,如果您在寻找答案时确实遇到了这个问题,请先尝试我提供的添加 IsShortcut 处理程序的答案。它对我有用,应该处理每种情况,不需要 OnExecute 处理程序,所以简单得多。Peter Beyond 编写了该代码,Uwe …

delphi keyboard-shortcuts modal-dialog non-modal

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

什么是标准错误日志文件的良好布局?

我正在尝试为我的桌面程序设计错误和警告日志文件.

当我的程序读取用户的输入文件时,它可能会发现语法错误或某种类型的无效数据.一旦读完所有内容并且程序正在处理数据,就会发现更多问题.

我想将有关这些的消息写入一个简单的文本文件.我可能还想要包含信息文本来指示进度,时间,内存使用等.我想要包括行号,甚至可能包含导致错误的实际输入行.

这将是用户想要浏览的文件,因此显然它必须布局合理且易于使用.

你知道任何风格指南,或者你看到一个让你自己想到的错误日志文件:"现在这是一个设计良好的日志文件!"


跟进:

前三个答案实际上更适用于服务器或事件日志.

我正在为我的桌面程序寻找日志文件的格式,以详细说明它在输入文件中找到的任何问题以及其处理的成功(或失败).

我确定你已经使用了一些桌面应用程序来生成这样的日志文件.你见过有什么好的吗?

validation error-logging error-reporting

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

如何在Delphi中防止ProcessMessages

Application.ProcessMessages命令是众所周知的,我在长进程中使用它来确保我的程序不会占用计算机.

但我有一个相当快速的处理集,我在缓冲视图到文件.在缓冲过程期间,可能会发送一些系统消息(例如重绘或滚动条移动或其他事件).我希望防止这些被ProcessMessages处理,直到我的缓冲完成.

有没有办法:

  1. 阻止Application.ProcessMessages直到我的过程完成,或

  2. 捕获在我的过程中生成的所有消息,并且不会释放它们直到过程结束.

delphi messages idle-processing

4
推荐指数
1
解决办法
4105
查看次数

是否有任何理由不使用Windows注册表进行程序设置?

对我而言,这是一个明智的选择.我的程序的设置进入Windows注册表.毕竟,这就是它的用途,不是吗?

但是一些程序员仍然对使用注册表犹豫不决.他们表示,随着它的增长,它会减慢你的计算机速度.或者他们声明它已损坏并导致计算机出现故障.

因此,他们编写自己的配置文件,或者可以使用Microsoft自几个操作系统之前已经折旧的INI文件.

据我所知,早期Windows操作系统中出现的注册表问题大多数都是在Windows XP中修复的.可能是过多的公司使注册表清理工作能够跟上"注册表膨胀"和"孤立条目"仍然不好的传闻.

所以我问,今天有没有理由不使用Windows注册表来存储我的程序配置设置?

windows registry configuration

4
推荐指数
1
解决办法
432
查看次数

Delphi中的抢占式多线程

我已经在这里这里阅读了抢先式多线程.

有没有办法在Delphi中这样做?这与Delphi中的其他线程方法相比(优点和缺点)如何?

delphi multithreading preemptive

4
推荐指数
2
解决办法
542
查看次数

使用Delphi快速搜索大型文件中是否存在字符串

我的程序中有一个FindFile例程,它将列出文件,但是如果填写了"Containing Text"字段,那么它应该只列出包含该文本的文件.

在此输入图像描述

如果输入"包含文本"字段,则我搜索为文本找到的每个文件.我目前的做法是:

  var
    FileContents: TStringlist;

  begin
    FileContents.LoadFromFile(Filepath);
    if Pos(TextToFind, FileContents.Text) = 0 then
      Found := false
    else 
      Found := true;
Run Code Online (Sandbox Code Playgroud)

上面的代码很简单,一般都可以.但它有两个问题:

  1. 对于非常大的文件(例如300 MB),它会失败

  2. 我觉得它可能会更快.这还不错,但为什么要等待10分钟搜索1000个文件,如果可能有一个简单的方法来加快它的速度?

我需要这个用于Delphi 2009并搜索可能是也可能不是Unicode的文本文件.它只需要用于文本文件.

那么如何加快搜索速度并使其适用于非常大的文件呢?


额外奖励:我还想要允许"忽略大小写"选项.提高效率是一件更艰难的事情.有任何想法吗?


解:

嗯,mghie指出我之前的问题如何在Delphi中有效地阅读许多文件的前几行,而且正如我所回答的那样,它是不同的,并没有提供解决方案.

但是他让我想到我以前做过这件事而且我曾经做过.我为大文件构建了一个块读取例程,将其分解为32 MB块.我用它来读取我的程序的输入文件,这可能是巨大的.该例程工作正常,速度快.所以第一步是对我正在浏览的这些文件做同样的事情.

所以现在问题是如何在这些块内有效搜索.那么我确实有一个关于该主题的上一个问题:Delphi中是否有一个高效的全字搜索功能?和RRUZ向我指出了SearchBuf例程.

这也解决了"奖金",因为SearchBuf有选项,包括全字搜索(该问题的答案)和MatchCase/noMatchCase(奖金的答案).

所以我开始跑步了.再次感谢SO社区.

delphi optimization search large-files

4
推荐指数
2
解决办法
8257
查看次数

如果完成任何操作,如何设置变量(在Delphi中)?

我需要以某种方式在Delphi 2009中实现它:

用户单击按钮2.如果用户的最后一个操作是单击按钮1,那么我想做一件事,但如果用户的最后一个操作是其他任何操作,我想做另一件事.

显然,我设置了一个布尔变量:UserClickedOnButton1并在单击按钮1时将其设置为true,然后在Button 2的OnButtonClick事件中测试该变量.

我的问题是,在点击按钮2之前,如果用户完成其他任何操作,我该如何将其设置为false.(例如,鼠标按下,按键,箭头键,切换到另一个程序或其他任何内容).

...或者有一种更简单的方法可以做到这一点,我忽略了.

delphi

4
推荐指数
1
解决办法
457
查看次数

encoding.getstring没有返回字符串

我正在使用Delphi 2009.

这在所有情况下都适用于我,但有一个:

var
  BOMLength: integer;
  Buffer: TBytes;
  Encoding: TEncoding;
  Value: string;

SetLength(Buffer, 2048);
CurFileStream.Read(Buffer[0], 2048);

Encoding := nil;
BOMLength := TEncoding.GetBufferEncoding(Buffer, Encoding);
Value := Encoding.GetString(Buffer);
Run Code Online (Sandbox Code Playgroud)

在一种情况下,它不起作用,文件是一个简单的小文件,并以UTF8字节顺序标记(BOM)开始,即十六进制:'EF BB BF'并包含以下内容:

0 HEAD
0 @I1@ INDI
1 NAME Barthel Lee /Brenner/
2 CONT MAURICE F. WEAVER
2 CONT  When I was eleven or twelve years old, I went to Camp Marguette for a w
2 CONC eek or two in the summertime. It was operated by Catholic Charities and w
0 TRLR …
Run Code Online (Sandbox Code Playgroud)

delphi encoding utf-8

4
推荐指数
1
解决办法
1312
查看次数