小编MGH*_*MGH的帖子

为什么我的程序不能识别映射的UNC路径?

从我的Delphi程序写入Windows 7中的映射网络驱动器(P :)时遇到一些问题.例如,当我尝试时,ForceDirectories('P:\test\folder')我收到错误(找不到路径).

我尝试在代码(ForceDirectories('\\computername\share\test\folder'))中键入UNC路径并且可以正常工作.但是,ExpandUNCFileName('P:\')似乎没有用; 它返回'P:\'.在Windows XP上,ExpandUNCFileName('P:\')返回UNC路径.

如何在Windows 7上获取Delphi中的UNC路径,或以其他方式写入映射的网络驱动器?

经过进一步调查,就好像我在Windows中缺少某种初始化.我有另一个使用TcxShellComboBox(一个DevExpress组件)的应用程序(app2 ).导航到P:在组合框中,在app2中,调用ExpandUNCFileName在第一个应用程序中正常工作.与FileExistsP:下的on文件相同,在app2中导航到P:之前返回False,在计算机重启之后返回true.

delphi unc network-drive delphi-2007 windows-7

6
推荐指数
1
解决办法
8790
查看次数

使用备用注册表项启动Delphi

我发现此文档表明您可以使用备用注册表项启动Delphi.但我无法让它工作(使用Delphi 2007,也尝试过2010).我的捷径的目标是

"C:\ Program Files\CodeGear\RAD Studio\5.0\bin\bds.exe"-pDelphi -rHKEY_CURRENT_USER\Software\Borland\BDS\5.0

当我运行Delphi启动时没有加载任何包. 我以错误的方式传递密钥吗?这是2007/2010期间的功能吗?(它似乎在那里,因为在启动时正常加载的包没有加载)

我想要解决什么?:

我使用不同版本的第三方组件有不同的发行版.当我需要修复旧分支上的错误时,UI(使用后来的第三方版本运行)更改dfm,使用部分ect.适合在UI中安装的版本.旧的分支仍然链接旧版本的第三方,并崩溃

delphi delphi-2007

6
推荐指数
1
解决办法
1289
查看次数

如何将shorttring数组传递给方法

我想创建一个以shorttring数组作为参数的过程

procedure f(const a, b: Array of shortstring);
Run Code Online (Sandbox Code Playgroud)

我想用已知长度和已知长度的短串的数组来称呼它,例如

var
  A, B: array[1..2] of string[5];
  C, D: array[1..40] of string[12];
begin
  f(A,B);
  f(C,D);
end;
Run Code Online (Sandbox Code Playgroud)

这导致编译器错误E2008不兼容的类型.这是为什么?我可以编写一个可以获取shorttring数组的过程(任何长度的数组/字符串)吗?

为什么要使用短裤?

缺点是现有记录中的字段.这些记录有很多短线串.为了将数据从turbo power B-Tree Filer迁移到SQL数据库,一步是将记录转换为数据集,然后返回记录,以确认所有字段都在两个方向上正确转换.我一直在使用CompareMem记录来检查这一点,但它没有提供关于转换错误所在的字段的足够信息.因此创建了一个小程序,从记录定义中可以生成代码来比较两个记录.对于这个代码生成器,我需要一个函数来比较shorttrings.它最终CompareMem用于短线.

arrays delphi delphi-2007

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

字符串生存期管理,在记录中

我正在努力摆脱短串.目前在我们的计划中使用的很多地方之一是记录.这些记录很多都保存在AVL树中.

使用的AVL树是一个通用树ElemSize,它包含一个指向多个字节()的指针,这些字节到目前为止运行良好.AVL树中每个记录的内存分配GetMem和复制Move.但是,如果string是指向引用计数结构的指针,则将内存复制回记录不再有效,因为引用的sting经常被释放(通过引用计数自动).只有一个指针和"数据块"的大小,我认为不可能增加字符串的引用计数.

我正在寻找一种方法来获取在AVL树中存储记录时要考虑的叮咬的引用计数.

我可以将记录类型传递给树构造函数,然后将指针强制转换为此类型,从而增加引用吗?或者类似的修复,我可以将更改隔离到主要在AVL单元中并调用它的构造函数.

用于分配存储AVL记录的空间的当前代码; XData是指向要存储的记录的指针:

New(RootPtr); { create new memory space }
GetMem(RootPtr^.TreeData, ElemSize);
WITH RootPtr^ DO BEGIN
    { copy data }
    Move(XData^, RootPtr^.TreeData^, ElemSize);
Run Code Online (Sandbox Code Playgroud)

delphi record reference-counting delphi-2007

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