我有以下.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) 我使用以下代码创建了一个使用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) 我正在开发一个应用程序,我必须将CSV文件中的数据上传到数据库表中.问题是,我没有CSV文件,但我有平面文本文件要转换为CSV.另一个问题是,由于应用程序由具有不同系统的多个客户使用,因此我使用不同布局的不同平面文本文件.
我想要实现的是创建一个从特殊文件加载"规则"的应用程序; 这些规则将使用平面文本文件进行处理,以生成CSV文件.从平面文件转换为CSV的应用程序将是相同的,只是规则集将是不同的.
我怎样才能做到这一点?你推荐的最佳做法是什么?
以下示例显示如何开始对接口进行编码:
从
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) 我有以下代码:
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) 我有一个在 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 …
我试图理解为什么我使用的方式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) 以下代码向我抛出编译器错误
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) 如何在没有安装Outlook的情况下通过VBA阅读GMail电子邮件?
我用谷歌搜索它,但我找不到任何不依赖于Outlook的解决方案.
delphi ×8
access-vba ×1
components ×1
excel ×1
excel-vba ×1
generics ×1
gmail ×1
indy ×1
interface ×1
spring4d ×1
ssl ×1
unit-testing ×1
vba ×1