当创建一个构建服务器来清理版本控制检查和给定源存储库或项目中的所有内容的完整系统构建时,XE3 Win32/Win64项目所需的最低Delphi安装空间是多少?(核心系统 - 不是第三方组件)
我更喜欢有一小部分文件可以包含在存储库中,而不是完整的Delphi安装.
我想知道如何找出程序/进程使用的端口.我想知道一个进程中使用过的端口,然后在标签中写入.
有可用的单位或功能吗?
我想用Delphi XE2/XE3标准System.Zip单元替换zip存档中的文件(=删除旧文件并添加新文件).但是没有替换/删除方法.有没有人知道如何在不需要提取所有文件并将其添加到新存档的情况下实现它?
我有这个代码,但如果它已经存在,它会再次添加"document.txt":
var
ZipFile: TZipFile;
SS: TStringStream;
const
ZipDocument = 'E:\document.zip';
begin
ZipFile := TZipFile.Create; //Zipfile: TZipFile
SS := TStringStream.Create('hello');
try
if FileExists(ZipDocument) then
ZipFile.Open(ZipDocument, zmReadWrite)
else
ZipFile.Open(ZipDocument, zmWrite);
ZipFile.Add(SS, 'document.txt');
ZipFile.Close;
finally
SS.Free;
ZipFile.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
注意:我之前使用过TPAbbrevia(完成了这项工作),但我现在想使用Delphi的Zip单元.所以请不要回答"使用其他图书馆"之类的内容.谢谢.
我们想要启动一个大型的多层应用程序.服务器端应用程序必须同时响应超过1000个用户.我们想用64位编译器和客户端用32位创建服务器应用程序.在这种情况下,我们不知道DataSnap可以毫无问题地响应所有客户端吗?在这种情况下,服务器计算机非常强大(多处理器和超过16GB的RAM),数据库管理系统是FireBird 2.5.
如果您使用php,您可以在编程语言中看到php具有关联数组(或数组宽度字符串键).例如:
$server['hostname'] = 'localhost';
$server['database'] = 'test';
$server['username'] = 'root';
$server['password'] = 'password' ;
// 2d array
$all['myserver']['hostname'] = 'localhost' ;
Run Code Online (Sandbox Code Playgroud)
但是在delphi中找不到任何默认的使用关联数组的方法.
首先,我希望找到任何输出组件或类的默认方式.第二,如果真的我无法用内部方式找到我强制只选择输出类.
我使用Delphi XE3,非常感谢您的帮助.
编辑:我在这里找到了一个类:http://www.delphipages.com/forum/showthread.php?t=26334
与php相同,但有更好的方法吗?
在Delphi XE3下安装组件是一场噩梦.
首先,我需要添加源文件
工具 - > 选项 - > 库
然后我需要找到一个普通的包并编译它
这非常繁琐且容易出错.有没有更好的方法来安装组件?
我找到了Delphi Package Installer.不幸的是它不支持Delphi XE3或更高版本.
我听说有类似的东西生产exe自己安装的软件包(类似于Inno Setup),但我找不到这样的东西.
我的第一个问题 - 这是Delphi XE3的新安装.我认为动画GIF支持现在内置于Delphi(自2007年以来?).
当我在我的表单上删除TImage时,一切都很好,直到我用动画GIF文件填充图片字段.一旦我这样做,IDE就会将以下内容添加到我的uses子句中
uses ... , Vcl.Imaging.GIFImg, GIFImage;
Run Code Online (Sandbox Code Playgroud)
那时,IDE和编译器说它找不到GIFImage.dcu
[dcc32 Fatal Error] pco.pas(7): F1026 File not found: 'GIFImage.dcu'
Run Code Online (Sandbox Code Playgroud)
我搜索了我的系统,我没有在任何地方找到GIFImage.dcu文件.某些RAD Studio文件夹中有一些TGIFImage文件 - 如.bpl,.bpi,.dcp,.lib和两个.hpp文件 - 一个用于TGIFImage和GIFImage.
如果我从Finn的网站http://www.tolderlund.eu/delphi/下载GIFImage的东西,然后将GIFImage.pas文件放入我的项目中,情况就会自行解决.
但根据这篇文章如何使用delphi形式的动画Gif,GIFImage现在内置于Delphi中,所以我认为我不应该这样做......所以我在这里缺少什么?TIA.
在Delphi XE3中,Copy函数可用于包含或不包含第三个参数的字符串类型.例如,
s := '1234567890';
Writeln(Copy(s, 2));
Run Code Online (Sandbox Code Playgroud)
如果为32位EXE编译,则上面打印234567890.但是,当相同的代码编译为64位EXE时,它将不会打印任何内容.
为什么是这样?当将32位应用程序移植到64位时,我必须将所有这些代码实际更改为例如Copy(s,2,Length(s) - 1).
我主要是C++程序员,我已经习惯了具有类似于类模板std::unique_ptr,std::shared_ptr表达我的对象的所有权等.Delphi的标准库中是否有类似的东西?在编写代码时,是否有任何表达对象所有权的最佳实践?
编辑:由于C++ 11成为标准,有两个轻量级助手类,std::shared_ptr和std::unique_ptr.
如果我创建一个类型的变量std::shared_ptr<int>,它表示一个指向具有共享所有权的int的指针:引擎计数引用,当引用计数达到零时,指针将自动释放.这种类型表示一种"共享所有权",其中许多对象共同负责在完成资源时销毁资源.
相反,std::unique_ptr表达单一所有权.当unique_ptr超出范围时,将自动释放资源.std :: unique_ptr无法复制:一次只能有一个对象拥有此资源,并且只有一个对象负责清理对象.
将这些轻量级类与一个指向int的裸指针进行对比,它可以表示共享所有权,唯一所有权,或者它可以只是对其他地方的对象的引用!类型告诉你什么.
我的问题是:由于Delphi支持对对象的引用,是否有任何机制可以明确说明"我是这个对象的唯一所有者,当我完成它时,我会释放它",vs"我只是保留一个引用此对象以便与它进行交互,但是其他人会清理它"vs"我与许多其他对象共享此对象,并且最后拥有它的任何人都可以清理它."
我知道Collections.Generics有不同的集合,比如TListvs TObjectList,其中TObjectList将释放存储在其中的成员,但TList不会.你可以说TObjectList"拥有"它的元素,而TList则没有.这是我的问题的本质,真的.在设计我自己的课程时,有没有办法在语言中直接表达这些所有权问题?或者是否有开发人员常见的最佳实践/命名约定?
我之前在Delphi XE2时间框架中问过这个问题,然后答案是一个非常丑陋的黑客.
根据官方发布的说明,现在Delphi XE3支持非客户端主题.你如何在Firemonkey FM2中的Delphi XE3中做到这一点?
我认为它必须与风格书有关,但我无法弄明白.表单本身有一个"EnableBorderStyling"属性,我设置为true,我想我必须加载包含一些非客户主题数据的样式,但我找不到包含它的样式.
帮助与此主题无关.
Update2好吧,它没有被破坏,只是因为我没有包含这个样式元素的样式(正如RRUZ所说).
procedure TForm1.FormShow(Sender: TObject);
begin
StyleBook := StyleBook1;
WindowBorder.UpdateStyle;
end;
Run Code Online (Sandbox Code Playgroud)
Update3:样式文件似乎位于两个不同的位置,这令人困惑:
C:\Program Files (x86)\Embarcadero\RAD Studio\10.0\Redist\styles\Fmx
C:\Users\Public\Documents\RAD Studio\10.0\Styles
Run Code Online (Sandbox Code Playgroud)
请注意,我在任一点上都没有Luna.Style(firemonkey样式),但使用样式编辑器工具只需5秒.(打开,另存为,并将类型更改为.Style,我有一个!)
UPDATE4:RRUZ的答复工作,但我的系统(Windows 8 RTM)的非客户端的风格不看的权利,他们周围的地区白角on't完全绘制.调整窗口大小使它消失,我很清楚我应该能够强制使用WM_NCREPAINT或其他东西,然后让它消失.
delphi ×10
delphi-xe3 ×10
arrays ×1
associative ×1
build-server ×1
c++ ×1
components ×1
copy ×1
datasnap ×1
delphi-xe2 ×1
firebird ×1
firemonkey ×1
installation ×1
key ×1
multi-tier ×1
networking ×1
ports ×1
zip ×1