我是Delphi的新手。我想从另一个单元实例化一个类,但不能。
这是我的Main.pas单位:
unit Main;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.RegularExpressions,
System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Files, Records;
type
TForm2 = class(TForm)
Button1: TButton;
edRoutes: TEdit;
Memo1: TMemo;
edFilename: TEdit;
{...}
lData: TLabel;
eDate: TEdit;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
var
//routes: TArray<TRoute>;
readFile: TReadFile;
stFilename: String;
stText: String;
sDate: String;
RegExp: TRegEx;
Match: TMatch;
begin
stFilename := edFilename.Text;
readFile := readFile.Create(stFilename);
try
readFile.LoadFile();
stText := readFile.getText();
Memo1.Text := stText;
RegExp.Create('Día de entrega : (?<date>\d{2}\.\d{2}\.\d{4})');
if Regexp.IsMatch(stText) then
begin
Match := Regexp.Match(stText);
sDate := Match.Groups['date'].Value;
eDate.Text := sDate.Replace('.', '/');
end;
finally
readFile.Free;
end;
end;
{...}
end.
这是我的Files.pas单位:
unit Files;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, Vcl.Dialogs,
System.RegularExpressions, System.Variants, System.Classes;
type
TReadFile = class(TObject)
var
stFilename: String;
stText: String;
private
public
constructor Create(const Filename: String);
procedure LoadFile();
function getDate(): String;
function getText(): String;
end;
var
readFile: TReadFile;
implementation
constructor TReadFile.Create(const Filename: String);
begin
self.stFilename := Filename;
self.stText := '';
end;
{...}
end.
我认为这是因为Files.pas的变量未初始化,但是我在网络上找不到任何解决方案。
Main.pas]中的[readFile := readFile.Create(stFilename);
行]调用该错误。我确保stFilename不是nil,并且我知道错误是由于第二个单元(Files.pas)中的行self.stFilename := Filename;
引起的。我试图重载Create方法,但是它不起作用。
我也尝试过更改可见性,但是它也不起作用。
此帖子是我最后的机会。 :/
我是Delphi的新手。我想从另一个单元实例化一个类,但是我不能。这是我的Main.pas单位:unit Main;界面使用Winapi.Windows,Winapi.Messages,System.SysUtils,System ....
readFile := readFile.Create(stFilename);