Qt或Delphi。。。如果你选择一个而不是另一个?

如果您在进入德尔福地产或Qt地产方面存在差异,您会选择哪一种?我知道它们并不完全可比。我有一个Windows开发经验与生成器C++(几乎Delphi)和MFC(几乎QT),与更多的时间与建设者C++工作。请在分析中去掉Qt的跨平台能力 我希望与这两方面都有过合作的人能给出回复,以及他们会如何比较框架、环境等 提前感谢您的回复。我选择德尔福。只是因为我有更多的经验。我认为没有其他合理的标准 我会选择Delphi,但这可能是因为我以前编程过它。似乎仍有许多公司在使用它,几乎每个有8年以上经验的人都在

Delphi 班级帮手的好用途是什么?

Delphi(可能还有很多其他语言)有类助手。它们提供了向现有类添加额外方法的方法。没有生成子类 那么,班级帮手有什么好用呢?起初我对班级帮手持怀疑态度。但后来我读了一篇有趣的文章,现在我确信它们确实有用 例如,如果您希望现有实例类具有额外的功能,并且由于某种原因无法更改现有源。您可以创建类帮助器来添加此功能 示例: type TStringsHelper = class helper for TStrings public function IsEmpty: Boolean;

Delphi 如何获得TAnimate';在Vista和Win7上使用常见的AVIs是什么?

我有一个Delphi2007应用程序,它有一个带有FindFile公共AVI的TAnimate控件。当应用程序在Windows XP上运行时,它可以完美地工作,但在Windows 7上从未出现过任何东西。我听说它现在需要自己的线程,但我不确定 有人知道如何让TAnimate的通用AVI控件在Windows 7(或Vista)上工作吗?您必须将单元外壳动画添加到项目中,或从组件调色板的Win32选项卡添加组件。(在Windows Vista-Delphi 2007中测试) 此单元将以下替换动画资源

Delphi 是否有德尔福';操纵杆';控制

我想用鼠标将一个物体在X和Y方向上对齐。我可以通过使用各种旋转控件(或按钮)来滚动解决方案,但它很混乱,我想知道是否有一个控件(如操纵杆)可以使用鼠标提供2轴控制,并根据其位置以不同的速率触发事件?我在谷歌上搜索了“操纵杆dll”,发现了无数个。您可以将其中一个应用程序扔进您的项目中,然后从Delphi访问它的C API,只需为它编写一个TLIB头(或者不管它叫什么,已经有一段时间没有这样做了)。您可以使用DelphiX组件。据我记忆所及,它们是DirectX的包装器,其中一个包装在Direct

Delphi (保存对话框)如何在Vista/Win7中更改文件过滤器时自动更改文件扩展名?

在显示保存对话框时,我想自动钩住用户的过滤器类型更改和更改文件扩展名。(例如,与MSPaint的“另存为”操作类似。) 使用TSaveDialog并设置UseLatestCommonDialogs:=False, 我可以通过下面的代码来处理这个问题。(当然,没有最新的通用对话框支持。) 我想用Delphi2007同时支持XP和vista/7 我应该使用TFileSaveDialog而不是带有内部包装的TSaveDialog吗? (而且我必须努力使用COM编程?) 或者我可以通过TFileSave

如何在Delphi 2010中设置TTrackBar上的自定义标记?

我尝试将记号样式设置为tsManual,最小和最大位置分别设置为1和100,并在9、19、79和89处添加记号,除了控件自动显示的detault first和last之外,根本不显示记号。我尝试了其他值,但没有显示任何值。我的代码是: TrackBar1.TickStyle := tsManual; TrackBar1.Min := 1; TrackBar1.Max := 100; TrackBar1.SetTick( 9 ); TrackBar1.SetTick( 19 ); TrackBar

如何在Delphi中获取当前过程/函数的名称(作为字符串)

