Ich möchte aus der in Lazarus befindlichen Datei packagesfiles.xml die Version eines Packages auslesen. Dazu habe ich hier schon einige Beiträge gefunden und gelesen (auch die Demos die bei Lazarus dabei sind). Es funktioniert sogar, aber ich glaube ich habe ein Monster erschaffen

Kann mir jemand auf die Sprünge helfen?
Viele Grüße
Bernd
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Laz2_DOM,
Laz_XMLRead;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
function GetVersion : string;
var
Document : TXMLDocument;
i, j,k,l,m: Integer;
s : string;
begin
ReadXMLFile(Document,'packagefiles.xml');
s:='';
for i := 0 to (Document.DocumentElement.ChildNodes.Count - 1) do
begin
for j := 0 to (Document.DocumentElement.ChildNodes.Item[i].ChildNodes.Count - 1) do
for k := 0 to (Document.DocumentElement.ChildNodes.Item[i].ChildNodes.Item[j].ChildNodes.Count - 1) do
if Document.DocumentElement.ChildNodes.Item[i].ChildNodes.Item[j].ChildNodes.Item[k].Attributes[0].NodeValue = 'Multis'
then begin
for l := 0 to (Document.DocumentElement.ChildNodes.Item[i].ChildNodes.Item[j].ChildNodes.Count - 1) do
if Document.DocumentElement.ChildNodes.Item[i].ChildNodes.Item[j].ChildNodes.Item[l].NodeName = 'Version' then
begin
for m := 0 to Document.DocumentElement.ChildNodes.Item[i].ChildNodes.Item[j].ChildNodes.Item[l].Attributes.Length -1 do
begin
s:=s+Document.DocumentElement.ChildNodes.Item[i].ChildNodes.Item[j].ChildNodes.Item[l].Attributes[m].NodeValue;
Result:= s;
end;//Attributes
end;//Version
end;//if Multis
end;//i
Document.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:= 'Version: '+GetVersion;
end;
end.