- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这可能不是这个问题的正确位置,如果不合适请随意移动它。我标记为 Delphi/Pascal 因为这是我在 atm 中工作的内容,但这可能适用于我猜的所有编程。
无论如何,我正在做一些代码清理,并考虑将程序中的所有字符串移动到单独的单个 .pas 文件中。这样做有什么优点和缺点吗?值得这样做吗?
澄清一下:我的意思是我将创建一个单独的文件 Strings.pas,在其中我将创建所有文本字符串变量。
例如
当前代码
Messages.Add('The voucher was NOT sent to ' + sName+
' because the application is in TEST MODE.');
Messages.Add('Voucher Saved to ' + sFullPath);
Messages.Add('----------------------------------------------------------');
新代码将类似于:
Messages.Add(sMsgText1 + '' + sName + '' + sMsgText2 + '' + sFullPath)
Strings.pas 文件将保存所有字符串数据。希望这更有意义
最佳答案
将字符串移动到单独的文件中是个好主意!它将它们保持在一起,并让您在需要时轻松更改它们。您的问题并不是说您希望能够翻译它们,但集中化将有助于实现这一目标。
但是,代码如下:
Messages.Add(sMsgText1 + '' + sName + '' + sMsgText2 + '' + sFullPath)
不比这样的代码更好:
Messages.Add('The voucher was NOT sent to ' + sName+
' because the application is in TEST MODE.');
您已将一个困惑但可读的函数调用变成了一个困惑且不可读的函数调用。使用旧代码(上面的第二个片段),您可以阅读代码并大致了解消息将要说什么,因为其中很多内容都是文本形式的。使用新代码,您就不能这样做。
其次,移动字符串的原因是为了将相关项目放在一起并更容易更改它们。如果您想更改上述消息,而不是说“路径‘bar’中的文件‘foo’...”,而是改为“文件 bar\foo 是...”,该怎么办?你不能:消息的构建方式仍然是固定的并且分散在整个代码中。如果您想以相同的方式更改多条消息的格式,则需要更改许多单独的位置。
如果您的目标是翻译消息,这将是一个更大的问题,因为翻译通常需要重新措辞消息而不仅仅是翻译组件。 (例如,您需要更改消息中包含的子项目的顺序 - 您不能仅仅假设每种语言都是顺序替换中的短语对短语。)
我建议对您的消息代码进行更积极的重构。当您建议将邮件移至单独的文件时,您绝对是在正确的轨道上。但不要只移动字符串:还要移动函数。不要在代码中分散大量 Messages.Add('...')
,而是找到您创建的消息的公共(public)子集。很多都会非常相似。创建一系列可以调用的函数,以便使用单个函数实现所有类似的消息,并且如果您需要更改它们的措辞,可以在一个位置完成。
例如,而不是:
Messages.Add('The file ' + sFile + ' in ' + sPath + ' was not found.');
... and elsewhere:
Messages.Add('The file ' + sFileName + ' in ' + sURL + ' was not found.');
只有一个功能:
Messages.ItemNotFound(sFile, sPath);
...
Messages.ItemNotFound(sFileName, sURL);
你得到:
ItemNotFount(item, path)
,这会导致对我来说听起来不错:)
关于delphi - 单独 .pas 文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712117/
我在 Delphi 2007 中制作了一个组件,现在我想让它与新版本的 Delphi 一起使用,所以我必须更改使用 使用控件; 到 使用 {$if CompilerVersion > 21}Vcl.C
Delphi 10 Seattle 引入了 Winapi.Security.pas。我尝试升级的项目(一个包)已经有一个 Security.pas 文件。除了从项目的范围名称列表中删除 Winapi(
通过 VCL 进行调试时(必须打开 debug dcus!),您经常(在某些情况下大多数时间)单步执行汇编代码,尤其是像“_IntfClear”这样的例程。 (删除 System.pas 没有帮助,因
如何在项目中包含.pas? 该.pas与另一个文件夹位于同一文件夹中,但不会与其他文件夹一起出现。 有人可以帮助我吗? 最佳答案 转到项目->添加到项目(Shift + F11),然后选择要添加到项目
当字符串跨越多行时,有没有一种好的方法可以将字符串分配给变量? 原因是我有一些大型 SQL 语句(我想要在 pas 中使用),但这样很烦人 var sql : string; begin sq
我正在尝试为 Delphi 7 安装第 3 方包。打开 DPK 后,我按下了 Install 按钮,但出现了 File not found 错误。如果我先按 Compile,然后按 Install,也
我正在使用外部 .pas 文件中的函数。我可以使用其中一些功能,但不能使用其他功能。据我所知,函数的声明方式相同,我想发布一些文件,但不知道如何发布大量代码。 最佳答案 您可以使用在接口(interf
我们有很多Delphi项目,当我之前构建它们时,我没有看到任何错误。但最近,当我构建其中一个项目时,我看到以下错误。 D:\Delphi Projects\MySetting.pas 致命:无法编译使
每次我打开项目时,它都会打开相同的 .pas 文件。即使我关闭这些文件并打开其他一些文件,当我关闭并重新打开项目时,也会打开相同的原始文件。我该如何解决这个问题? 最佳答案 只需关闭 Delphi,删
这可能不是这个问题的正确位置,如果不合适请随意移动它。我标记为 Delphi/Pascal 因为这是我在 atm 中工作的内容,但这可能适用于我猜的所有编程。 无论如何,我正在做一些代码清理,并考虑将
我正在运行RAD Studio Delphi XE2。我的一个.pas文件似乎做了些奇怪的事情。我的unit1.pas中的许多行仅被替换为“º”,而其他行则丢失。在原始文件中间的某个地方,剩下一小段代
我正在创建一个生成条形图的程序。昨天,代码编译正常,运行没有任何问题。但是当我现在尝试运行它时,会发生读取地址错误。这段代码给出了问题: for K:=0 to Length(arrIncomes)
我正在使用 Assembly 在 Delphi 中编写一些函数。所以我想把它放在一个名为 Strings.pas 的 .pas 文件中。在 uses 中使用新的 Delphi 软件。我需要编写什么才能
我正在编写自己的组件,当我将其放在表单上时,我希望它能够将 "db" 单元添加到 interface 使用子句中,因为它有一个已发布的事件,例如: TMyDBEvent = procedure(Sen
我们已将项目更新为 Delphi XE。有 .ridl 文件而不是 .tlb。但是 *_TLB.pas 文件又如何呢?如何将 .ridl 文件中的更改迁移到 *_TLB.pas 文件? Delphi
我们修改了menus.pas。 在 uses ...,Controls,...; 编译器出现 fatal error : [DCC Fatal Error] Menus.pas(*): F2051 U
我需要修补 Classes.pas 中的方法 (TReader.ReadString - 我想强制它使用指定的代码页,而不是系统默认值)。 如果我将 Classes.pas 复制到我的项目中,我最终将
将项目从 BDS 2006 转换为 Delphi 2009 后,我试图消除该项目中的大量警告。 该项目需要一个名为 MSHTML_TLB 的类型库。源文件 mshtml_tlb.pas 是一个非常大的
我正在从 Delphi 6 升级到 Delphi XE。在 Delphi 6 中,我使用 HTML 帮助文件 (.chm) 并使用 StoHtmlHelp 来制作它,以便我可以像调用 .hlp 文件一
是否有不应删除 .pas、.dfm 和 .dpr 文件的经验法则? 在打开/处理相关项目文件时,IDE 会在同一个项目文件夹中自动创建 Unit1.pas、Form1、Unit1.dpr 等。由于它们
我是一名优秀的程序员,十分优秀!