小编Tom*_*erg的帖子

Delphi按钮 - 设计时和运行时的不同外观

有谁有这个问题?在设计时,按钮的外观是正常的.但是,在运行时它与Windows 98按钮的外观.

运行时图片

设计时间图片

操作系统 - Windows 7 64位Delphi 10.1 Berlin

delphi button delphi-10.1-berlin

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

如何在delphi中将字符串转换为日期

当我将string类型转换为TDateTimeI时出错.我正在使用VarToDateTime功能.我作为字符串的日期是2018-07-11T13:45:14.363.

var
  s: string;
  v: Variant;
  dt: TDateTime;
begin
  s := '2018-07-11T13:45:14.363';
  v := s;
  dt := VarToDateTime(v);
end;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

delphi datetime

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

我不理解在调用堆栈中重复DispatchMessageW的堆栈溢出错误

这是一个Delphi应用程序,但我想这是一个常见的Windows编程问题.

我在周末离开了我的应用程序(在Delphi IDE中)并且刚刚回来找到堆栈溢出.

堆栈就像这样......

:75c4417e kernel32.GetDriveTypeW + 0x23
:75c452ae kernel32.IsProcessorFeaturePresent + 0xa9
:75c45272 kernel32.IsProcessorFeaturePresent + 0x6d
:75c45248 kernel32.IsProcessorFeaturePresent + 0x43
:7678410b KERNELBASE.LoadStringBaseExW + 0xc7
:76678ed2 USER32.LoadStringW + 0x19
:0040c4ae LoadResString + $4A
uADStanDef.TADDefinition.Create(nil)
uADStanDef.TADDefinition.CreateTemporary
uADStanDef.TADConnectionDefTemporaryFactory.CreateObject
uADStanFactory.TADManager.CreateInterface((1050358107, 62550, 16757, (168, 100, 178, 87, 60, 74, 32, 21)),(no value),True)
uADStanFactory.ADCreateInterface((1050358107, 62550, 16757, (168, 100, 178, 87, 60, 74, 32, 21)),(no value),True)
uADCompClient.TADCustomConnection.Create($2DB7EB0)
fMainForm.TMainForm.ServerAliveTimerTimer($2E8DE38)    <========== my code
:004f1546 Winapi + $4F1546
:00461316 Winapi + $461316
:766762fa ; C:\Windows\syswow64\USER32.dll
:76676d3a USER32.GetThreadDesktop + 0xd7
:766777c4 …
Run Code Online (Sandbox Code Playgroud)

windows stack-overflow delphi

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

Delphi:TFrame错误没有帧可供插入

碰巧我,Delphi XE6 IDE 忘记TFrame了我过去创建的所有后代.

更具体地说,当我单击标准 - >框架时,选择我的框架的对话框不再显示.

相反,它显示以下错误消息:

没有框架可供插入.可以从File | New | Other选项创建新帧.

有办法纠正这种情况吗?

EDIT1重现的步骤很遗憾:我真的不确定这是怎么发生的,但事实确实如此.我认为从某些版本的Delphi升级到另一个版本时可能存在罪魁祸首.因为我随着时间的推移多次升级,我记得在Delphi 7中启动项目,然后有一些版本我不记得哪些版本,我使用的最后两个版本是XE2,直到现在是XE6.


Edit2如果在XE2之前使用Delphi版本创建了框架,则会发生这种情况.

delphi tframe

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

Delphi - 在 VCL 样式中禁用 [x] 关闭按钮

我想在 DX Berlin 中禁用带有 VCL 样式的 [X] 关闭按钮。

为什么这段代码不能与 VCL 风格一起工作?

