我有delphi应用程序(hostproject.exe),我想使用注册免费技术消耗.net com对象(NetSide.dll).
应用程序启动时,显示并排配置错误和sxtrace日志:
无法解析引用mscorlib,publicKeyToken ="b77a5c561934e089",version ="4.0.0.0".
hostproject.exe.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="client" version="1.0.0.0" />
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="NetSide.sxs" version="1.0.0.0" processorArchitecture="msil"/>
</dependentAssembly>
</dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)
NetSide.sxs.manifest
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity type="win32" name="NetSide.sxs" version="1.0.0.0" processorArchitecture="msil"/>
<clrClass clsid="{E6C4A866-F58C-415E-9745-E0E7812B4386}" progid="NetSide.Class1" threadingModel="Both" name="NetSide.Class1" runtimeVersion="v4.0.30319"/>
<file name="NetSide.dll" hashalg="SHA1"/>
<dependency>
<dependentAssembly>
<assemblyIdentity name="mscorlib" version="4.0.0.0" processorArchitecture="x86" publicKeyToken="b77a5c561934e089"/>
</dependentAssembly>
</dependency>
</assembly>
Run Code Online (Sandbox Code Playgroud)
sxstrace日志如下:
=================
Begin Activation Context Generation.
Input Parameter:
Flags = 0
ProcessorArchitecture = Wow32
CultureFallBacks = en-US;en
ManifestPath = …Run Code Online (Sandbox Code Playgroud) 我需要访问,记录属性,并设置/获取此属性值.首先,我想访问属性.但我不能.
怎么了?Ver:Delphi XE6.
示例代码:
type
TmyRecord = record
private
Str : String;
public
property StrProp :String read Str;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
c : TRttiContext;
t : TRttiType;
field : TRttiField;
prop : TRttiProperty;
begin
c := TRttiContext.Create;
try
Memo1.Lines.Append('Fields');
for field in c.GetType(TypeInfo(TMyRecord)).GetFields do
begin
t := field.FieldType;
Memo1.Lines.Append('Field:'+field.Name);
Memo1.Lines.Append('RttiType:'+t.ClassName);
end;
Memo1.Lines.Append('Properties');
for prop in c.GetType(TypeInfo(TMyRecord)).GetProperties do
begin
t := prop.PropertyType;
Memo1.Lines.Append('Property:'+prop.Name);
Memo1.Lines.Append('RttiType:'+t.ClassName);
end;
finally
c.Free
end;
end;
Run Code Online (Sandbox Code Playgroud) 如何禁用Delphi 10.1 Berlin的PopupMenu/Menu的VCL样式?
因为长菜单无法正常运行.所以,我想将windows样式用于菜单/弹出菜单项.
这可能吗?
我想要使用类函数进行类型转换.我有基(TBase),派生(TDer)和类型转换(TMyType)类.
Ver:Delphi 7
TBase = class;
TDer = class;
TMyType = class;
TBase = class
function Say : String;
class function MYType:TMyType;
end;
TDer = class(TBase)
a: string;
b: string;
function Say2 : String;
end;
TMyType=class(TBase)
class function AsDer:TDer;
end;
{ TBase }
class function TBase.MYType: TMyType;
begin
Result:=TMyType(Self);
end;
function TBase.Say: String;
begin
Result:='TBase';
end;
{ TDer }
function TDer.Say2: String;
begin
Result:='TDer';
end;
{ TMyType }
class function TMyType.AsDer: TDer;
begin
Assert(Assigned(Self));
Result := TDer(Self) ;
end;
Run Code Online (Sandbox Code Playgroud)
示例用法如下,它是调用方法,但是当设置/获取字段的引发错误时. …