Tag: delphi

Delphi转换Unicode问题

我们有大型的商业应用程序,我们要从delphi6转换到2010年。约10第三方组件集,所有的源代码…我已经听到关于与2010年Unicode的警告 – 有没有人有经验和/或build议?

哪个embedded式数据库在Delphi应用程序中使用?

我正在Delphi中创build一个桌面应用程序,并计划使用embedded式数据库。 我已经使用SQlite3和DISQLite3库开始了这个项目。 它的工作,但文件似乎有点轻。 我最近发现Firebird(是的,我已经离开了Windows一段时间),它似乎有一些引人注目的function和支持。 每个embedded式数据库有什么优点和缺点? 规模是重要的,以及支持和资源。 你用过什么,为什么?

ORM for DELPHI win32

有谁知道一个ORM或类似的Delphi Win32的东西。

如何让Delphi知道我已经处理了一个exception?

我已经将Application.OnException设置为自定义exception处理程序,以便我可以logging崩溃并提供退出选项。 不过,我现在发现,即使在我已经处理的exception情况下,它也会运行,例如,validation数字input时出现的exception。 有没有办法让自定义exception处理程序只运行在未处理的exception? 编辑:事实certificate,当我在debugging器外面运行时,我得到了预期的行为。 也许这只是一个debugging器的事情。 我不觉得Delphidebugging器与exception的交互是直观的,至less可以这样说。

杀毒软件在我的可执行文件中出现错误

我遇到了一个恼人的问题。 突然, Avira AntiVir开始将我的软件中的一个可执行文件标记为病毒。 由于几乎所有用户的默认操作都是单击“确定”,Avirabuild议将病毒置于隔离区,因此我的大多数用户正在删除此可执行文件。 那么,让我们不要傲慢,检查我是否确实感染了。 我把这个文件发布到http://www.virustotal.com ,而所有的反病毒只有Avira把它标记为感染病毒。 此外,我用两种不同的反病毒扫描我的电脑,它很干净。 我已经发布了一封邮件给我的用户解释发生了什么,但这是我的支持,我真的不想要的开销。 好的,问题是:有没有办法避免这种行为? 除了签署文件之外,我想不出别的办法(真的不知道它是否会解决),但让我们看看你是否有任何创意。

如何使用WinInet API在Delphi中发送HTTP POST请求