EnableMenuItem(GetSystemMenu(Form3.Handle, LongBool(False)),SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
Run Code Online (Sandbox Code Playgroud)

delphi

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

如何在Tvirtualstringtree中设置节点高度

我已设置FocusedNode使用以下代码的高度

procedure TMainForm.SetheightClick(Sender: TObject);
begin
  if Assigned(tree1.FocusedNode) then
    Tree1.NodeHeight[Tree1.FocusedNode] := strtointdef(edit8.Text ,50);
end;
Run Code Online (Sandbox Code Playgroud)

我想设置Tvirtualstringtree多选节点的高度.怎么做?

delphi tvirtualstringtree

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

使用 TStreamReader 和 TStringList 处理非常大的文本文件

我正在使用 Embarcadero 的 Rad Studio Delphi (10.2.3),并且在读取非常大的文本文件(700 万行以上,每行都不同,行长度可以是 1 到 ~200 个字符等)时遇到内存问题。我对 Delphi 编程相当陌生,所以在发帖之前我已经搜索过 SO 和 Google 寻求帮助。

我最初实现了一个 TStringList 并使用 LoadFromFile 方法读取文件,但是当处理的文本文件变得足够大时,这会失败。然后,我实现了一个 TStreamReader 并使用 ReadLn 使用此处找到的基本代码填充 TStringList:

TStringList.LoadFromFile - 大文本文件的异常

代码示例:

//MyStringList.LoadFromFile(filename);
Reader := TStreamReader.Create(filename, true);
try
  MyStringList.BeginUpdate;
  try
    MyStringList.Clear;
    while not Reader.EndOfStream do
      MyStringList.Add(Reader.ReadLine);
  finally
    MyStringList.EndUpdate;
  end;
finally
  Reader.Free;
end;
Run Code Online (Sandbox Code Playgroud)

在我需要处理的文件变得巨大(约 700 万行以上)之前,这种方法一直很有效。看起来 TStringList 变得太大以至于内存不足。我说“出现”是因为我实际上无权访问正在运行的文件,并且所有错误信息都是由我的客户通过电子邮件提供的,这使得这个问题变得更加困难,因为我无法简单地在 IDE 中调试它。

该代码是32位编译的,我无法使用64位编译器。我也不能包括数据库系统之类的。不幸的是,我有一些严格的限制。我需要加载每一行以查找模式并将这些行与其他行进行比较以查找“模式中的模式”。我很抱歉在这里说得很含糊。

底线是——有没有一种方法可以在不使用 TStringList 的情况下访问文本文件中的每一行,或者也许有更好的方法来处理 TStringList 内存?

也许有一种方法可以将 StreamReader 中的特定行块加载到 TStringList 中(例如,读取前 100,000 行并处理,接下来的 100,000 行等),而不是一次加载所有内容?我想我可以写一些东西来处理可能的“块间”模式。

预先感谢您的任何和所有帮助和建议!

***** 编辑更新 *****

好的,这是我需要实现的基本解决方案:

var …
Run Code Online (Sandbox Code Playgroud)

delphi text tstringlist readline delphi-10.2-tokyo

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

在Firemonkey上,如何在画布上绘制蒙版位图?

我有一个位图和一个蒙版(还有一个位图)。我想在蒙版上绘制位图(如下图所示)

在蒙版上绘制位图

如何在 Delphi 上使用Firemonkey执行此操作?

delphi firemonkey

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

在Delphi中,如何更改TDBGrid中网格线的颜色?

我在Delphi应用程序中使用TDBGrid组件,当我更改行颜色时,网格线变得不清楚或几乎不可见.

那么,任何人都可以告诉我们如何改变网格线的颜色吗?

我的意思是:如何改变细胞边界的颜色(见下图)

细胞边界

delphi colors dbgrid

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

拖放以在 ScrollBox 内垂直排列

我被要求对另一个开发人员 10 多年前在 Delphi 7 中所做的项目进行一些更改。这是一段专有代码,因此我将非常具体。

“Container”是一个 TScrollBox,里面的面板是 TSpkRollPanel 的——一个可折叠或可扩展的 TPanel 衍生物。

我希望下图能说明一切。这真的很简单。我应该使 TSpkRollPanel 元素仅垂直拖放,以便它们可以按所需顺序排列。我花了几个小时来加快 Delphi 的速度(我已经 10 多年没见过了)

如果有人能指出我正确的方向,我将不胜感激。我精通德尔福,只是生疏了。

在此处查看示例 GUI

delphi

3
推荐指数
1
解决办法
392
查看次数