[Lazarus] How to get the package version from a LPK file?

michael.vancanneyt at wisa.be michael.vancanneyt at wisa.be
Tue Nov 29 12:03:44 CET 2011



On Tue, 29 Nov 2011, Graeme Geldenhuys wrote:

> On 29/11/2011, michael.vancanneyt at wisa.be <michael.vancanneyt at ...> wrote:
>>
>> Graeme, please stop bashing code you personally don't understand.
>
> I guess I deserved that. As for your comment about you never bashing
> other peoples code.... What about you bashing EpikTimer every time it
> was mentioned of the last 2+ years. Anyway, lets call it even and move
> on.
>
>> The code works as designed. It is an implementation of a W3 spec.
>> It passes the W3 test suites, so it is correct code.
>> I use it in many many projects, and it performs flawlessly.
>
> OK, so in the spirit of education (for myself and others), and with
> your fast knowledge of the FPC DOM.... Could you please solve the
> original problem of Silvio using the FPC DOM (not the TXMLConfig like
> Mattias did).

program test;

{$mode objfpc}{$H+}

uses
   Classes,
   SysUtils,
   DOM,
   XMLRead;

var
   VXML: TXMLDocument;
   N : TDOMNode;
   E : TDomELement;

begin
   try
     ReadXMLFile(VXML, ExtractFilePath(ParamStr(0)) + 'LazSolutionsDT.lpk');
     E:=Nil;
     // Take first node at 2 levels deep.
     N:=VXML.DocumentElement.FirstChild.FirstChild;
     While (N<>Nil) and (E=Nil) do
       begin
       // is it the node we want ?
       If (N is TDomElement) and (N.NodeName='Version') then
         E:=N as TDomElement;
       // Go to next node at the same level.
       N:=N.NextSibling;
       end;
     if Assigned(E) then
       // Attributes available as default property of TDomElement.
       Writeln('Version ',E['Minor'],' ',E['Release']);
   finally
     VXML.Free;
   end;
end.

Michael.




More information about the Lazarus mailing list