是否可以在过程/函数中以字符串形式获取当前过程/函数的名称?我想会有一些“宏”在编译时被扩展 我的场景是这样的:我有很多过程都有一个记录,它们都需要首先检查记录的有效性,然后将记录传递给“验证器过程”。如果记录无效,验证程序过程(所有过程都是相同的过程)会引发异常,我希望异常消息不包括验证程序过程的名称,而是调用验证程序过程的函数/过程的名称(自然) 就是我有 procedure ValidateStruct(const Struct: TMyStruct; const Sender: stri

Delphi-需要COM/OLE启动示例

自从我使用COM/OLE以来,10年已经过去了,其中90%我都忘记了。 现在我们需要创建一个COM对象来访问PHP/Python中的一些数据(这是一个特定的事情,PHP ODBC不访问数据库的输出参数,比如存储的proc输出),我的想法是,我用一个方法实现一个最小的对象,PHP/Python可以调用它来获得输出 procedure ExecSQL(Config, IP, Port, DBName, SQL, IDFieldName : variant) : output output is [I

Delphi 单击t按钮时如何显示TPopupMenu?

我想在单击按钮时显示弹出菜单,但此过程在Delphi XE中有错误 procedure ShowPopupMenuEx(var mb1:TMouseButton;var X:integer;var Y:integer;var pPopUP:TPopupMenu); var popupPoint : TPoint; begin if (mb1 = mbLeft) then begin popupPoint.X := x ; popupPoint.Y := y ; p

火鸟错误“;未定义用户名和密码";用Delphi应用

我用Delphi2006和Firebird 2.5开发了一个应用程序。对于连接,请使用Delphi中的Interbase组件。我在设计时使用用户名、密码tc和“正常工作”设置了一个TIB数据库,但当我想在另一台pc上运行应用程序时(首先在其上安装Firebird 2.5),我收到了以下错误: Statement failed, SQLSTATE = 28000 您的用户名和密码未定义。请让您的数据库管理员设置Firebird登录 这是什么?如何解决此问题?该消息明确指出,您在开发计算机设计时用

带基数的for循环在哪些其他Delphi版本中失败?

请帮助我进行回归测试,并确定以下代码在哪些Delphi版本中失败 编辑:我知道有编译器提示;事实上,这是在我继承的一个项目中发现的,该项目以某种方式关闭了编译器提示(我看到很多人都这样做,因为他们认为编译器提示总是无害的,本例表明并非如此)。 我仍然想知道,出于文档目的,这个编译器异常出现在哪些Delphi版本中 在Delphi XE、2009、2007和5中,它失败,输出如下。 我还没有时间调查其他Delphi版本。 请帮助我,并回答与其他德尔福版本失败,以及 Low/High const f

Delphi程序/函数创建帮助

我正在尝试创建一个函数来清理我的一些代码 而不是必须使用一大堆FOR循环来完成这项工作 Form1.Image1.Picture.LoadFromFile(); Form1.Image2.Picture.LoadFromFile(); Form1.Image3.Picture.LoadFromFile(); Form1.Image4.Picture.LoadFromFile(); 有没有办法做到这一点 procedure UpdateCardImage(Value,Value2,ImageX

Delphi 如何快速将数字字符数组转换为整数?

情况:在字节数组(TBytes)中保存为十六进制的整数。如果可能的话,在不进行任何复制的情况下,将该数字转换为整数类型,并减少复制次数 下面是一个例子: array = ($35, $36, $37); 这是ansi中的“5”、“6”、“7”。如何将其转换为567($273)而麻烦更少 我抄了两遍。有可能做得更快吗?怎么做 function BytesToInt(const bytes: TBytes): integer; var i: integer; begin result :=

Delphi:FastMM虚拟内存管理参考?

我最近遇到了一个问题(见我的最后一个问题),这让我更仔细地研究了Delphi应用程序中的内存管理。在我第一次探索之后,我有两个问题 我已经开始使用FastmmUsageRacker,并注意到以下几点。当我打开应用程序要使用的文件时(这也会创建表单等),应用程序可用虚拟内存的变化与“FastMM4已分配”内存的变化之间存在显著差异 首先,我对这个术语有点困惑:为什么会有一些FastMM分配内存和一些“系统分配”(和保留)内存?既然FastMM是内存管理器,为什么系统负责分配一些内存 另外,我如何获

Delphi 如何创建无法销毁的实例

假设我有一个类:TCantBeDestroyed 有人知道如何创建一种在两种情况下都无法销毁的实例,直接: 自由的; 破坏 并且不能被施法摧毁: TObjectCantBeDestroyed.自由; 毁灭;毁灭 Tks.您无法阻止任何人调用析构函数或Free,但您可以确保这样做没有任何效果: type TCannotBeDestroyed = class public destructor Destroy; override; procedure BeforeDestr

Delphi 我可以使用泛型在类似类型的控件上执行相同的操作吗?

我正在使用Delphi 2010,我有一个单元,多年来,我添加了自己的程序和功能,可用于我制作的任何项目,例如: function ListBoxIsSelected(ListBox: TListBox): Boolean; begin Result:= ListBox.ItemIndex <> -1; end; 现在,我已经以同样的方式编写了所有的过程和函数,其中我需要将组件作为参数传递。仅仅为了使用不同的组件类而不得不再次重写它们是不可行的 我如何用泛型写这个 我不明白我怎

Delphi 列表交叉点

我想计算一个列表“交集”。问题是: L1 = [1, 0, 2, 3, 1 , 3, 0, 5] L2 = [3, 5] 那么结果就是 L3 = [0, 0, 0, 1, 0, 1, 0, 1] 然后我将把这个结果转换成一个字节。在这种情况下,十进制格式为21 我想在德尔福,我需要这样做的效率。有没有比O(m*n)更好的方法来解决这个问题呢?不管您需要访问每个列表中的每个元素来比较值。嵌套循环将在O(n^2)中完成此操作,并且转换应该只是本地工作 编辑:我注意到您想要一个比O(n*m)更好的

Delphi dwscript-如何枚举所有可用类型?

哎,, DelphiWeb脚本是一个非常棒的脚本引擎。我正试图在我的一个项目中使用它。但是,我不确定是否可以枚举脚本引擎中可用的所有类型和函数,例如,我希望有一个列表,列出我在编写脚本时可以使用的所有方法(包括所有内部和外部类型、函数、过程等)。Fast脚本具有treeview组件,该组件公开了您可以使用的所有类型。我正在dwscript中寻找类似的内容。提前感谢。您将在附加到每个已编译DWScript实体的符号表(TSymbolTable)中找到所有类型,在已编译的程序、已编译的函数/方法以及

如何从Delphi中正确注册LuaUserData?

我仍然对向Lua注册Delphi用户数据感到困惑。为了教我这个原理,我尝试实现日期(时间)类型 开始时,此类型应具有三个可供Lua访问的功能: 用于创建此类型变量的new函数 一个getdate函数 以及setdate功能 最后,这个小Lua脚本应该可以工作: DT = DateTime.new() DT:setdate(1, 1, 2011) day, month, year = DT:getdate() print("Day: " .. day .. " Month: " .. month

Delphi 更改使用cxGrid生成的图形中的步骤

我用DevExpress的cxGrid制作了一个图表,在X轴上我有一个日期 但是,当图表中有大量数据时,这些日期被削减到只有2或4位数 如何更改它,使X轴仅在每5或10个值处显示文本?您应该在应用程序中实现分页。您可以通过覆盖网格的ChartView.DataController的OnDataChanged和OnFilterRecord来实现这一点: aChartView.DataController.OnDataChanged := cvChartDataControllerDataC

Delphi似乎在销毁对象之前就应该销毁对象

我正在使用DelphiXe2为Googledocs api开发一个Delphi包装器。我使用XML数据绑定向导生成了所有类。使用代码解释这一点要容易得多,因此下面是我的测试调用的函数 function TGoogleDocsApi.GetEntries : IXMLEntryTypeList; var httpHelper : IHttpHelper; xml, url : string; xmlDoc : TXmlDocument; ss : TStringStream;

创建Windows服务以打开程序-Delphi

我正在用Delphi创建一个Windows服务。我的服务需要做的基本上是打开一个程序。 在我的代码中,我使用的是WinExec(aux,SW\u SHOWNORMAL)。当我启动并运行服务时,似乎什么都没做,但当我在TaskManager中查看时,我的服务应该打开的程序在列表中,并且在用户名列中显示为SYSTEM 因此,程序正在打开,但没有显示在屏幕上。 我在谷歌做了一项研究,发现了一些函数,比如CreateProcess,但我不知道如何使用它。 我做错了什么 很抱歉我的英语不好。服务始终在会话

Delphi 创建未知数量的循环

这是我要生成的简单代码 集合的所有可能组合 范例 1,2,3: 显示: 123 132 213 231 312 321 我想创建可变数量的for循环,让用户确定给定字符串的长度 有人有想法吗 谢谢,这是事先准备好的 type TNumber = '0'..'9'; procedure TForm1.Button1Click(Sender: TObject); var Numbers: array[0..3] of TNumber; a, b, c, d: Integer;

Delphi IdUDPServer正在将标头校验和作为0x00发送

我正在用一个著名的服务器制作一个简单的UDP P2P聊天程序。 客户端通过单个IdUDPServer从服务器和客户端发送和接收数据 到目前为止,客户端可以登录和注销,也就是说,它们可以向服务器发送数据。 每当服务器发送任何数据时,它都会在节点的NIC端被丢弃,因为wireshark通知嵌入的ip报头校验和为0x00 IdUDPServer设置(客户端/服务器) 主动:正确 绑定: 广播:假 缓冲区大小:8192 默认端口:10000 IPVersion:Id\u IPv4 ThreadedEve

Delphi 在双缓冲TTreeView上自定义绘图时闪烁

以这种方式侦听TTreeView事件的AdvancedCustomDraw事件时: if Stage = cdPrePaint then begin // modify some Sender.Canvas properties and let it draw itself end else if Stage = cdPostPaint then begin // draw 'something extra' using a separate TControlCanvas

打开Windows资源管理器目录,选择特定文件(在Delphi中)

我有一个在Windows资源管理器中打开文件夹的过程,该文件夹会被传递一个目录路径: procedure TfrmAbout.ShowFolder(strFolder: string); begin ShellExecute(Application.Handle,PChar('explore'),PChar(strFolder),nil,nil,SW_SHOWNORMAL); end; 是否有一种方法可以同时向其传递一个文件名(完整文件名路径或名称+扩展名),并在Windows资源管理器

Delphi t目录观察首次未触发

我有一个小应用程序,用于处理其他程序中生成的一些文件。 我使用安格斯·约翰逊(Angus Johnson)的一个旧组件,名为TDirectoryWatch 在我的FormCreate上,我有以下代码 DirectoryWatch := TDirectoryWatch.Create(self); DirectoryWatch.OnChange := FileAction; DirectoryWatch.Directory := Folders.Path(dirInput); Dir

Delphi XE4中未找到IdStreamVCLWin32错误

我的旧Delphi 7应用程序正在一个pas文件中使用IdStreamVCLWin32单元。该装置位于以下位置 C:\Program Files\Indy 10 for Delphi\Source\System\IdStreamVCLWin32.pas 当我在Delphi XE4环境中运行相同的代码时,发现错误IdStreamVCLWin32notfound 注意:Delphi7使用的是Indy 10,但Delphi XE4使用的是Indy,这是它的默认值。我没有在Delphi XE4环境中显

Delphi 将计算字段值保存到另一个表

我已将一个新字段添加到表中,并使其成为计算字段。我想将其值保存到另一个表中。但是,我的查询(我用来插入它的值)没有将这个计算字段识别为表的一部分,并不断向我抛出一个错误,即没有这样的字段。我错过了什么 UNIQuery3.SQL.Text :='INSERT or ignore into MAIN (LOK_ID,Date,surname,name,T1,T2,T1_1,T2_2,X1)' + 'select LOK_ID,Date,surname,name,T1,T2,T1_1,T2_2,X

用于FTP服务器的DelphiOpenDialog

有没有办法使用opendialog或savedialog在FTP服务器上导航 我已尝试使用InitialDir:='ftp://ftpip“您可以编写一个shell扩展(在项目中,但在单独的DLL中),它将从远程FTP服务器创建一个虚拟文件夹。然后,您的“打开/保存”对话框将能够导航到此虚拟文件夹并在其中选择文件 有关FTP服务器如何在不使用任何第三方工具的情况下与Explorer集成的说明,请访问 我将要向您展示的解决方案并不完全指定驱动器 信件发送到FTP服务器,但它基本上也会提供相同的服

Delphi 修改存储为资源的UAC清单文件

我希望我的程序在启动时只需请求提升权限,为此,我将向Delphi源代码添加一个清单文件作为资源。这是XML文件的内容: 提高执行水平 我需要修改文件中的“YourApplicationExeName”,并添加当前的.exe名称,因为用户可以随时重命名.exe文件 我想知道的是:当用户打开可执行文件时,如何将可执行文件的新文件名添加到存储为资源的清单文件中?我知道如何获取新文件名,我只想知道如何使用新文件名更新资源文件?您所要求的是不可能的。进程从可执行文件启动。该文件在进程执行时被锁定,无法

Delphi 刷新嵌套在DataSetField中的ClientDataSet

我几乎已经完成了一些代码来解决去年这个未回答的问题: 人们普遍认为,如果不关闭并重新打开主CD,就不可能从服务器刷新嵌套的详细信息CD,但很明显,这会产生不成比例的网络流量,只刷新单个主行及其详细信息行 我想到了一个简单的方法来刷新细节CD 从服务器和它几乎工作。我下面的代码基本上是临时刷新细节的 将筛选器应用于主ADO查询以将其向下筛选到当前主行,并且在该筛选器生效时, 通过对主CD应用类似的筛选器,然后调用其刷新方法来刷新主CD。这是由主CD余弦事件触发的 只有一个小问题:在我的表单上,以

Delphi中的简单读/写记录.dat文件

由于某种原因,我的OpenID帐户即使在昨天使用时也不再存在。但无论如何 我需要将记录数据保存到.dat文件中。我尝试了很多搜索,但都与数据库和BLOB相关。我无法从中构造任何东西 我有以下记录 type Scores = record name: string[50]; score: integer; end; var rank: array[1..3] of scores; 我只需要一种从.dat文件保存和读取记录数据的简单方法。我有一本关于如何

Delphi 当Ctrl+&引用;一些关键的;有压力吗?

启动一个新的VCL应用程序,在表单上放置一个TEdit,并将其分配给OnKeyPress事件: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin Caption:=Caption+' '+IntToStr(Ord(Key)); end; 运行应用程序并按Ctrl+M或Ctrl+H时,您将在按键OnKeyPress事件中收到控制字符#13(回车)和#8(退格)。有没有办法阻止这种恼人的行为?我的意思是,当

在Delphi 7中的TIsDBLookupComboBox下拉列表上启用鼠标滚轮

我使用的是Delphi7。我有一个TIsDBLookupComboBox,一个来自IS数据控件组件选项卡的数据库combobox 它工作正常,它从数据库填充列表。。。但问题是鼠标滚轮。鼠标滚轮滚动在下拉列表中不起作用。。。我如何启用它? 我知道这是Delphi的旧版本。。。但我必须坚持下去 非常感谢 我猜,但是你没有得到任何回应的原因可能是因为没有人知道什么是TIsDBLookupComboBox。谷歌搜索它只能找到这个问题的参考资料。谷歌搜索“Delphi是数据控件”似乎也没有发现任何有用的东

Delphi7文件使用

我正在尝试创建一个ini文件来保存应用程序配置。 保存部分与编辑框1、2、3等的输入完美配合。以下是ini示例 [1server] SSHHost=ssh.com SSHPort=443 Username=user Password=123 [2server] SSHHost=ssh.com SSHPort=443 Username=user Password=123 [ProxySettings] Proxy=127.0.0.1 Port=8080 Type=http 如何使应用程序在启动时

Delphi System.IOUtils.TDirectory.GetParent异常行为?

GetParent('c:\1\2\')的结果是'c:\1\2' 而GetParent('c:\1\2')的结果是'c:\1' 这是正常/预期的行为吗?如果是,其背后的逻辑是什么?这种行为可能看起来有点奇怪,但它是故意的。此类以.net类目录为模型。for目录.GetParent显示: 此方法返回的字符串由路径中直到(但不包括)最后一个DirectorySeparatorChar或AltDirectorySeparatorChar的所有字符组成。例如,将路径“C:\Directory\SubDi

Delphi 对象检查器栅格高度是否有固定值?德尔福2010

我不得不将windows字体比例更改为150%,这样我才能看得更清楚,但是object inspector网格现在正在裁剪属性名称,是否有解决方案 这是德尔福2010 我不知道这是否有效,因为我自己也没有试过。 From:升级到最新版本的Delphi,或切换到较小的字体缩放我必须使用此版本将尝试减少缩放Delphi 10.1版本

Delphi 模式按钮在窗体上不起作用

我正在使用TActionManager显示一个表单,如下所示: procedure TForm2.actAddImagineExecute(Sender: TObject); begin addImagineForm.Show; end; 这是表单的外观: 它包含以下内容:3t按钮,1TOpenDialog和1TImage 按钮Salveaza(保存)是Button3,并将ModalResult设置为mrOk 按钮Inboca Imagine(加载图像)是Button1 按钮Cance

Delphi 使用CCR读取Exif数据。Exif导致访问冲突

我有一个名为ViewPhotos的程序,在读取Exif数据时会出现问题。我正在使用CCR.Exif(由Chris Rollistone编写)。Exif不位于项目目录中。 为了弄清楚发生了什么,我创建了一个名为TestExif的小程序,它由一个表单和一个按钮组成,调用下面所示的过程。我还复制了完全相同的过程来查看照片。TestExif使用与ViewPhotos相同的单位CCR.Exif procedure TForm1.Button1Click(Sender: TObject); var Ex

Delphi 在命令下拉组合框显示后,当鼠标移动到窗体上时,如何确保鼠标指针出现?

我的问题是: 我有一个表格,只有一个组合框 当项目3发生时,组合框具有焦点,并且鼠标未悬停在窗体上 我触发组合框的下拉列表以在按键事件中显示 当下拉列表可见,然后我将鼠标指针移到窗体上时,该指针不可见,表示正忙,或显示调整大小图标,但在窗体上时不会返回到正常指针 当组合框的下拉框显示时,当我将鼠标指针移动到窗体上时,是否可以确保鼠标指针可见 我试过: application.ProcessMessages显示下拉列表后 显示下拉列表后,将焦点更改为组合框所在的窗体 添加键:=#0 proced

Delphi WriteBuffer(Longword,SizeOf(Longword))做什么?

我是一个C#guy,我试图理解Delphi语言中的一个代码段,而类似于Stream.ReadBuffer(Value,SizeOf(Value))的东西让我觉得Value充满了Stream中的数据,我不理解下面代码段的最后一行: procedure TPodBdfStream.LoadFromFile(const FileName: string); ... // content suppressed for brevity var Stream: TStream; Value: Lon

Delphi TTreeView:按索引获取根节点计数和根节点?

每个TTreeNode都可以使用Node.Count提供其直接子节点的数量,并且我可以使用Node[index]通过索引获得任何子节点 我一直在搜索,但似乎这对于根节点是不可能的??我真的要自己数吗?如果是的话,最优雅的方式是什么 我希望有一个隐藏的根项,它只是将所有根节点都作为子节点,如果能够将所有类型的节点都作为子节点来处理,那不是很有帮助吗?例如,对于一个为所有节点做一些事情的递归函数来说?你是对的,TTreeView应该有这个,但它没有,我看不出有什么好的理由。但是,以下是一些需要考虑的

Delphi 使用自定义TToolbar组件防止将TToolbutton流式传输到DFM

我正在尝试创建一个自定义的TToolbar组件,它显示与当前任务相关的按钮 然而,我发现在设计时添加到组件的按钮存储在DFM中。我不希望按钮被存储(或在设计时可访问),因为我希望动态创建它们 (我意识到,如果csDesigning未处于ComponentState,只需添加按钮就可以防止这种情况发生,但我希望显示工具栏的设计时预览) 以下是组件代码: type TTestToolbar = class(TToolbar) private fTestButton1: TToolBu

Delphi 将5个列表框同步在一起

我现在正在做一个小项目,我想同步5个滚动列表框。列表框的名称为: KidList PointList NoteList CommentList CommentListKid 我该怎么做呢?您可以尝试以下技巧 首先,添加一个私有字段 private SyncBoxes: TArray<TListBox>; 然后定义以下插入器类: type TListBox = class(Vcl.StdCtrls.TListBox) strict private pro

Delphi Dxgettext(gnugettext)不';t在UTF-8单元上正确提取带有重音符号的字符串

我使用dxgettext来翻译Delphi 10.4项目,但是在定义了默认情况下保存为UTF文件的IDE之后,dxgettext只从.dfm文件中正确提取字符串,从.pas文件中错误地读取重音符号(它将其读取为ANSI字符串)。我可以验证这两个文件在UTF-8中的编码是否相同 我得到的字符串是holaman而不是holaman 看起来像DxGETTE是硬编码的,把所有.PAS文件看作ANSI文件。如果没有人能帮我配置dxgettext使其正确读取这些文件,我想我将不得不编写一个小工具,将所有源文