0

私はDIxmlを使用していくつかのXMLファイルを解析しています。これまでのところ、それはうまくいきました。昨日、正しいように見えますが、DIxmlで解析できないXMLファイルを取得しました。初日から完全に機能したため、警告、エラー、致命的なエラー機能はまだ実装されていません:-)

今日、これらの関数を実装しようとしましたが、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'をコンパイルできません

4

0 に答える 0