Паскаль - Re: использует - PullRequest
0 голосов
/ 25 марта 2009

У меня есть следующая программа, которая почти работает, но выдает следующую ошибку, когда я пытаюсь скомпилировать, я понятия не имею, как это исправить! есть идеи?

Формы, mainform в mainform.pas ...

"unit1.pas (9): или; ожидается, но '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.

Ответы [ 3 ]

3 голосов
/ 25 марта 2009

Вам не хватает запятой в конце строки 9 (строка с "mainform in 'mainform.pas'").

2 голосов
/ 25 марта 2009

В соответствии с Delphi Basics"in" применимо только к программам и библиотекам, а не к единицам.

1 голос
/ 26 мая 2009

Вы смешиваете код единицы и код проекта.

В Delphi (и freepascal) файл проекта (.dpr) позволяет вам включать пользовательские исходные файлы, обычно ваши модули, указав файл ОС. Это используется для уведомления компилятора не искать предварительно скомпилированный модуль.

project MyApp;

uses
  forms,
  unit1 in 'unit1.pas';

Где как единое целое, как вы указали, вы не можете сделать это.

Удалите IN и приведенные в кавычки строки, и все будет в порядке, если вы очистите остальные ошибки в коде.

...