我正在尝试使用WinInet函数从Delphi发出HTTP请求。 到目前为止我有: function request:string; var hNet,hURL,hRequest: HINTERNET; begin hNet := InternetOpen(PChar('User Agent'),INTERNET_OPEN_TYPE_PRECONFIG or INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); if Assigned(hNet) then begin try hURL := InternetConnect(hNet,PChar('http://example.com'),INTERNET_DEFAULT_HTTP_PORT,nil,nil,INTERNET_SERVICE_HTTP,0,DWORD(0)); if(hURL<>nil) then hRequest := HttpOpenRequest(hURL, 'POST', PChar('param=value'),'HTTP/1.0',PChar(''), nil, INTERNET_FLAG_RELOAD or INTERNET_FLAG_PRAGMA_NOCACHE,0); if(hRequest<>nil) then HttpSendRequest(hRequest, nil, 0, nil, 0); InternetCloseHandle(hNet); except on E : Exception do ShowMessage(E.ClassName+' error raised, with message […]

旋转位图。 在代码中

有一个更快的方法来旋转一个大的位图90或270度,而不是简单地做一个嵌套循环与坐标倒置? 位图是8bpp,通常是2048 * 2400 * 8bpp 目前我通过简单地使用参数反转进行复制,粗略地(伪代码: for x = 0 to 2048-1 for y = 0 to 2048-1 dest[x][y]=src[y][x]; (实际上我是用指针来做的,速度更快一些,但大致相同) GDI对于大图像来说相当慢,并且纹理(GF7卡)的GPU加载/存储时间与当前CPU时间相同。 任何提示,指针? 一个就地algorithm甚至会更好,但速度比就地更重要。 目标是delphi,但它更是一个algorithm问题。 上证所(2)vector化没有问题,这是一个足够大的问题,我编码在汇编 跟随Nils的答案 图片2048×2700 – > 2700×2048 编译Turbo Explorer 2006,并进行优化。 Windows:电源scheme设置为“始终打开”。 ( 重要!!!! ) 机器:Core2 6600(2.4 GHz) 时间与旧例程:32毫秒(第1步) 时间步长8:12ms 时间步长16:10ms 时间步长32+:9ms 同时我也testing了Athlon 64 X2(5200 + iirc),而且速度稍微超过了四倍(80到19毫秒)。 加快是非常值得的,谢谢。 也许在夏天的几个月里,我会用SSE(2)版本来折磨自己。 但是我已经想过如何解决这个问题了,我想我会用完SSE2寄存器来实现一个直接的实现: for n:=0 […]

TThreadedQueue没有能力的多个消费者?

尝试在单个生产者多个消费者scheme中使用TThreadedQueue(Generics.Collections)。 (DELPHI-XE)。 这个想法是推入对象到一个队列,让几个工作线程排空队列。 尽pipe如此,它没有像预期的那样工作。 当两个或两个以上工作线程调用PopItem时,访问冲突从TThreadedQueue抛出。 如果对PopItem的调用是使用临界区域进行序列化的,则一切正常。 当然TThreadedQueue应该能够处理多个消费者,所以我错过了什么,或者这是TThreadedQueue纯粹的错误? 这是一个简单的例子来产生错误。 program TestThreadedQueue; {$APPTYPE CONSOLE} uses // FastMM4 in '..\..\..\FastMM4\FastMM4.pas', Windows, Messages, Classes, SysUtils, SyncObjs, Generics.Collections; type TThreadTaskMsg = class(TObject) private threadID : integer; threadMsg : string; public Constructor Create( ID : integer; const msg : string); end; type TThreadReader = class(TThread) private fPopQueue : TThreadedQueue<TObject>; fSync : […]

Windows视觉主题:部件和国家图库?

Microsoft Windows允许程序员使用DrawThemeBackground和DrawThemeText等DrawThemeBackground使用当前主题的外观和感觉来绘制GUI元素。 元素由Class,Part和State指定,如MSDN的“ 部件和状态”页所述。 不幸的是,这个页面并不是非常有用的信息(完全可以!)。 所以问题是:是否有一个所有这些部分和状态的参考,最好与元素的图像(在默认的Windows Vista / 7主题)?

如何在Delphi中以各种方式进行线程处理?

似乎我终于在我的Delphi 2009程序中实现了某种线程化。 如果只有一种方法可以做到,我就可以跑步了。 但是我看到了几种可能性。 任何人都可以解释这些之间有什么区别,为什么我会select另一个。 Delphi中的TThread类 由Andreas Hausladen提供的 AsyncCalls OmniThreadLibrary由Primoz Gabrijelcic(gabr) …任何其他人? 编辑: 我刚刚在2010年3月(第10期)“ 布莱斯·帕斯卡杂志 ”( Blaise Pascal Magazine)的一篇题为“四种创造线索”的文章中,阅读了Gabr的一篇优秀文章。 你必须订阅获得杂志的内容,所以通过版权,我不能在这里再现任何实质性内容。 总之,Gabr描述了使用TThreads,直接Windows API调用,Andy的AsyncCalls和他自己的OmniThreadLibrary之间的区别。 他最后得出结论: “我并不是说你不得不select比传统的delphi方式(TThread)还要多的东西,但是把你的select通知你还是很好的” Mghie的回答非常彻底,build议OmniThreadLibrary可能更可取。 但是我仍然对每个人(或者任何人)应该如何select他们的线程方法感兴趣。 你可以添加到列表中: 。 4.直接调用Windows API 。 5. LachlanG在答复中提出的Misha Charrett的 CSI分布式应用程序框架 。 结论: 我可能会去OmniThreadLibrary。 我喜欢Gabr的工作。 多年前我使用过他的profiler GPProfile,而且我正在使用他的GPStringHash,它实际上是OTL的一部分。 一旦Embarcadero将这个function添加到Delphi中,我唯一的担心就是升级它来处理64位或者Unix / Mac处理。