小编Hol*_*rwa的帖子

TStringList与TList <string>

使用标准有什么不同

type 
  sl: TStringList 
Run Code Online (Sandbox Code Playgroud)

与使用通用TList相比

type 
  sl: TList<string>
Run Code Online (Sandbox Code Playgroud)

据我所知,两者表现完全相同.

这只是做同样事情的另一种方式吗?

是否存在一个比另一个好的情况?

谢谢!

delphi generics tstringlist

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

如何使用TortoiseSVN创建旧版本的分支?

我有一个存储库,在修订版1中添加了文件夹主干,分支和标签.来源保存在行李箱中.修订版7发生了,开发工作一直持续到第16版.现在我必须继续修订第7版,所以我想创建第7版的分支.

以下是我尝试这样做的方法:使用TortoiseSVN,我在存储库浏览器中选择trunk,打开"显示日志",选择版本7并右键单击"从修订版创建分支/标记".出现复制(分支/标记)对话框,其中FROM-URL设置为trunk,我输入.../branches/new_branch_name作为To-URL.检查"存储库中的特定修订"并将其设置为7.

现在我收到一条错误,说"路径...../trunk在修订版7中不存在".但是在版本1中肯定创建了trunk,如果我在"显示日志"对话框中查看修订版7的更改文件,我可以看到在trunk中添加/修改了文件.

我究竟做错了什么?

svn tortoisesvn

26
推荐指数
3
解决办法
2万
查看次数

Delphi文件类型

我正在寻找可以与Delphi项目(所有版本的Delphi)相关联的所有文件类型的列表,更具体地说是应该在源代码控制下的所有文件类型.

这个网站没有提到Delphi 2009,所以我不确定是否有新的文件类型.

是不是可以直接从Codegear获得这样的列表?


将所有答案放在一起,这是一个列表:

文件 - >源代码管理

  • .bdsgroup - 项目组
  • .bdsproj - 项目
  • .bpg - 项目组
  • .cfg - 项目配置
  • .dfm - Delphi表格
  • .dof - 项目选项
  • .dpk - 包
  • .dpr - 项目
  • .dproj - 项目
  • .pas - Pascal文件
  • .res - 资源文件
  • .todo - IDE Todo

我不确定这些:它们应该被包括在内吗?

  • .dem
  • .dro
  • .本地

也许还有什么遗失?

delphi version-control

19
推荐指数
2
解决办法
8478
查看次数

编译器提示:"内联函数'......'尚未扩展......"

在一个单元中我使用该函数DeleteFile,编译器输出一个提示:

"H2443内联函数'DeleteFile'尚未展开,因为在USES列表中未指定单位'Windows'"

Uses那里SysUtils,它定义DeleteFile(虽然内部调用Windows.DeleteFile).

这个提示意味着什么?如果我Windows加入该Uses条款,它已经消失了,但我想了解困扰编译器的是什么.

delphi winapi

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

最佳实践:每次传输后保持TCP/IP连接打开或关闭?

我的Server-App使用TIdTCPServer,多个客户端应用程序使用TIdTCPClients连接到服务器(所有计算机都在同一个LAN中).

有些客户只需要每隔几分钟就联系一次服务器,其他人每秒钟就会联系一次,一次只需要每秒20次.

如果我保持客户端和服务器之间的连接打开,我将保存重新连接,但必须检查连接是否丢失.

如果我在每次传输后关闭连接,则每次都必须重新连接,但不需要检查连接是否仍然存在.

做这个的最好方式是什么?

我应该以哪种频率进行数据传输?

两种情况的其他优点/缺点是什么?

delphi tcp indy delphi-2009 indy10

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

Form.Release + NIL

如果在使用表单后调用Form.Release,它将释放所有相关内存但不将表单变量设置为nil.

if not assigned (Form1) then
  begin
    Application.CreateForm(Tform1, Form1);
    try
      // Do something
    finally
      Form1.Release
    end;
  end;
