dear all,
I have some problems reading xml files.
If I read xml files using ReadXMLFile it works only if I use:
1. procedure ReadXMLFile(out ADoc: TXMLDocument; const AFilename: String); overload;
while if I use
2. procedure ReadXMLFile(out ADoc: TXMLDocument; var f: Text); overload;
the program crashes.

I attached two files (acetyl.cml and acetyl2.cml). The second one is always read properly, the first one is read properly only if I use procedure 1. In order to reproduce the error just create a new project, put a button and two tedit on the form.
In the button1 click put this code:

procedure TForm1.Button1Click(Sender: TObject);
var
  F: TextFile;
  FileName: String;
  XMLMolDoc: TXMLDocument;
  XMLMols: TDOMNodeList;
begin
  FileName:= Edit1.Text;
  //AssignFile(F, FileName);
  //Reset(F);
  //ReadXMLFile(XMLMolDoc, F);
ReadXMLFile(XMLMolDoc, FileName);
  XMLMols:= XMLMolDoc.GetElementsByTagName('molecule');
  edit2.text:= IntToStr(XMLMols.Count);

  //ClosefILE(F);
end;

With this code it works.

While if I put this:

procedure TForm1.Button1Click(Sender: TObject);
var
  F: TextFile;
  FileName: String;
  XMLMolDoc: TXMLDocument;
  XMLMols: TDOMNodeList;
begin
  FileName:= Edit1.Text;
  AssignFile(F, FileName);
  Reset(F);
  ReadXMLFile(XMLMolDoc, F);
  XMLMols:= XMLMolDoc.GetElementsByTagName('molecule');
  edit2.text:= IntToStr(XMLMols.Count);

  ClosefILE(F);
end;

It crashes raising: exception class 'EXMLreaderror' with message:
In 'file:///e:/temp/acetyl.cml' (line 1  pos 21): expected "?>"

Why?
Andrea

<?xml version="1.0"?>
<molecule id="m1" xmlns="http://www.xml-cml.org/schema";>
 <atomArray>
  <atom id="a1" elementType="O" x2="4.308974" y2="3.560000"/>
  <atom id="a2" elementType="C" x2="4.699250" y2="1.095897"/>
  <atom id="a3" elementType="C" x2="6.099250" y2="1.095897"/>
  <atom id="a4" elementType="C" x2="6.799250" y2="2.308333"/>
  <atom id="a5" elementType="O" x2="6.799250" y2="-0.116538"/>
  <atom id="a6" elementType="C" x2="3.876350" y2="2.228521"/>
  <atom id="a7" elementType="C" x2="2.544871" y2="1.795897"/>
  <atom id="a8" elementType="C" x2="2.544871" y2="0.395897"/>
  <atom id="a9" elementType="C" x2="1.332436" y2="-0.304103"/>
  <atom id="a10" elementType="C" x2="0.120000" y2="0.395897"/>
  <atom id="a11" elementType="C" x2="0.120000" y2="1.795897"/>
  <atom id="a12" elementType="C" x2="1.332436" y2="2.495897"/>
  <atom id="a13" elementType="C" x2="3.876350" y2="-0.036727"/>
 </atomArray>
 <bondArray>
  <bond atomRefs2="a1 a6" order="2"/>
  <bond atomRefs2="a6 a7" order="1"/>
  <bond atomRefs2="a6 a2" order="1"/>
  <bond atomRefs2="a2 a3" order="1"/>
  <bond atomRefs2="a3 a4" order="1"/>
  <bond atomRefs2="a3 a5" order="2"/>
  <bond atomRefs2="a7 a8" order="2"/>
  <bond atomRefs2="a8 a9" order="1"/>
  <bond atomRefs2="a9 a10" order="2"/>
  <bond atomRefs2="a10 a11" order="1"/>
  <bond atomRefs2="a11 a12" order="2"/>
  <bond atomRefs2="a7 a12" order="1"/>
  <bond atomRefs2="a8 a13" order="1"/>
  <bond atomRefs2="a13 a2" order="1"/>
 </bondArray>
</molecule>
<?xml version="1.0" ?>
<molecule id="m1">
  <atomArray>
    <atom id="a1" elementType="O"
          x2="0.978439526420217" y2="2.5020121905525743" />
    <atom id="a2" elementType="C"
          x2="0.5025533550827981" y2="1.037385155458038" />
    <atom id="a3" elementType="C"
          x2="-0.9620736800117374" y2="0.561498984120619" />
    <atom id="a4" elementType="C"
          x2="-0.9620736800117377" y2="-0.978501015879381" />
    <atom id="a5" elementType="C"
          x2="-2.2957528018397735" y2="-1.7485010158793814" />
    <atom id="a6" elementType="C"
          x2="-3.629431923667809" y2="-0.9785010158793817" />
    <atom id="a7" elementType="C"
          x2="-3.62943192366781" y2="0.5614989841206184" />
    <atom id="a8" elementType="C"
          x2="-2.2957528018397753" y2="1.3314989841206195" />
    <atom id="a9" elementType="C"
          x2="0.5025533550827987" y2="-1.4543871872168" />
    <atom id="a10" elementType="C"
          x2="1.4077426436132072" y2="-0.20850101587938108" />
    <atom id="a11" elementType="C"
          x2="2.947742643613207" y2="-0.20850101587938108" />
    <atom id="a12" elementType="C"
          x2="3.7177426436132066" y2="1.1251781059486543" />
    <atom id="a13" elementType="O"
          x2="3.7177426436132066" y2="-1.5421801377074167" />
  </atomArray>
  <bondArray>
    <bond atomRefs2="a1 a2" order="2" />
    <bond atomRefs2="a2 a3" order="1" />
    <bond atomRefs2="a3 a4" order="2" />
    <bond atomRefs2="a4 a5" order="1" />
    <bond atomRefs2="a5 a6" order="2" />
    <bond atomRefs2="a6 a7" order="1" />
    <bond atomRefs2="a7 a8" order="2" />
    <bond atomRefs2="a3 a8" order="1" />
    <bond atomRefs2="a4 a9" order="1" />
    <bond atomRefs2="a9 a10" order="1" />
    <bond atomRefs2="a2 a10" order="1" />
    <bond atomRefs2="a10 a11" order="1" />
    <bond atomRefs2="a11 a12" order="1" />
    <bond atomRefs2="a11 a13" order="2" />
  </bondArray>
</molecule>
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to