小编Joc*_*c02的帖子

Delphi函数通用

我想创建一个通用函数。我是通用的新手。我有 3 个不同类型的私人列表。我想要一个公共通用方法来返回列表中的 1 项。

我有下面的代码。(我已经简化了)

TFilter = class
private
   FListFilter            : TObjectList<TFilterEntity>;
   FListFilterDate        : TObjectList<TFilterDate>;
   FListFilterRensParam   : TObjectList<TFilterRensParam>;
public
   function yGetFilter<T>(iIndice : integer) : T; 
....
function TFilter .yGetFilter<T>(iIndice : integer) : T; 
begin
    if T = TFilterEntity then
       result := T(FListFilter.Items[iIndice])
    else
       ....
end;
Run Code Online (Sandbox Code Playgroud)

我知道该代码无法运行,但是您能告诉我是否可以执行该操作吗?

delphi generics function

5
推荐指数
1
解决办法
1万
查看次数

不要保存包含在附件中的嵌入图像(例如签名图像)

我在C#中使用VSTO。当我单击按钮时,我将附件保存在文件夹中。我的问题是:当我在签名中带有图像的丰富电子邮件时,附件中就有一个元素。但我不想保存该图像。Outlook(应用程序)将此附件隐藏在区域附件中!那么为什么不我:-(

我的代码非常简单:

MailItem MailItemSelected =  this.OutlookItem;   
foreach (Attachment a in MailItemSelected.Attachments)
{
   a.SaveAsFile(path + a.FileName);
}
Run Code Online (Sandbox Code Playgroud)

但是我没有找到不保存签名图像的测试。

c# vsto attachment outlook-addin

4
推荐指数
1
解决办法
5009
查看次数

H2161 警告:重复资源:类型 10 (RCDATA)

我尝试将资源文件包含在我的包中。当我构建包时,我读到了这个警告:

[dcc32 Conseil] H2161 Warning: Duplicate resource:  Type 10 (RCDATA), ID PLUSUTILISEVOIR; File Project.dres resource kept; file Project.dres resource discarded.
Run Code Online (Sandbox Code Playgroud)

在我的单位中,我写道:...
结束;

{$R Project.dres}

implementation
...
Button.Picture.LoadFromResourceName(HInstance, 'Image1');
...
Run Code Online (Sandbox Code Playgroud)

资源加载良好,但为什么我有警告?

delphi package embedded-resource delphi-xe6

2
推荐指数
1
解决办法
9058
查看次数

为什么操作符无法返回从其他模块传递实例时的预期?

我从事与许多其他小型图书馆互动的Delphi项目.我使用FastMM4,我想使用传递给dll参数的复杂类.

所以例如,我将表单发送到我的dll.进入dll我用操作符"IS"测试参数的类型.

但进入Dll后,运算符"IS"总是返回"false"

为例

library Dll;

uses
     FastMM4,
     System.SysUtils,
     System.Classes,
     Vcl.Dialogs,
     Vcl.Forms;

{$R *.res}

procedure Complex(L : TObject);stdcall;
begin
     if L is TForm then
        showmessage('Ok')
     else
        showmessage('Pas ok') ;

     if L is TCustomFrame then
         showmessage('Ok')
     else
         showmessage('Pas ok')
end;

exports
  Complex;

begin
end.
Run Code Online (Sandbox Code Playgroud)

和电话

procedure TffsIsOperator.Button2Click(Sender: TObject);
var
 MaDLL : THandle;
 Proc  : procedure (l : TObject);
begin
   try
      MaDLL := LoadLibrary(PChar('Dll.dll'));
      @Proc := GetProcAddress(MaDLL, 'Complex');
      Proc(self);
   finally
      FreeLibrary(MaDLL);
   end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi dll fastmm

1
推荐指数
1
解决办法
178
查看次数

Delphi创建JSON

我在Delphi XE6上,我搜索创建JSON和解析JSON的最佳方法.

我尝试使用REST.Json单元和这个方法:TJson.ObjectToJsonString

TContrat = class
private
  FdDateDeb: TDate;
public
   property dDateDeb: TDate read FdDateDeb write FdDateDeb;
end;

TApprenant = class
private
   FsNom   : string;
   [JSONName('ListContrat')]
   FListContrat: TObjectList<TContrat>;
public
   property sNom   : string read FsNom write FsNom;
   property ListContrat: TObjectList<TContrat> read FListContrat write FListContrat;
end;

...
procedure TForm3.Button2Click(Sender: TObject);
var
   apprenant : TApprenant;
   contrat : TContrat;
begin
   Memo1.Clear;

   apprenant := TApprenant.Create;
   apprenant.sNom := 'JEAN';

   contrat := TContrat.Create;
   contrat.dDateDeb := StrToDate('01/01/2015');
   apprenant.ListContrat.Add(contrat);

   contrat := TContrat.Create;
   contrat.dDateDeb := StrToDate('01/01/2016');
   apprenant.ListContrat.Add(contrat);

   Memo1.Lines.Add(TJson.ObjectToJsonString(apprenant));
end; …
Run Code Online (Sandbox Code Playgroud)

delphi json delphi-xe6

1
推荐指数
1
解决办法
1376
查看次数

Delphi GetLastError 与执行包

当我在没有运行时包的情况下执行此代码时,出现 32 代码错误,这是正确的。但是当我激活运行时包(例如仅使用“FireDACASADriver;YmagControlDB”)时,错误代码始终为“0”

procedure TForm1.Button1Click(Sender: TObject);
Var
   Stream: TStream;
   iError : integer;
begin
   Stream := nil;
   iError := -1;
   try
      try
         Stream := TFileStream.Create('d:\toto.docx', fmOpenRead);
      except
         begin
            iError := GetLastError;
         end;
      end;
   finally
      if Assigned(Stream) then
         Stream.Free;
   end;
   showmessage('Erreur : ' + inttostr(iError));
end;
Run Code Online (Sandbox Code Playgroud)

如何使用运行时包修复 GetLastError?

delphi winapi getlasterror delphi-xe6

0
推荐指数
1
解决办法
351
查看次数