0

我有以下程序,它几乎可以工作,但是当我尝试编译时会产生以下错误,我不知道如何修复它!有任何想法吗?

表格,'mainform.pas'中的mainform ...

"unit1.pas(9): , or ; 预期但发现'IN'; "project1 无法编译 unit1.pas

    unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Dialogs, LibXmlParser, LibXmlComps, StdCtrls,
  Forms,
  mainform in 'mainform.pas'
  mapimail in 'mapimail.pas';

type
  TXMLRule = Record
    alert, desc, act:string;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    EasyXmlScanner1: TEasyXmlScanner;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Parser : TXmlParser;
  MyXMLRules:Array[1..10] of TXMLRule;
  i         :1..10;

implementation
{$R *.dfm}

procedure ProcessXML();

begin
  Parser := TXmlParser.Create;
  Parser.Normalize := TRUE;
  Parser.LoadFromFile ('c:\parser.xml');
  Parser.StartScan;

  while Parser.Scan do
    case Parser.CurPartType of
     ptStartTag,
     ptEmptyTag :
      begin

      end;

    ptContent  :
      begin
        if Parser.CurName = ('<alert>') then MyXMLRules[1].alert := Parser.CurContent;
        if Parser.CurName = ('<desc>') then MyXMLRules[1].desc := Parser.CurContent;
        if Parser.CurName = ('<action>') then MyXMLRules[1].act := Parser.Curcontent;
      end;
    end;
  Parser.Free;
end;

procedure EmailAlert();
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end;

procedure NoiseAlert();
begin
end;

procedure TForm1.Button1Click(Sender: TObject);
var
f:textFile;
data:string;
begin
   ProcessXML();

    AssignFile(f, 'c:\nmap.txt');
    reset(f);
    repeat
      readln(f, data);
      if (pos(MyXMLRules[1].alert, data)) <> 0 then

        begin
           if MyXMLRules[1].act
           = ('Email') then
                      begin
                        EmailAlert
                      end;
           if MyXMLRules[1].act
           = ('Beep') then
                      begin
                        NoiseAlert
                      end;
        end;
      until EOF(f);
end;

end.
4

3 回答 3

3

您在第 9 行(带有“mainform in 'mainform.pas'”的行)末尾缺少逗号。

于 2009-03-25T15:54:11.123 回答
2

根据Delphi Basics,“in”仅适用于程序和库,而不适用于单元。

于 2009-03-25T15:55:49.827 回答
1

您正在混合单元代码和项目代码。

在 Delphi(和 freepascal)中,项目文件 (.dpr) 允许您通过指定 OS 文件来包含自定义源文件,通常是您的单位。这用于通知编译器不要查找预编译单元。

project MyApp;

uses
  forms,
  unit1 in 'unit1.pas';

正如您提供的那样,作为一个单位,您不能这样做。

删除 IN 和带引号的字符串,只要清除代码中的其余错误,就可以了。

于 2009-05-26T16:30:48.460 回答