我有一个控制台应用程序,当输出重定向(外部)到文件或管道(myapp.exe>Foo.bar)时必须禁用或启用某些操作如何检查我的Delphi控制台应用程序是否已重定向到文件或管道? 最佳答案 您可以使用GetStdHandle和GetFileType功能。首先使用GetStdHandle函数检索控制台输出句柄,然后可以使用GetFileType函数检查句柄的类型。{$APPTYPECONSOLE}{$R*.res}usesWindows,SysUtils;functionConsoleRedirected:Boolean;varF
我想将这些属性作为整数值获取一个文件。 最佳答案 尝试functionFileAge(constFileName:string;outFileDateTime:TDateTime):Boolean;来自SysUtils。 关于windows-如何在Delphi中获取文件的创建/最后修改日期?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/144453/
我对Delphi10.2Pascal编程语言中的特定编程问题有疑问。StringOfChar和FillChar在2012年之前发布的CPU上的Win64版本构建下无法正常工作。FillChar的预期结果只是在给定内存缓冲区中重复8位字符的普通序列。StringOfChar的预期结果相同,但结果存储在字符串类型中。但实际上,当我使用10.2版本的Delphi编译在10.2之前的Delphi中运行的应用程序时,我们为Win64编译的应用程序在2012年之前发布的CPU上无法正常运行。StringOfChar和FillChar不能正常工作——它们返回一个由不同字符组成的字符串,尽管是重复的模
该软件基于Delphi7构建。在我的XP机器上,表单会按预期调整大小。但是,在两台Vista机器上,我的组件的anchor设置为[akLeft、akTop、akRight、akBottom],但是当我调整表单大小时,组件不会随表单一起拉伸(stretch),在右侧和底部边缘留下空白.在XP机器上,组件可以正确地拉伸(stretch)。因此,Vista机器似乎忽略了anchor属性。知道是什么原因造成的以及如何解决吗?重要更新(François):我们的D2007应用程序和所有x64窗口都遇到了同样的问题。安德烈亚斯的回答确实是解决办法。所以它与D7或Vista无关。
我需要在Delphi的域中为Windows机器获取一个完全限定的域名。我试过使用LookupAccountSid但它只给我netbios域名,在我的例子中,它是“intranet”,但我需要完整的“intranet.companyname.com”有什么想法吗? 最佳答案 试试GetUserNameExWindowsAPI函数。constNameUnknown=0;NameFullyQualifiedDN=1;NameSamCompatible=2;NameDisplay=3;NameUniqueId=6;NameCanonical
在Windows98时代之后,我们多次遇到一些对话框失去其Z顺序并返回到以前的形式。例如:Dialog1.ShowModal;Dialog1.OnClickButton():ShowMessage('anything');出现MessageBox时,有时没有焦点,移到Dialog1下。用户对此感到困惑,他们说:我的应用程序卡住了!!!但是,如果他们使用Alt+Tab移动到另一个应用程序并返回,焦点将返回到MessageBox,它将成为前景窗口。我们在ShowMessage、MessageBox、普通表单和QuickReport表单中遇到过这种情况。有人知道吗?它是Windows错误吗?
总结:我所使用的术语寻找似乎是“自然的排序”。对于操作系统中的行为:对于Windows(版本>=XP),Windows资源管理器利用自然排序。对于Linux终端:使用“ls-v”而不是普通的“ls”以获得自然排序。要在Delphi中编程,请使用StrCmpLogicalWWindowsAPI进行自然排序。对于Delphi&Kylix&Lazarus中的编程,使用手工制作的函数来获得自然排序:(1)MartinPool的用于自然顺序字符串比较的Delphi包装器。http://irsoft.de/web/strnatcmp-and-natsort-for-delphi(2)来自davek
Delphi中可以使用哪些函数来播放声音文件? 最佳答案 这是最快的方法:usesMMSystem;procedureTForm1.Button1Click(Sender:TObject);beginsndPlaySound('C:\Windows\Media\Tada.wav',SND_NODEFAULTOrSND_ASYNCOrSND_LOOP);end;procedureTForm1.Button2Click(Sender:TObject);beginsndPlaySound(nil,0);//Stopsthesoundend
我试图让Windows8.1识别我一直试图构建的DelphiXE6应用程序(演示程序),并让它识别我的应用程序是Per-MonitorDPI感知的,这完全是通过list技术。DelphiXE6(以及所有其他类似的Delphi最新版本)使得在项目选项中添加list变得容易,我已经这样做了。这是我使用MSDN资源确定的.manifest内容。我怀疑它可能有点不正确。如果你想尝试这个list,制作一个空的VCL应用程序,使用这个内容作为你的list,并添加代码(代码目前附在我对这个问题的回答中)。True有没有人让这个工作?我发现上面的内容没有被识别。如果我调用SetProcessDPIAw
今天升级到Delphi12后,编译运行原来的项目,出现“[FireDAC][Phys][SQLite][sqlite3]-303.Capabilityisnotsupported”的错误。经过查找文档,发现是FireDACSQLite版本更新导致的。RADStudio12.0支持SQLite3.42,同时保留了使用FireDAC加密(FDE)的SQLite3.31.1的选项。由于SQLite3.42版本放弃了FireDAC用于加密支持的机制,所以它不能再使用。因此,使用FireDAC和SQLite有三种不同的方式:1、使用最新版本,不使用FireDAC加密。2、使用付费的SQLiteEE(具有