小编LaB*_*cca的帖子

Delphi:将rtf转换为文本的最佳方法

我需要将rtf转换为纯文本.我曾经写过一个剥去rtf标题的函数,但它永远不会完美.

因此,一个选项可以使用在运行时创建的TRichEdit(类似于此处描述的但当然在运行时完成).但还有另一种方式吗?这个或更好的方法是否有rtl功能?

更新:

这个问题中,我将rtf的最终版本写入了文本过程.

delphi rtf

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

如何在临时表中插入RESTORE FILELISTONLY/HEADERONLY/VERIFYONLY给出的信息

如何插入命令给出的结果集

RESTORE FILELISTONLY
RESTORE  HEADERONLY
RESTORE VERIFYONLY
Run Code Online (Sandbox Code Playgroud)

进入自动生成的临时表?

我想使用类似的技术(因此表是自动创建的,所有列都匹配结果集的列)

SELECT * INTO #TempTable 
FROM (RESTORE FILELISTONLY FROM DISK = 'c:\Test\Test.bak')
Run Code Online (Sandbox Code Playgroud)

但这不起作用.如果我可以填充TempTable,那么我就可以在下面的SQL语句中使用它中包含的信息(在我的例子中是一个恢复DB语句,我需要使用RESTORE FILELISTONLY给出的结果集中包含的一些字符串)

我正在使用sql server 2008.

sql-server temp-tables database-restore sql-server-2008

6
推荐指数
2
解决办法
8885
查看次数

用于在sql server中查找数据库瓶颈的工具

我想要一个在测试我的应用程序时监视sql server的工具.applicatino当然会运行不同的查询.

从工具我想输出如下: - 此查询很慢,因为此字段上缺少索引

而这种信息.

但我希望有一种方法来突出关键数据,例如可能有100个索引丢失,但其中99个会提高0.05%的性能,而其中一个会给查询带来6000%的好处.所以突出热点也很重要.

还需要商业产品(具有全部特征 - 没有限制 - 试用).

sql-server profiling

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

您如何看待uniGUI,同时创建Web应用程序和win32应用程序的框架?

我刚刚被uniGUI网站一个朋友重定向.在上一个问题中,我询问了Raudus和ExtPascal之间的比较.

现在这个unigui似乎是Raudus的替代品,而且还有一个优点,就是允许你使用相同的源代码同时编译win32 exe(当然如果你只限于使用uniGUI批准的UI组件).

我认为这是惊人的,即使这个想法一见钟情也不会使所有网络应用程序纯粹主义者感到满意,但在我的意见中,拥有这种工具非常棒.

有许多(甚至很小的)应用程序,可以一次受益于此代码,获得双UI.

无论如何,你对此有何看法?你认为它有未来吗?

附加说明:为了不开始一般性讨论,请尝试特别提及uniGUI,而不仅仅是一般性答案.谢谢.

delphi web-applications

6
推荐指数
2
解决办法
8365
查看次数

如何更快地搜索Delphi TStringList中的名称/值对?

我通过在运行时将所有字符串放在TStringList中来实现应用程序中的语言转换:

procedure PopulateStringList;
begin  
  EnglishStringList.Append('CAN_T_FIND_FILE=It is not possible to find the file');
  EnglishStringList.Append('DUMMY=Just a dummy record');
  // total of 2000 record appended in the same way
  EnglishStringList.Sorted := True; // Updated comment: this is USELESS!
end;
Run Code Online (Sandbox Code Playgroud)

然后我使用以下方式获得翻译:

function GetTranslation(ResStr:String):String;
var
  iIndex : Integer;
begin
  iIndex := -1;
  iIndex :=  EnglishStringList.IndexOfName(ResStr);
  if iIndex >= 0 then
  Result :=  EnglishStringList.ValueFromIndex[iIndex] else
  Result := ResStr + ' (Translation N/A)';
end;
Run Code Online (Sandbox Code Playgroud)

无论如何使用这种方法找到一条记录需要大约30微秒,是否有更好的方法来实现相同的结果?

更新:为了将来的参考,我在这里写了建议使用TDictionary的新实现(适用于Delphi 2009及更新版本):

