我有很多常量相关的常量,在某些时候我需要配对它们,像这样:
const
key1 = '1';
key2 = '2';
key3 = '3';
value1 = 'a';
value2 = 'b';
value3 = 'c';
Run Code Online (Sandbox Code Playgroud)
我想避免这样做:
if MyValue = key1 then Result := value1;
Run Code Online (Sandbox Code Playgroud)
我知道如何使用字符串列表:
MyStringList.Add(key1 + '=' + value1);
Result := MyStringList.Values[key1];
Run Code Online (Sandbox Code Playgroud)
但是,有没有更简单的方法呢?
我们正在尝试使用TestComplete在我们的日常构建中集成测试,到目前为止,我们有一台专用于测试的机器,我们的构建脚本会将TestComplete测试所需的一切复制到此机器(应用程序,数据库,测试脚本项目和源文件等) .
基本上我们可以手动打开TestComplete项目并运行测试.
现在我们想要自动化这个过程,那你怎么做呢?或者您认为如何成为实现这种自动化的最简单,最好的方法?
保持简短,我们希望在每次构建后自动执行打开TestComplete的过程,运行所有测试并发送包含测试结果的电子邮件.
任何人都可以分享一些经验吗?
谢谢.
build-automation automated-tests dailybuilds finalbuilder testcomplete
我正在使用Delphi 2009和来自svn的最新Indy 10来使用SMTP发送电子邮件,但它不适用于Gmail(Google Apps托管域).当我尝试发送电子邮件时,我得到"必须首先发出STARTTLS命令".
我尝试了谷歌搜索,我找到了几个论坛和几个解决方案,但他们都只是抨击一些代码或只是说我需要一个OpenSLL DLL,到目前为止我还不是很清楚我需要什么.
有人可以确切地告诉我需要哪个DLL以及我需要在我的TIdSMTP和TIdMessage对象中更改什么才能通过Gmail的SMTP服务器发送电子邮件?
此外,非常欢迎解释为什么此身份验证不同以及DLL的用途.
我正在尝试以特定顺序对TStringList进行排序.
而不是A,B,C ..我试图在B,C,A中订购它.
我已经用我需要的顺序声明了一个const数组.
我尝试过CustomSorte,但我无法理解如何编写该函数.
我现在正在尝试for循环,但它真的很难和令人困惑!
我不是德尔福专家......
提前谢谢你们!
我正在我的Delphi XE2 IDE中做一些清理工作,以便最小化加载的软件包,并且由于IDE中的东西较少,试着让它更稳定一些(男人,它是如何崩溃的).
这样做的主要原因是Refactor快捷方式与我使用的其他工具发生冲突,并且通常当我错误地点击重构快捷方式时IDE会加载很多东西并因某些.NET错误而崩溃,所以我摆脱了Delphi默认的重构函数.
为了摆脱它,我刚从注册表中删除了"refactoride160.bpl - Core Refactoring Package",它确实有效.
但我注意到在注册表中有很多其他包没有描述,我认为知道这些包是什么有趣,以便知道什么可以安全删除.
我知道删除软件包会有一些影响并且可以指出,但这个问题的主要目标是更好地理解IDE上加载的内容,以便我可以将其调整为使用.
以下是注册表中的条目,注意有很多无标题包,在哪里可以找到有关这些的信息?哪个可以安全删除?
[HKEY_CURRENT_USER\Software\Embarcadero\BDS\9.0\Known IDE Packages]
"C:\\Users\\Public\\Documents\\RAD Studio\\9.0\\Experts\\IDEFixPackStartup.bpl"="IDE Fix Pack Startup"
"C:\\Program Files (x86)\\SmartBear\\AQtime 7\\Bin\\AQtime7BDS9.bpl"="AQtime 7 IDE Package"
"$(BDS)\\Bin\\asmview160.bpl"="Assembly Browser Package"
"$(BDS)\\bin\\comptoolbar160.bpl"="Component Toolbar Package"
"$(BDS)\\Bin\\dbkdebugide160.bpl"="(Untitled)"
"$(BDS)\\Bin\\delphiwin32160.bpl"="Delphi Win32 Platform"
"$(BDS)\\Bin\\dotnetcoreide160.bpl"=".NET Core IDE Package"
"$(BDS)\\bin\\exceptiondiag160.bpl"="(Untitled)"
"$(BDS)\\bin\\fileexplorer160.bpl"="(Untitled)"
"$(BDS)\\bin\\historyide160.bpl"="(Untitled)"
"$(BDS)\\Bin\\htmlhelp2160.bpl"="HtmlHelp Viewer"
"$(BDS)\\bin\\idefilefilters160.bpl"="IDE File filters"
"$(BDS)\\bin\\plugview160.bpl"="Pluggable Tree View Package"
"$(BDS)\\Bin\\projecttargets160.bpl"="(Untitled)"
"$(BDS)\\Bin\\projpageide160.bpl"="Value Data: Project and template library package"
"$(BDS)\\Bin\\startpageide160.bpl"="Start Page IDE Package"
"$(BDS)\\Bin\\tlbview160.bpl"="TypeLibrary Browser Package"
"$(BDS)\\Bin\\codetemplates160.bpl"="(Untitled)"
"$(BDS)\\bin\\coreproide160.bpl"="Core IDE Pro Package"
"$(BDS)\\bin\\dbkdebugproide160.bpl"="(Untitled)"
"$(BDS)\\Bin\\profiledeployide160.bpl"="(Untitled)"
"$(BDS)\\Bin\\profilemgride160.bpl"="(Untitled)"
"$(BDS)\\bin\\refactoride160.bpl"="Core Refactoring Package"
"$(BDS)\\bin\\todoide160.bpl"="ToDo" …Run Code Online (Sandbox Code Playgroud) A.Event1 := nil;
A.Event2 := nil;
try
...
finally
A.Event1 := MyEvent1;
A.Event2 := MyEvent2;
end;
Run Code Online (Sandbox Code Playgroud)
可能出现问题吗?
编辑:
我已经接受了巴里的答案,因为它完全回答了我的问题,但根据情景,韦加的答案也是正确的,遗憾的是我不能同时接受.
首先看到以下问题:
SetRoundMode(rmUp)和舍入"round"值(如10)会产生10,0001.
我需要将货币值向上舍入,因此0.8205变为0.83,但上面显示的SimpleRoundTo行为让我有些头疼.
如何以安全的方式提升货币价值?
我有2个XML文件,首先这个工作得很好:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:ConsultarSituacaoLoteRpsResposta xmlns:ns2="http://www.ginfes.com.br/tipos_v03.xsd" xmlns:ns3="http://www.ginfes.com.br/servico_consultar_situacao_lote_rps_resposta_v03.xsd">
<ListaMensagemRetorno>
<ns2:MensagemRetorno>
<ns2:Codigo>E172</ns2:Codigo>
</ns2:MensagemRetorno>
</ListaMensagemRetorno>
</ns3:ConsultarSituacaoLoteRpsResposta>
Run Code Online (Sandbox Code Playgroud)
我用来读它的代码是这样的:
MyNode := Doc.DocumentElement.ChildNodes.First.ChildNodes.FindNode('MensagemRetorno');
MyValue := MyNode.ChildValues['Codigo'];
Run Code Online (Sandbox Code Playgroud)
问题是我有第二个XML:
<?xml version="1.0" encoding="utf-8"?>
<ConsultarSituacaoLoteRpsResposta xmlns="http://www.issnetonline.com.br/webserviceabrasf/vsd/servico_consultar_situacao_lote_rps_resposta.xsd">
<ListaMensagemRetorno>
<MensagemRetorno>
<Codigo xmlns="http://www.issnetonline.com.br/webserviceabrasf/vsd/tipos_complexos.xsd">E156</Codigo>
</MensagemRetorno>
</ListaMensagemRetorno>
</ConsultarSituacaoLoteRpsResposta>
Run Code Online (Sandbox Code Playgroud)
请注意,此XML在"Codigo"节点中具有命名空间,因此我的代码找不到此节点.
我发现从第二个XML读取"Codigo"值的唯一方法是这样的:
for I := 0 to MyNode.ChildNodes.Count -1 do
begin
ChildNode := RetornoNode.ChildNodes[I];
if ChildNode.NodeName = 'Codigo' then
Codigo := ChildNode.NodeValue;
end;
Run Code Online (Sandbox Code Playgroud)
但我认为应该有更好的方法来做到这一点,因为我仍然不明白为什么第一个代码不适用于第二个XML.
有人可以帮我澄清一下吗?
我想知道是否有任何方便的方法可以自动将代码部署到GO中的实时服务器,无论是标准内置方法还是其他方法.
我想要谷歌应用程序引擎的东西,我只是运行命令,它上传到服务器并触发重启.
(最终我想要一个git提交来触发重建和重新部署,但这将是未来的轨道)
这段代码:
SetRoundMode(rmUp);
Memo1.Lines.Add(CurrToStr(SimpleRoundTo(10)));
Run Code Online (Sandbox Code Playgroud)
结果10,0001.
我根本就没有得到它.
我认为rmUp会做类似的事情,围绕10,0001到11,但从不到10到10,000.
谁能解释为什么会这样?
谢谢.
delphi ×8
delphi-xe2 ×2
dailybuilds ×1
deployment ×1
dom ×1
finalbuilder ×1
gmail ×1
go ×1
indy ×1
packages ×1
sorting ×1
ssl ×1
testcomplete ×1
xml ×1