如何插入命令给出的结果集
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的工具.applicatino当然会运行不同的查询.
从工具我想输出如下: - 此查询很慢,因为此字段上缺少索引
而这种信息.
但我希望有一种方法来突出关键数据,例如可能有100个索引丢失,但其中99个会提高0.05%的性能,而其中一个会给查询带来6000%的好处.所以突出热点也很重要.
还需要商业产品(具有全部特征 - 没有限制 - 试用).
我刚刚被uniGUI网站上的一个朋友重定向.在上一个问题中,我询问了Raudus和ExtPascal之间的比较.
现在这个unigui似乎是Raudus的替代品,而且还有一个优点,就是允许你使用相同的源代码同时编译win32 exe(当然如果你只限于使用uniGUI批准的UI组件).
我认为这是惊人的,即使这个想法一见钟情也不会使所有网络应用程序纯粹主义者感到满意,但在我的意见中,拥有这种工具非常棒.
有许多(甚至很小的)应用程序,可以一次受益于此代码,获得双UI.
无论如何,你对此有何看法?你认为它有未来吗?
附加说明:为了不开始一般性讨论,请尝试特别提及uniGUI,而不仅仅是一般性答案.谢谢.
我通过在运行时将所有字符串放在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) 有一个简单的教程吗?
我想创建一个与excel表完全匹配的表,是否可以执行"从excel表创建表"这样的操作?
我在Delphi中发现了不同的观察者模式实现,例如: Sourcemaking Design Patterns和Delphi Hobbyist.
一般来说,在Delphi中实现观察者的最佳方法是什么?
我会说使用接口因为代码更具可读性.
有时我正在逐步调试,就在FormCreate事件之前或者在FromDestroy之后调试器开始打开DevExpress单元(cxContainer.pas,...)之前,所以在FormCreate之前我的"F8"会引导我转向cxContainer而不是进入我的代码的下一行.
(这只是一个例子,它当然可以发生在任何第三方库中)
如何告诉调试器"仅调试我的单元"(只有dpr文件中列出的pas文件?)
当然,有时调试库很有用,但在大多数情况下并非如此.
我使用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在标签中.
我的Delphi win32 VCL应用程序被部署为一个大的exe.该应用程序是一个客户端服务器应用程序,具有连接到SQL Server的胖客户端.
这很方便(只需更新共享文件夹中的一个文件并更新应用程序 - 当然数据库模式也会更新).
由于我在每个版本中都使用了很多"胖"的第三方组件,比如ReportBuilder和DevExpress,因此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 ×6
sql-server ×3
debugging ×1
delphi-2009 ×1
exe ×1
oop ×1
profiling ×1
rtf ×1
shellexecute ×1
temp-tables ×1
tstringlist ×1
winapi ×1
windows ×1