我正在将一些古老的(从2003年)Delphi代码升级到Delphi Architect XE,我遇到了一些问题.我遇到了许多类型不兼容的错误.这些错误在Delphi 6中不会发生,因此我必须假设这是因为事情已经升级.
老实说,我不知道PAnsiChar和PWideChar之间的区别是什么,但Delphi肯定知道它的区别,不会让我编译.如果我知道差异是什么,我可以弄清楚使用哪个或如何解决这个问题.
我有很多内存分配和相同数量的FreeMem调用.我没有的是在调用freemem之前检查指针是否为nil,以及释放后将指针设置为nil后的一行.
我试图创建一个函数来做到这一点
procedure FreeMemAndNil(p: Pointer; size: Integer = -1);
begin
if p <> nil then
begin
if size > -1 then
FreeMem(p, size)
else
FreeMem(p);
p := nil;
end;
end;
Run Code Online (Sandbox Code Playgroud)
但是有一个问题.它不能将原始指针设置为nil,因为参数不可变(var p:Pointer).我不能使用var,因为如果我做编译器抱怨类型必须是完全相同的类型(指针).我传递的指针可以指向任何类型的指针(PChar,常规指针等).
我该怎么做才能解决这个问题?有更好的解决方案吗?
我有一个C#程序,我想让我的用户可以使用,但问题是它需要.NET framework 4.0版.这是一个问题,因为它最近刚刚发布(2010年4月),很多人可能都没有.更糟糕的是,下载和安装框架需要一段时间(约10分钟).
有什么方法可以安装我需要的框架的一部分吗?如果不可能,我可以将代码编译为特定系统的本机二进制文件
例如.x86 32位,x86 64位等
我看过一家名为'spoon'的公司http://spoon.net/,但看起来它只是在服务器上模拟应用程序(有点像citrix).我该怎么做才能解决这个难题?
我知道Java可以作为读/写命名管道的客户端,但我需要另一个充当服务器的程序.
在这种情况下,我正在与之通信的程序必须充当客户端,而不是服务器.Java是否可以在命名管道的服务器模式下运行?
编辑:在命名管道(Windows)中有客户端和服务器模式.必须首先建立服务器,然后客户端才能连接到该服务器.我有一个遗留应用程序充当"客户端",这意味着它连接到它假设的已经建立的命名管道.我有一个新的java应用程序,我希望使用命名管道与这个遗留应用程序进行通信.我只找到了如何使用Java命名管道连接到以前建立的命名管道的示例.
我有一个简单的字符串,由一些字符分隔,让我们说一个逗号.我应该能够创建一个TStringList并将其分隔符设置为逗号,然后将DelimitedText设置为我要解析的文本,并且应该自动解析它.
问题是,当我查看输出时,它还包含空格作为分隔符并填充我的结果.我怎样才能避免这种情况,或者有更好的方法来做到这一点.
过去几个月,我的德尔福装置一直在走下坡路.虽然我在构建一个版本时经常会出现奇怪的错误,如果我构建,然后编译,然后构建,编译等,它们就会得到解决.
我和另一位认为这是编译器错误的开发人员交谈过.随着时间的推移,这种性能下降的性能也发生在我们的其他计算机上.
堆栈溢出认为可能是什么问题.
自从我不得不解析任何比CSV或XML更难的文件以来,已经有几年了,所以我没有实践.我被赋予了在Delphi应用程序中解析名为NeXus的文件格式的任务.
问题是我只是不知道从哪里开始,我是否使用了标记器,正则表达式等?也许甚至教程可能就是我现在所需要的.
我听说很多人都在谈论一种新版本的语言现在如何支持unicode,以及unicode的成就有多少.能够支持新角色的重要性是什么?它似乎很少被使用,但人们常常提到它.人们使用甚至关心unicode的好处或原因是什么?
我有一个原本为Linux制作的脚本,但适合在Windows中运行Cygwin,如果你已经有可执行文件(sh,cp,mv等),那么你可以在没有Cygwin的情况下运行它.唯一的问题是该脚本还使用了几百个(是数百个)其他可执行文件.有什么办法可以将这个脚本编译成常规可执行文件并将这些其他支持文件打包为资源吗?
该脚本长约1600行,这可能太长了,无法在C++中手动重新实现.我希望将脚本编译成windows可以执行的东西,而不必编辑包含一堆第三方可执行文件的路径.一种包含所有这些的方法.
我试图隐藏 Delphi 在 StringGrid 中当前选定的单元格周围绘制的边框(焦点矩形)。我正在做所有者绘图来自定义字符串网格的外观。我已经成功地摆脱了除了选择之外的所有内容。
我正在使用
GR.Left := -1;
GR.Top := -1;
GR.Right := -1;
GR.Bottom := -1;
StringGrid.Selection := GR;
Run Code Online (Sandbox Code Playgroud)
但如果你设置得非常快,就会出现错误(我在 onMouseMove 中运行它)。我的意思是它工作得很好,但是如果我足够快地调用这个特定的代码块,我会在 StringGrid 的渲染中遇到异常(因此我不能只是放弃尝试,除了它周围)。
关于如何可靠地解决这个问题有什么想法吗?
delphi ×6
compilation ×2
delphi-6 ×2
parsing ×2
windows ×2
.net ×1
.net-4.0 ×1
bash ×1
binaries ×1
c# ×1
file ×1
format ×1
java ×1
memory ×1
named-pipes ×1
native ×1
ownerdrawn ×1
parameters ×1
stringgrid ×1
tokenize ×1
tstringgrid ×1
tstringlist ×1
unicode ×1
widechar ×1