可以GO作为一个应用程序中的脚本语言?我找不到任何关于此的信息:是否有一个动态链接库版本,可以通过一些标准方法从Windows应用程序接口,如Compile(),Execute和回调,变量共享等功能?
我知道 StatusMsg只能在[运行]选项中使用.我想在[Code]选择中使用相同的,请帮我解决这个问题,
先谢谢,塞缪尔J
我正在使用Delphi 7构建一个应用程序.我在主窗体上添加了一个按钮.在该按钮上单击我想显示另一个表单.我只是在用户第一次点击该按钮时才尝试创建第二个表单.如果用户再次单击该按钮,则应显示已创建的表单.Form对象是否具有任何属性,我们可以通过该属性直接检查它是否已经创建?
在Delphi应用程序中定义win7兼容图标集的正确方法是什么?(桌面上的可变大小)
我设计了256*256图标,然后制作了16*16,24*24,48*48变体.(在Microsoft UX指南中,他们似乎说应该包含这些大小以便在桌面上正确显示).
我已将所有图标变体放在Gimp中的多层文档中,并将整个内容导出为ico.然后我将它作为项目选项中的应用程序图标,按照向应用程序分配图标的直接方式.
最后我在Win桌面(win7)上放了一个shorcut,但在桌面(Win 7)上制作"Ctrl + Wheel"(调整桌面图标的大小,如果你还不知道......)时,正确的图标是没有显示,48*48之后它保持相同的大小(我怀疑只使用了48*48版本).
在一个包中,我有一个实现ToolAPi IOTAIDENotifier接口的组件.包可以设置,编译并显示在调色板上.这个组件的一个方法被设计用于在使用它的项目被编译(并且不被执行)时执行特定的操作...到目前为止,一切都可以.
当我在属于另一个项目的TForm上使用此组件时,问题会出现.当我尝试构建它时,我得到编译器消息File not found:ToolsAPI.dcu.
以下是该软件包的用途:
Uses
{$IFDEF PACKAGESETUP} DesignIntf, DesignEditors,{$ENDIF}
Classes, ToolsAPI;
Run Code Online (Sandbox Code Playgroud)
PACKAGESETUP仅在编译bpl时定义
当我双击错误消息时,IDE将打开文件,从该文件中声明对ToolsAPI的引用...如何摆脱此问题?
这两种语法有什么区别?
Type
AnIntType = Integer;
AnotherIntType = Type Integer;
Run Code Online (Sandbox Code Playgroud)
我注意到第二个版本在程序参数(如Var/Const)中使用时兼容性较差,但不是AnIntType和AnotherIntType完全相同吗?
我有一个简单的基于浮点的操作,总是执行两次.所以我试图把它翻译成SSE,但它失败了.高级语言是Delphi,因为它不支持内在函数,所以我必须编写完整的东西.基本上我只有参数加载/卸载和一些乘法和加法:
Procedure TLP1Poly2.Process(Const _a1, _b1, _OldIn1, _OldIn2, _OldOut1, _OldOut2: Double; Var Sample1, Sample2: Double);
Asm
MOVLPD XMM4, _a1
MOVHPD XMM4, _a1
MOVLPD XMM3, _b1
MOVHPD XMM3, _b1
//
MOVLPD XMM0, [Sample1]
MOVHPD XMM0, [Sample2]
MULPD XMM0, XMM4
//
MOVLPD XMM1, _OldIn1
MOVHPD XMM1, _OldIn2
MULPD XMM1, XMM4
//
MOVLPD XMM2, _OldOut1
MOVHPD XMM2, _OldOut2
MULPD XMM2, XMM3
//
ADDPD XMM0, XMM1
ADDPD XMM0, XMM2
//
MOVLPD [Sample1], XMM0
MOVHPD [Sample2], XMM0
//
// which stands for twice this:
// Sample:= …Run Code Online (Sandbox Code Playgroud) 我的问题是:如果这个文件(非常重要)很小(小于一个簇,只有几个字节),如何获得文件磁盘偏移量。
目前我使用这个Windows API函数:
DeviceIOControl(FileHandle, FSCTL_GET_RETRIEVAL_POINTERS, @InBuffer, SizeOf(InBuffer), @OutBuffer, SizeOf(OutBuffer), Num, Nil);
FirsExtent.Start := OutBuffer.Pair[0].LogicalCluster ;
Run Code Online (Sandbox Code Playgroud)
它可以完美地处理大于集群的文件,但对于较小的文件却会失败,因为它总是返回空偏移量。
小文件应遵循什么程序?它们位于 NTFS 卷上的什么位置?有没有其他方法可以知道文件偏移量?这种微妙之处似乎没有在任何地方记录下来。
注意:问题被标记为 Delphi,但 C++ 示例或示例也将受到赞赏。
在使用默认内置"组件流系统"的特定方式中,我发现如果属性的值等于默认值,则不会写入属性的值.
我们考虑以下方案:
您使用WriteComponent()和ReadComponent()来保存组件的特定状态.我们将此状态称为预设.该组件包含具有setter的各种Real类型属性.
我们知道如果属性等于其默认值,则预设将不包括该值.
所以我们的组件
最后在重新加载预设后,AFLoat仍然等于0.101,而我们期望它的值为0.0.
错误的起源很明显,属性的默认值永远不会写在组件流中.所以在第2步:该属性没有写入,然后在第4步它不被读取...相当恼人不是它!
有没有办法强制将属性的默认值写入组件流?实际上我对Real-typed属性有一个自制的修复,但我想知道是否有一个众所周知的方法来克服这个问题.
我的自定义修复是在调用ReadComponent ()之前使用TypInfos将Real-typed属性重置为0
Procedure ResetFloatToNull(Const AnObject: TObject; Recursive: Boolean);
Var
i,j: Integer;
LList: PPropList;
Begin
j := GetPropList( AnObject, LList);
If j > 0 Then For i:= 0 To j-1 Do
Case LList^[i].PropType^.Kind Of
// floats with the object scope
tkFloat: SetFloatProp(AnObject,LList^[i].Name,0);
// floats with a subobject …Run Code Online (Sandbox Code Playgroud) 这是一个简单的测试,演示了我在项目中遇到的问题,使用Delphi 2007.我使用TComponent类来存储组件的各种状态.但永远不会调用Int64属性writer方法(仅设置目标字段).因此,不可能依靠编写器来更新GUI TList或类似的东西......
例如:
TTestClass = Class(TComponent)
Private
Fb: Int64;
Fa: Integer;
Procedure SetFa(Const Value: Integer);
Procedure SetFb(Const Value: Int64);
Published
Property a: Integer Read Fa Write SetFa;
Property b: Int64 Read Fb Write SetFb;
Public
Procedure SaveInstance(Var Str: TStream);
Procedure LoadInstance(Var Str: TStream);
Procedure ReallyLoadInstance(Var Str: TStream);
Procedure Assign(Source: TPersistent); Override;
End;
TForm1 = Class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Procedure Button1Click(Sender: TObject); // test: 1st step, save the class
Procedure Button2Click(Sender: TObject); // test: 2nd step, try …Run Code Online (Sandbox Code Playgroud) 考虑这部分代码:
Try
arqTXT.LoadFromFile(LogPath);
finally
ShowMessage(" The log file could not be found. Check if the service is running. ");
end;
Run Code Online (Sandbox Code Playgroud)
在我的消息之后,出现一条系统消息,其中显示以下消息:无法打开文件"C:\ log.txt".有没有办法不显示此系统消息?
我正在使用Delphi 2010
谢谢.
delphi ×10
delphi-2007 ×4
assembly ×1
c++ ×1
components ×1
delphi-2009 ×1
delphi-2010 ×1
file ×1
filesystems ×1
go ×1
icons ×1
inno-setup ×1
installer ×1
ntfs ×1
pascal ×1
scripting ×1
sse ×1
streaming ×1
toolsapi ×1
winapi ×1
windows ×1
windows-7 ×1
x86 ×1