我们有一些Win32应用程序(在Delphi 2006中编码),有时用户会收到一条错误消息"系统错误.代码:8.没有足够的存储空间来处理此命令"..
从堆栈跟踪看起来它总是在CreateWnd调用期间
Main ($1edc):
004146cc +070 app.exe SysUtils RaiseLastOSError
00414655 +005 app.exe SysUtils RaiseLastOSError
004ce44c +130 app.exe Controls TWinControl.CreateWnd
00535a72 +022 app.exe cxControls TcxControl.CreateWnd
004ce82a +016 app.exe Controls TWinControl.CreateHandle
00553d21 +005 app.exe cxContainer TcxContainer.CreateHandle
00586ef1 +005 app.exe cxEdit TcxCustomEdit.CreateHandle
005c331d +005 app.exe cxDropDownEdit TcxCustomDropDownEdit.CreateHandle
004ceaf0 +074 app.exe Controls TWinControl.UpdateShowing
004ceb1e +0a2 app.exe Controls TWinControl.UpdateShowing
004cebdc +03c app.exe Controls TWinControl.UpdateControlState
004d118a +026 app.exe Controls TWinControl.CMVisibleChanged
004cb713 +2bb app.exe Controls TControl.WndProc
004cf569 +499 app.exe Controls TWinControl.WndProc
004b727d +4c1 app.exe …Run Code Online (Sandbox Code Playgroud) 假设我有一系列记录,我想根据记录中的一个字段进行排序.实现这一目标的最佳方法是什么?
TExample = record
SortOrder : integer;
SomethingElse : string;
end;
var SomeVar : array of TExample;
Run Code Online (Sandbox Code Playgroud) 我有一个表格,其中包含MS SQL 2005表格中许多不同"事物"的价格.每件事每天有数百条记录,不同的东西在不同的时间获得价格更新.
ID uniqueidentifier not null,
ThingID int NOT NULL,
PriceDateTime datetime NOT NULL,
Price decimal(18,4) NOT NULL
Run Code Online (Sandbox Code Playgroud)
我需要获得今天最新的一组价格.下面的查询有效但我收到了数百行,我必须循环它们,并且每个ThingID只提取最新的一行.我怎样才能(例如通过GROUP BY)说我想要每个ThingID最新的一个?或者我必须使用子查询?
SELECT *
FROM Thing
WHERE ThingID IN (1,2,3,4,5,6)
AND PriceDate > cast( convert(varchar(20), getdate(), 106) as DateTime)
Run Code Online (Sandbox Code Playgroud)
更新:为了隐藏复杂性,我将ID列放在一个int中.在现实生活中它是GUID(而不是顺序类).我已经更新了上面的表def以使用uniqueidentifier.
我们使用快速报告来创建报告,但我们对其创建的PDF质量并不满意.我知道我们可以插入其他PDF组件而不是FastReports附带的组件,所以我的问题是
Delphi有哪些好的PDF组件(免费或商业版)?理想情况下,它不应该需要任何dll.
编辑:我最终购买了Gnostice,因为它有FastReports集成,可用来源和相当好的声誉.然而,我确实发现了一个问题(在我购买之后)将多页报告从FastReports导出到PDF,其中组件泄漏内存并破坏输出.我已经向Gnostice报告过了,所以我想我们会在未来几天看到他们的支持有多好......
编辑2: Gnostice带来了一个修正程序来纠正内存泄漏和损坏的输出.
我们正在使用SQL Server 2005 Merge复制在伦敦和香港之间复制数据库.复制设置为每隔一分钟同步,它工作正常.但是,可以选择将同步设置为"连续".复制每一分钟和连续复制有什么区别吗?
我们每隔一分钟做一次而不是连续做的唯一原因是,如果线路停机几分钟它恢复得更好,但这种体验全部来自SQL Server 2000,所以它可能不再适用了.. .
如何使用Delphi在我的机器上获取正在运行的进程列表(包含PID,所有者等的详细信息)?
编辑:所提出的解决方案都没有给我拥有该进程的用户,只有PID,ExeName等信息......
我有一个用Delphi 2006编写的MDI应用程序,它使用默认主题运行XP.
有没有办法控制MDI儿童的外观,以避免每个窗口上的大型XP风格标题栏?
我已经尝试设置BorderStyle的MDIChildren到bsSizeToolWin,但他们仍然呈现正常的形态.
我在Excel工作表中有一些数据.我想选择包含数据的所有单元格.
例如,对于单元格A1,A2,A3,B1,B2,B3,C1,C2和C3中的数据的工作表,如何仅选择此3x3网格,而不是整个工作表?
我正在寻找类似的东西ActiveSheet.SelectUsedCells.
我有一个包含一些数据的WideString变量,但是当字符串被分配了一些额外的空值时,在数据中或多或少的随机位置添加.我现在需要从变量中删除这些空值.如果它是一个字符串我会检查每个Char以查看Char(x)= 0但是因为这是一个WideString我不认为这个工作?我怎样才能最好地解决这些问题呢?
我正在使用Delphi 2006
在Exchange 2007 SP3上使用RDO 4.8.0.1184和Delphi 2006
我有以下代码(缩写):
Msg := MailSession.GetMessageFromMsgFile(sTempFile, false);
Msg.UnRead := true;
Msg.Save;
Msg.Move(some_folder);
ShowMessage('EntryID: ' +Msg.EntryID);
Run Code Online (Sandbox Code Playgroud)
生成的对话框显示空的EntryID.我尝试在各个地方打印EntryID,但它总是一个空字符串.我究竟做错了什么?
我需要创建一个带有Unicode主题的IdMessage(例如"本语 - 测试")
我尝试过使用它
Msg.Subject := UTF8Encode(subject);
Run Code Online (Sandbox Code Playgroud)
subject是包含上述文本的WideString但是当我查看编码主题时(通过将Message保存到文件),它看起来像这样:
Subject: =?UTF-8?Q?=C3=A6=C5=93=C2=AC=C3=A8=C2=AA=C5=BE?= - test
Run Code Online (Sandbox Code Playgroud)
代替
Subject: =?UTF-8?Q?=E6=0C=AC=E8=AA=9E?= - test
Run Code Online (Sandbox Code Playgroud)
和Outlook将其显示为"本語 - test"
关于我哪里出错的任何指示?
Delphi 2006(pre-unicode),Indy 10(最近来自源代码)