Run Code Online (Sandbox Code Playgroud)

为了能够再次调用相同的代码,Form1必须在某个时候设置为nil.从发布的描述我做不到

Form1 := nil;
Run Code Online (Sandbox Code Playgroud)

在Release之后,因为Release程序将在被调用之后和实际释放表单之前直接返回.我无法检测Form.Release何时完成将表单var设置为nil.

做这个的最好方式是什么?

delphi winapi vcl

11
推荐指数
3
解决办法
7278
查看次数

尝试将WC重新定位到新存储库时出现问题

我有几个工作副本从旧存储库中检出.
旧存储库现在组合到一个新存储库中,因此存储库名称和新存储库中的位置已更改.
现在我想将这些工作副本重新定位到新位置到新存储库中.

在使用TortoiseSVN进行重定位时,我收到警告:

您似乎正在尝试工作副本重定位到同一存储库中的其他路径.
来源:https://开头老仓库/ oldpath /文件夹
为:https://开头的新版本库/ NEWPATH /文件夹
只需要一个移居如果路径一个仓库发生了变化.
更改为不同的路径的存储库通过开关操作来完成.

但它不是同一个存储库中的不同路径.它确实是一个新创建的存储库,具有不同的路径/名称.
当我进入警告并继续重定位时,我收到一个错误:

' https:// new-repository/newpath/folder ' 的存储库有uuid'd3b83275-bf16-aa42-9467-f8a402003233',但WC有'30e22be1-af51-d84d-ad8f-d4e8545a4735'

我的错误在哪里?

svn tortoisesvn

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

使用TortoiseSVN移动目录的正确方法是什么?

如果我通过将目录拖到Tortoise中的新位置将目录移动到同一存储库中的另一个位置,我无法在移动之前签出修订,因为这些旧版本的URL不再有效.

如何移动目录仍然可以在移动之前访问修订版?


示例:如果我搬家

trunk/folder1/source
Run Code Online (Sandbox Code Playgroud)

trunk/folder2/source
Run Code Online (Sandbox Code Playgroud)

然后我可以在folder2下看到"source"文件夹,我可以查看头部修订版,这意味着产生移动的修订版.

但是,如果我尝试签出在移动之前提交的旧版本,我会收到一个错误,即该URL不存在.我想这是因为旧修订版的网址仍指向旧路径.

但是必须有一种方法可以解决这个问题,否则,如果您放弃对较旧版本的访问,那么移动就没有意义.

svn tortoisesvn

8
推荐指数
1
解决办法
6000
查看次数

如何正确访问后台线程中创建的查询结果?

我想在后台线程中执行数据库查询.OmniThread库将帮助我完成所有的线程,但到目前为止我还有一件事情我不明白:

每个线程都需要单独的数据库连接.后台线程因此创建数据库连接,创建查询然后执行它.

现在我可以使用后台线程的查询对象访问查询结果.
但是在执行查询之后,我想在线程中访问查询结果.

如果我只是引用后台线程查询对象,这是否会导致问题,因为我正在访问另一个线程中的数据库连接?

据我所知,在这种情况下,主线程不会有它独立的数据库连接,并使用后台线程中的那个并不好.

我的想法在哪里被扭曲,这是做正确的方法?

database delphi multithreading delphi-2009

7
推荐指数
2
解决办法
924
查看次数

Firebird:DBExpress还是原生组件?

我从Firebird开始,已经找到了Devart访问数据库的组件.它们提供本机组件(IBDAC)或DBExpress驱动程序.(我使用的是不包含Firebird驱动程序的Delphi XE2 Pro)

我猜本机组件要快一点,但这对我来说并不重要.

每种方法的优点/缺点是什么?为什么我应该选择其中一种?

delphi firebird dbexpress delphi-xe2

7
推荐指数
2
解决办法
4093
查看次数