我正在使用Delphi XE,我有一个包含主应用程序和DUnit测试应用程序的项目组.我不时会去DUnit测试应用程序添加一些测试并运行现有测试.
一些测试代码生成由应用程序处理的异常,但由Delphi Debugger多次显示,因为我习惯使用F9快捷方式运行测试应用程序,就像我使用标准应用程序一样:在这种情况下,这不是很方便.
我知道在没有调试的情况下运行的SHIFT+ CTRL+ F9快捷方式,当我记得使用它时这很好但是我经常发现自己打F9,然后咕,然后关闭测试应用程序,然后点击SHIFT+ CTRL+ F9.多么浪费时间.
所以我的问题是:有更好的方法吗?我可以定义一些设置或使用某些专家来默认运行该特定应用程序而无需调试吗?当然,我不是唯一一个遇到这个问题的人.
提前致谢.
使用Delphi 2010我想将PNG图像复制到剪贴板,同时保留alpha透明度.不幸的是,TPngImage.SaveToClipboardFormat方法会将其绘制到位图,透明度将会丢失.
我想将PNG图像粘贴到Photoshop和Word等具有Alpha透明度的应用程序中.
有关如何做到这一点的任何想法?其他应用程序如何在剪贴板中复制透明度?
我正在开发一个客户端/服务器应用程序,其中服务器保存大量数据,如客户端请求的大图像或视频文件,我需要创建一个内存客户端缓存系统来保存一些大数据加快这个过程.需要明确的是,每个单独的图像或视频都不是那么大,但所有图像或视频的总体尺寸可能非常大.
但是我面临着"我应该缓存多少数据"的问题,并且想知道Windows上是否存在某种关于我应该采用什么策略的黄金规则.缓存是在客户端完成的,我不需要在服务器上进行缓存.
我正在尝试使用TestComplete在ESXi虚拟机中设置自动GUI测试.据我所知,问题在于,当没有与ESXi虚拟机建立远程桌面连接时,TestComplete不可能执行屏幕捕获并因此自动执行GUI测试.据我了解,这是因为当没有人查看时,Windows不会生成任何用户界面.
我确定其他人都遇到过这个问题.你是怎么解决的?您是否使用第三方计算机在运行测试之前自动启动远程桌面连接?
是否可以从无头虚拟机启动远程桌面到另一个虚拟机来伪造某人观看?
还有其他更智能的解决方案吗?
经过大量的实验,我找到了一种方法,用FreePascal编译的DLL与Delphi编译的EXE交换PChar.我负责DLL和EXE源代码,但一个必须在FreePascal中,另一个在Delphi中.我的解决方案涉及DLL中的以下方法:
function GetAString(): PChar;
var aString: string;
begin
aString := 'My String';
result := StrAlloc(length(aString) + 1);
StrPCopy(result, aString);
end;
procedure FreeString(aString: PChar);
begin
StrDispose(aString);
end;
Run Code Online (Sandbox Code Playgroud)
从Delphi EXE中,要调用GetAString方法,我需要调用GetAString方法,将PChar保存到实际的Delphi String并调用FreeString方法.
这是从FreePascal DLL与Delphi EXE交换字符串的最佳方法吗?我可以避免从Delphi调用FreeString吗?
最后,如果这是正确的解决方案,默认情况下它将如何使用Delphi 2010和WideString:我是否还需要在FreePascal中强制使用WidePChar?
我正在使用Delphi XE,并希望在我的应用程序的Windows 7任务栏跳转列表中添加"最近项目",例如右键单击Microsoft Word会显示最近打开的文档.我已经找到了有关如何设置进度但没有关于跳转列表项的信息.任何帮助将不胜感激.
我试图使这个If Statement工作,但我似乎无法让它做我想要的.如果我选择@result,它会给我值0,那么为什么IF语句不起作用?
SET @message = '((sometihng here))';
select LEFT(@message, 1) into @firstChar;
select STRCMP(@firstChar,'(') into @result;
IF (@result = 0) THEN
SET @message = 'true';
//more selects and cals here;
END IF;
select @message;
Run Code Online (Sandbox Code Playgroud)
我应该成真,但我没有告诉我一个错误:
SQL query: IF( @result =0 ) THEN SET @message = 'true';
MySQL说:
1064 - 您的SQL语法出错; 检查与MySQL服务器版本对应的手册,以便在第1行的"IF(@result = 0)THEN SET @message ='true''附近使用正确的语法
我的Delphi XE应用程序很好,直到几天,我无法弄清楚出了什么问题.我的项目布局:
当我打开我的项目时,主窗体没有任何与任何控件关联的图像或操作,即使它们应该是.当我编译时,我得到错误消息:"模块'winMain'链接到模块'modGeneral',这在当前项目中找不到.你想删除/重定向链接到另一个模块吗?".
解决方法:在我打开项目后关闭主窗体,然后在项目管理器中双击它,在IDE中打开模块(是的,它出现在当前项目中),然后重新打开主窗口form:现在可以正确显示我的所有动作和图像.
您怎么看,这是一个已知的Delphi漏洞?我的项目有问题吗?
我的Delphi XE应用程序基于使用RemObjects创建的本地服务器DLL的单个EXE,并使用大量内存进行特定操作,直到它生成一个异常,说明内存不足.所以我试图理解为什么以及在哪里发生这种情况所以我在我的代码中放置了各种步骤来报告内存使用情况.问题是我根据获取内存使用信息的方法获得了非常不同的信息:
如果我使用这里解释的方法直接向FastMM请求客户端EXE和服务器DLL,这是我得到的:
现在如果我使用这里解释的使用GetProcessMemoryInfo 的方法,我得到更多的内存使用:
看起来第二种方法是基于我的记忆问题的权利,但FastMM方法怎么可能如此"低"?有什么可以解释这个区别?
我正在尝试使用桌面画布绘制整个屏幕并直接绘制到它.问题是我无法清除桌面画布.我已经尝试将canvas.pen.style设置为psNotXOR并绘制旧图像但不幸的是,这不够可靠,并且在某些情况下仍然存在一些遗留问题.
我需要在鼠标悬停在窗口/控件周围时绘制一个选择矩形.
delphi ×8
delphi-xe ×3
caching ×1
canvas ×1
datamodule ×1
debugging ×1
desktop ×1
dll ×1
dunit ×1
esxi ×1
fastmm ×1
freepascal ×1
graphics ×1
if-statement ×1
jump-list ×1
mysql ×1
pascal ×1
png ×1
string ×1
taskbar ×1
testcomplete ×1
transparency ×1
vmware ×1
windows ×1
windows-7 ×1