procedure PopulateStringList;
begin  
  EnglishDictionary := TDictionary<String, String>.Create;
  EnglishDictionary.Add('CAN_T_FIND_FILE','It is …
Run Code Online (Sandbox Code Playgroud)

delphi tstringlist

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

如何从Excel工作表创建表?

有一个简单的教程吗?

我想创建一个与excel表完全匹配的表,是否可以执行"从excel表创建表"这样的操作?

sql-server sql-server-2008

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

在Delphi中实现观察者模式的最佳方法

我在Delphi中发现了不同的观察者模式实现,例如: Sourcemaking Design PatternsDelphi Hobbyist.

一般来说,在Delphi中实现观察者的最佳方法是什么?
我会说使用接口因为代码更具可读性.

delphi oop design-patterns

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

Delphi:如何从调试器中排除单元?

有时我正在逐步调试,就在FormCreate事件之前或者在FromDestroy之后调试器开始打开DevExpress单元(cxContainer.pas,...)之前,所以在FormCreate之前我的"F8"会引导我转向cxContainer而不是进入我的代码的下一行.

(这只是一个例子,它当然可以发生在任何第三方库中)

如何告诉调试器"仅调试我的单元"(只有dpr文件中列出的pas文件?)

当然,有时调试库很有用,但在大多数情况下并非如此.

delphi debugging delphi-2009

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

将'open'传递给ShellExecute不会在特定计算机上打开word文件

我使用ShellExecute打开文件.在2000多个用户中的一台机器上,我无法打开doc文件.用Wordpad打开docx.

Word 2010已正确安装,并且来自资源管理器的双重cliick正确打开单词,而且文档在资源管理器中显示正确的图标.请注意,所有其他文件都可以正常工作(如xls,xlsx,pdf,...)

有谁知道为什么?我checekd并"使用此应用程序打开文件"它被检查.

在代码中我检查错误,我知道错误消息是

SE_ERR_ASSOCINCOMPLETE 要么 SE_ERR_NOASSOC

(因为在这两种情况下我都显示错误"没有应用程序与文件类型相关联",所以我不知道哪个错误存在,我在客户端调试看看它,但我不认为在这种情况下它是如此重要).

有人有想法吗?这是我用来打开文件的方法:

ShellExecute(0, 'open', PWideChar(MyFilePath), '', '', SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

注意:它看起来像我的一些问题是在这台机器的Windows注册表中,它是一个几乎新鲜的Windows 7机器.

注意谁将投票结束这个问题作为关闭主题:它实际上是一个关于WinAPI的问题:为什么这个api在从资源管理器发出时不能按预期工作?所以这不是主题,特别是winapi在标签中.

windows winapi shellexecute

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

使用Delphi构建的exe大于100MB是否有任何风险?

我的Delphi win32 VCL应用程序被部署为一个大的exe.该应用程序是一个客户端服务器应用程序,具有连接到SQL Server的胖客户端.

这很方便(只需更新共享文件夹中的一个文件并更新应用程序 - 当然数据库模式也会更新).

由于我在每个版本中都使用了很多"胖"的第三方组件,比如ReportBuilderDevExpress,因此exe大小的增长主要是因为这些组件变得越来越大.

在dpr我设置这些标志以确保从共享文件夹或可移动设备启动exe时,它总是加载到内存中(并避免奇怪的连接错误):

{$SetPEFlags IMAGE_FILE_NET_RUN_FROM_SWAP}
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
Run Code Online (Sandbox Code Playgroud)

如果exe是使用Release Build Configuration构建的,那么普通的exe通常会减小大约50%的大小(与Debug Build Configuration相比).但是因为我使用EurekaLog,使用Build而不是Debug构建只是略微减小了大小.

目前我的exe是115MB(使用"Build"Build配置和EurekaLog构建).

在任何人的经历中都可以吗?是否有一个已知的限制,建议不要超过?

以下是近年来规模的增长情况:

2014年:76MB

2015年:82MB

2016年:90MB

2017:97MB

2018年:115MB

由于我最近超过了100MB的限制,我开始担心.

我知道可以用运行时包构建,但我的问题集中在尽可能保持单个大exe方法.

我记得cnPack有一个我过去尝试过的Uses Cleaner功能.这可能有助于我删除一些未使用的单位,从而减少exe大小,但无论如何这不能阻止我超过100MB的趋势.

谢谢.

delphi exe delphi-10-seattle

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