出于某种原因,最近我的许多客户端系统上的*.UDL文件不再兼容,因为它们曾被保存为ANSI文件,后者不再与预期的UNICODE文件格式兼容.最终结果是一个错误对话框,指出"该文件不是有效的复合文件".
以编程方式打开这些文件并保存为unicode文件的最简单方法是什么?我知道我可以通过在记事本中打开每个文件然后保存为同一个文件但在保存为对话框的编码部分中选择"unicode"来执行此操作,但我需要在程序中执行此操作以减少支持调用.
这个问题很容易复制,只需在目录中创建一个*.txt文件,将其重命名为*.UDL,然后使用microsoft编辑器进行编辑.然后在记事本中打开它并将其另存为ANSI编码文件.尝试从udl编辑器打开udl,它会告诉你它的损坏.然后将其(使用记事本)保存为Unicode编码文件,它将再次正常打开.
包括一个展示我的问题的小项目.我有一个TPageControl与主表格对齐的.在两个标签页中的每一个上,我都有面板客户端对齐.在每个面板上,我有2个子面板和一个分割器.LH面板和分离器左对齐,RH面板客户端对齐.
基本上问题是两个选项卡之间的交互.展示:
好的,这种行为可能是根据对齐面板的规则来解释的,但有人可以建议改进操作吗?
unit Unit17;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, ComCtrls;
type
TForm17 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Panel1: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
Panel3: TPanel;
Panel4: TPanel;
Splitter2: TSplitter;
Panel5: TPanel;
Panel6: TPanel;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form17: TForm17;
implementation
{$R *.dfm}
end.
object Form17: TForm17
Left = 0
Top = 0
Caption …Run Code Online (Sandbox Code Playgroud) 我想要求用户在终止我的应用程序之前关闭所有打开的表单.
如何从打开的表单中自动获取列表?
我使用Delphi 2006中,不使用表单的自动创建,但我使用了自动创建窗体的引用var有Application.CreateForm.
致以我的问候.
我有一个包含数百个TActions的大型应用程序.它们中的每一个都被使用并实现所需的不同功能.
可以从应用程序中捕获(挂钩)所有TAction.OnExecute吗?有没有我可以挂钩的Windows消息,所以我可以记录执行的动作名称?
有时我会收到客户的错误报告,我无法解释.在Delphi中的Application.Run()之后,我收到以下错误:
EOSError: System error: Code:_5 Access denied
Call Stack Information:
-------------------------------------------------------------------
|Address |Module |Unit |Class |Procedure |Line |
-------------------------------------------------------------------
|Running Thread: ID=4352; Priorität=0; Klasse=; [Main Thread] |
|-----------------------------------------------------------------|
|772B291F|USER32.dll | | |GetKeyState | |
|772B7B96|USER32.dll | | |GetPropA | |
|772B7B5A|USER32.dll | | |GetPropA | |
|772A7BC5|USER32.dll | | |DispatchMessageA| |
|772A7BBB|USER32.dll | | |DispatchMessageA| |
|00A6D804|Program.exe|Program.dpr| | |803[369]| // Application.Run
-------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
和
EOsError: A call to an OS function failed
Call Stack Information:
-------------------------------------------------------------------
|Address |Module |Unit |Class |Procedure …Run Code Online (Sandbox Code Playgroud) 我想生成我的应用程序的两个不同版本,具有基于DEFINE的不同图标.我成功地包含了基于定义的不同资源文件,但是我无法摆脱MAINICON我项目的默认.res文件.
我添加了一个资源Version1.rc文件,其中包含以下行:
MAINICON icon "resource\icons\Version1.ico"
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用IDE编译MyProject,我总是会收到以下错误:
E2161重复资源:类型14(ICON GROUP),ID MAINICON; 保存文件C:\ MyProject\Version1.RES资源; 文件C:\ MyProject\MyProject.RES资源被丢弃.
我尝试MyProject.res使用资源编辑器进行编辑并删除MAINICON,但delphi自动似乎重新创建包含图标的文件.
如何在Delphi 2006中创建随机的64位整数值?内置的基于整数的Random()函数似乎只返回0到2 ^ 31之间的值.
鉴于我正在通过网络在计算机上执行EXE文件(D2006应用程序),我如何获取该计算机上commondocs文件夹的路径名,因为可能已从UNC快捷方式或映射的驱动器号调用EXE快捷方式,远程机器的平台不一定是已知的(但将是> = WinXP)?
在这种情况下,客户端拥有大量分散的计算机,并且他们无法在所有PC上安装我的应用程序.所以他们所做的就是在网络上的某个地方安装可执行文件,并为每个人提供快捷方式.这似乎已经很适合他们了,那里没有问题.
根据他们的要求,我让应用程序从与可执行文件放在同一文件夹中的INI文件中读取设置.我只能假设他们已经配置了所有用户可以写入该文件夹,以便可以保存INI文件.
但是,我想更改它以便读取INI文件并将其保存到远程计算机上的commondocs文件夹树中的某个位置,这样它们就不需要提供对Program files文件夹的写入权限.
我正在使用Delphi 7和Delphi 2006正在开发一个项目,我正在开发一个可以获得某些系统信息的组件.现在要求是在系统上安装组件之后,IDE上应该有一个菜单项,如下所示

而对于delphi 7这样的

我搜索过关于添加菜单项的网,但我没有得到任何东西,项添加到IDE喜欢的一个EurekaLog了.任何人都可以告诉我如何添加项目EurekaLog或mysql?它是在注册表中的某些地方吗?
在delphi 2006中有一个代码库,在过去的许多年里没有开发.如果需要激活开发有哪些选项.
似乎第二种选择更可行,但它会涉及到什么呢?我读了一些关于Unicode支持的东西,也不确定图形库支持.
为了正确看待事物,我是一名Java程序员,并且拥有C/C++方面的经验.但是,我试图从市场战略的最小阻力路径的角度来理解它.
提前致谢.
delphi ×10
delphi-2006 ×10
delphi-2009 ×1
delphi-7 ×1
delphi-xe2 ×1
forms ×1
mapped-drive ×1
menuitem ×1
networking ×1
random ×1
tpanel ×1
ttabsheet ×1
unc ×1
unicode ×1