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