如何为DIxml声明警告,错误和fatalError函数?

时间:2013-02-05 21:40:48

标签: xml delphi sax delphi-2009

我正在使用DIxml来解析几个XML文件。到目前为止它工作得很好。昨天我得到了一个似乎正确的XML文件,但不能被DIxml解析。我还没有实施警告,错误和fatalerror功能,因为它从第一天开始就完美起作用了: - )

我今天尝试实现这些功能但是我从Delphi得到一个编译错误,说我的声明与预期的声明不同。从我的观点来看,我做得对,但我确信编译器知道的更好。

我实现了像SAX2示例中所示的structuredError方法,但我的源代码从未命中过这个函数。我现在所有的希望都在于致命的错误方法。

以下是有关该功能的一些其他详细信息。

由于库是封闭源代码,我无法访问pas文件中的正确声明。使用鼠标聚焦警告方法时,我只看到了胡佛/工具提示信息。

首先:我如何初始化SAX阅读器(部分内容)

var
  f8      : Utf8String;
  User    : TImportData;
begin
  User := TImportData.Create;

  xmlInitParser; // Initialize the XML library.

  { Initialize the SAX2 handler. To start off with, we set all functions to
    nil. If we use a nil SAX parser like this, then we will have a parser that
    only checks that the document is well formed. }
  FillChar(FSaxHandler, SizeOf(FSaxHandler), 0);

  { By adding a few callbacks to the SAX handler, we can get the parser 
    to do just about anything. }
  FSaxHandler.startDocument   := SaxStartDocument;
  FSaxHandler.endDocument     := SaxEndDocument;
  FSaxHandler.characters      := SaxCharacters;
  FSaxHandler.Warning         := Warning;
  FSaxHandler.Error           := Error;
  FSaxHandler.fatalError      := fatalError;

end;

procedure SaxStartDocument(Ctx: Pointer);
var
  User: PImportData;
begin
  User                  := Ctx;

  //Do something with user...
end;

procedure Warning(Ctx: Pointer; Msg: PAnsiChar);
var
  User: PImportData;
begin
  User := Ctx;

  //Do something with user...
end;

procedure SaxCharacters(Ctx: Pointer; const Ch: xmlCharPtr; Len: Integer);
var
  s: Utf8String;
var
  User: PImportData;
begin
  User := Ctx;

  //Do something with user...
end;

使用鼠标聚焦线FSaxHandler.characters := Warning;时,我会在工具提示窗口中获得以下信息:

  

DIXml.xmlSAXHandler中的Deklariert

 Parameters
   Ctx 
     System.Pointer 
   Msg 
     System.PAnsiChar

对焦线FSaxHandler.characters := SaxCharacters;时,我得到以下工具提示

  

字符事件        DIXml.xmlSAXHandler中的Deklariert

 Parameters
 Ctx 
  System.Pointer 
 Ch 
  System.PAnsiChar 
 Len 
  System.Integer

当我点击CTRL + F9来编译源代码时,我收到以下错误消息:

  

[DCC Fehler] UnitSAX2_XML_Reader.pas(247):E2009 Inkompatible Typen:'Unterschiede in der Aufrufkonvention'

     

[DCC Fataler Fehler] importObjects.pas(8):F2063 Verwendete Unit'UnitSAX2_XML_Reader.pas'kann nicht compiliert werden

这意味着翻译

  

[DCC错误] UnitSAX2_XML_Reader.pas(247):E2009不兼容的类型:“呼叫定义的差异”

     

[DCC致命错误] importObjects.pas(8):F2063使用单位'UnitSAX2_XML_Reader.pas'无法编译

0 个答案:

没有答案