小编pio*_*pio的帖子

Delphi XE2 中的重复构造函数警告

我有以下.dpr

program TPWDDBManager;
{

  Delphi DUnit Test Project
  -------------------------
  This project contains the DUnit test framework and the GUI/Console test runners.
  Add "CONSOLE_TESTRUNNER" to the conditional defines entry in the project options
  to use the console test runner.  Otherwise the GUI test runner will be used by
  default.

}

{$IFDEF CONSOLE_TESTRUNNER}
{$APPTYPE CONSOLE}
{$ENDIF}

uses
  DUnitTestRunner,
  TestuTPWDDBManager in 'TestuTPWDDBManager.pas';

{$R *.RES}

begin
  DUnitTestRunner.RunRegisteredTests;
end.
Run Code Online (Sandbox Code Playgroud)

和以下单位:

unit TestuTPWDDBManager;
{

  Delphi DUnit Test Case
  ----------------------
  This unit contains a skeleton test case …
Run Code Online (Sandbox Code Playgroud)

delphi unit-testing

5
推荐指数
2
解决办法
2282
查看次数

代码未在TFrame.Create中执行

我使用以下代码创建了一个使用TFrame作为祖先的组件:

type
  TCHAdvFrame = class(TFrame)
  private
    { Private declarations }
    FOnShow : TNotifyEvent;
    FOnCreate : TNotifyEvent;
  protected
    procedure CMShowingChanged(var M: TMessage); message CM_SHOWINGCHANGED;
  public
    { Public declarations }
    constructor Create(AOwner: TComponent) ; override;
  published
    property OnShow : TNotifyEvent read FOnShow write FOnShow;
    property OnCreate : TNotifyEvent read FOnCreate write FOnCreate;
  end;

implementation

{$R *.dfm}

{ TCHAdvFrame }

procedure TCHAdvFrame.CMShowingChanged(var M: TMessage);
begin
  inherited;
  if Assigned(OnShow) then
  begin
    ShowMessage('onShow');
    OnShow(self);
  end;
end;

constructor TCHAdvFrame.Create(AOwner: TComponent);
begin
  ShowMessage('OnCreate1');
  inherited ;
  ShowMessage('OnCreate2');
  if …
Run Code Online (Sandbox Code Playgroud)

delphi components

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

解析平面文本文件

我正在开发一个应用程序,我必须将CSV文件中的数据上传到数据库表中.问题是,我没有CSV文件,但我有平面文本文件要转换为CSV.另一个问题是,由于应用程序由具有不同系统的多个客户使用,因此我使用不同布局的不同平面文本文件.

我想要实现的是创建一个从特殊文件加载"规则"的应用程序; 这些规则将使用平面文本文件进行处理,以生成CSV文件.从平面文件转换为CSV的应用程序将是相同的,只是规则集将是不同的.

我怎样才能做到这一点?你推荐的最佳做法是什么?

delphi

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

如何将接口添加到尚未包含TInterfacedObject的类层次结构中?

以下示例显示如何开始对接口进行编码:

TMyObject = class
  function Add(a, b: integer): integer;
end;
Run Code Online (Sandbox Code Playgroud)

IInterface = interface
  ['{BFC7867C-6098-4744-9774-35E0A8FE1A1D}']
  function Add(a, b: integer): integer;
end;

TMyObject = class (TInterfacedObject, IInterface 
  function Add(a, b: integer): integer;
end;
Run Code Online (Sandbox Code Playgroud)

但如果该类有一个祖先,我怎么能管理,比如说TMyClassDerivedDirectlyFromTObjectSoItsGotNothingInItAtAll?

TMyObject = class(TMyClassDerivedDirectlyFromTObjectSoItsGotNothingInItAtAll)
    function Add(a, b: integer): integer;
end;
Run Code Online (Sandbox Code Playgroud)

delphi interface

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

Spring4D中的TForm管理

我有以下代码:

Project.dpr

program Project2;

uses
  madExcept,
  madLinkDisAsm,
  madListHardware,
  madListProcesses,
  madListModules,
  Spring.Container,
  Vcl.Forms,
  uRegistrations in '..\Memory leak II\uRegistrations.pas',
  Unit3 in 'Unit3.pas' {MainForm},
  Unit4 in 'Unit4.pas' {SecondaryForm},
  Unit5 in 'Unit5.pas';

{$R *.res}

begin
  RegisterTypes(GlobalContainer);
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
//  MainForm:=TMainForm.Create(nil);
  Application.CreateForm(TMainForm, MainForm);
  MainForm.SecondaryForm := Globalcontainer.Resolve<ISecondaryForm>;
  Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)

注册接口的uRegistrations.pas

unit uRegistrations;

interface

uses
  Spring.Container;

procedure RegisterTypes(Container: TContainer);

implementation

uses
  Unit5,
  Unit4;

procedure RegisterTypes(Container: TContainer);
begin
  container.RegisterType<ISecondaryForm, TSecondaryForm>.DelegateTo(
    function: TSecondaryForm
    begin
      result := TSecondaryForm.Create(nil);
    end);
  Container.Build;

end;

end.
Run Code Online (Sandbox Code Playgroud)

Unit3.pas持有主表格

unit Unit3;

interface

uses
  Winapi.Windows, …
Run Code Online (Sandbox Code Playgroud)

delphi spring4d

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

TIdSSLIOHandlerSocketOpenSSL 和 TLS 协议

我有一个在 XE2 中开发的 Windows 桌面应用程序,它以 JSON 格式从远程服务器中提取数据。我使用 Indy 10 来管理这个。

该应用程序运行良好,直到我收到服务器提供商人员的电子邮件:

“......保护通信安全的唯一协议将是 TLS 1.2。旧版本(TLS.1.0、TLS.1.1 或 SSLv3)将不再有效。” 他们建议使用 TLS 1.2 或更高版本。

从那时起我有以下运行时错误

第一次机会例外,价格为 $7518845D。异常类 EIdOSSLUnderlyingCryptoError 带有消息“连接 SSL 时出错”。使用 SSL 连接时出错。错误:1408F10B:SSL 例程:SSL3_GET_RECORD:版本号错误。

我发现在调用 FidHTTP.Post 时触发了错误(FidHTTP 是 TidHTTP 的一个实例)。

我已按以下方式修改了创建类的方法:

constructor TMyClass.Create;

begin
  FidHTTP := TidHTTP.Create(nil);
  FidHTTP.HTTPOptions := FidHTTP.HTTPOptions - [hoForceEncodeParams];
  FidHTTP.Intercept := TIdLogFile.Create(FidHTTP);

  TIdLogFile(FidHTTP.Intercept).Filename := 'c:\'+s+'.log';
  TIdLogFile(FidHTTP.Intercept).Active := true;
  {$IFDEF VER230}
  FIdSSL := TIdSSLIOHandlerSocketOpenSSL.Create;
  FIdSSL.SSLOptions.Method:=sslvTLSv1; // I have added this line
  {$ENDIF}
end;
Run Code Online (Sandbox Code Playgroud)

但现在我有另一个错误:

第一次机会例外,价格为 $7518845D。异常类 EIdSocketError 带有消息“套接字错误 #10054 对等方重置连接。”。

我用谷歌搜索过这个,但我只找到了有关 FTP …

delphi ssl indy

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

TObjectList&lt;T&gt;.IndexOf 给出不正确的结果

我试图理解为什么我使用的方式TObjectList<T>.IndexOf对我不起作用。

下面是一个小例子

program Project3;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  madExcept,
  madLinkDisAsm,
  madListHardware,
  madListProcesses,
  madListModules,
  System.Generics.Defaults,
  System.Generics.Collections,
  System.Contnrs,
  System.SysUtils;

type
  TRecordObject = class(TObject)
    ID: Integer;
    Price: Currency;
    Matched: Boolean;
  public
    constructor Create(aSort: Integer; aPrice, aSize: Currency; aID: string; aNewParam: Integer;
      aSecondPrice, aSecondSize: Currency; aMatched: boolean); reintroduce;
  end;

  TSortCriterion<T> = class(TObject)
    Ascending: Boolean;
    Comparer: IComparer<T>;
  end;

  TSortCriteriaComparer<T> = class(TComparer<T>)
  private
    SortCriteria: TObjectList<TSortCriterion<T>>;
  public
    constructor Create;
    destructor Destroy; override;
    function Compare(const Right, Left: T): Integer; override;
    procedure ClearCriteria; virtual;
    procedure AddCriterion(NewCriterion: …
Run Code Online (Sandbox Code Playgroud)

delphi generics

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

接口和重载指令

以下代码向我抛出编译器错误

E2252 具有相同参数的方法“MyFunction”已经存在

program Project3;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

type
  aMyInterface = interface
    function MyFunction(const aSort: Integer; var aEndPoint: Integer): Integer; overload;
    function MyFunction(const aSort, aStartingPoint: Integer): Integer; overload;
  end;

  aMyClass = class(TInterfacedObject, aMyInterface)
    function MyFunction(const aSort: Integer; var aEndPoint: Integer): Integer; overload;
    function MyFunction(const aSort, aStartingPoint: Integer): Integer; overload;
  end;

{ aMyClass }

function aMyClass.MyFunction(const aSort: Integer; var aEndPoint: Integer): Integer;
begin
  Result := 1;
end;

function aMyClass.MyFunction(const aSort, aStartingPoint: Integer): Integer;
begin
  Result := 1;
end; …
Run Code Online (Sandbox Code Playgroud)

delphi

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

在没有Outlook的情况下通过VBA阅读GMail电子邮件

如何在没有安装Outlook的情况下通过VBA阅读GMail电子邮件?

我用谷歌搜索它,但我找不到任何不依赖于Outlook的解决方案.

excel gmail vba excel-vba access-vba

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