Jump to content
thoga31

PROGRAMAR Downloader for Linux

Recommended Posts

thoga31

De facto seria fixe termos ferramentas destas para as várias plataformas. Para Windows temos umas três, se não me engano. Para Linux temos esta. Falta Mac, iOS, Android... Força nisso, bom trabalho :thumbsup:


Knowledge is free!

Share this post


Link to post
Share on other sites
Kline777

Para saberes que edições existem existe algum webservice ou assim ou vais directo pelo link existir/nao existir?

Share this post


Link to post
Share on other sites
thoga31

Acho que existe uma página XML com essa informação, mas eu não usei isso e não é uma página "oficial", é mantida pelo @ribeiro55, salvo erro.

Se fores a uma página que não existe, ela vai sempre existir - se vais a uma edição que não existe, páras na Home Page e apanhas o código dela. :P

Eu usei a informação da página de Edições, a linha 163 (salvo erro, e neste momento) tem uma lista enorme com todas as edições. Eu identifico-a, faço um breve parse dela e extraio a última edição. Claro que não vou à linha 163 directamente, se amanhã aquilo muda deixa de ser válido. Identifiquei algo naquela linha que nunca se repete em mais nenhuma, e esse é o meu identificador ;)

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

De facto seria fixe termos ferramentas destas para as várias plataformas. Para Windows temos umas três, se não me engano. Para Linux temos esta. Falta Mac, iOS, Android... Força nisso, bom trabalho :thumbsup:

Se o Kline fizer para Android, de uma assentada faz também para Mac, iOS e Windows. :D

Way to go Delphi.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
ribeiro55

Acho que existe uma página XML com essa informação, mas eu não usei isso e não é uma página "oficial", é mantida pelo @ribeiro55, salvo erro.

True. Hei-de continuar a manter até que fique sem teclado :P

Podes usar e abusar, está lá para isso.

http://programar.sergioribeiro.com/programar.xml

EDIT: E para veres a versão sem estar a sacar a coisa toda: http://programar.sergioribeiro.com/ver.xml

Edited by ribeiro55
  • Vote 1

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
nunopicado

Para quem precisar, fica a unit em Delphi com a serialização do XML:


{**************************************************}
{                                                  }
{                 XML Data Binding                 }
{                                                  }
{         Generated on: 03-02-2014 08:57:18        }
{       Generated from: E:\Dropbox\programar.xml   }
{                                                  }
{**************************************************}

unit programar;

interface

uses xmldom, XMLDoc, XMLIntf;

type

{ Forward Decls }

 IXMLProgramarType = interface;
 IXMLInfoType = interface;
 IXMLEdicoesType = interface;
 IXMLEdicaoType = interface;
 IXMLImagensType = interface;
 IXMLCapasType = interface;
 IXMLCapaType = interface;
 IXMLPaginasType = interface;
 IXMLArtigosType = interface;
 IXMLCategoriaType = interface;
 IXMLArtigoType = interface;
 IXMLEquipaType = interface;
 IXMLEquipaType2 = interface;

{ IXMLProgramarType }

 IXMLProgramarType = interface(IXMLNode)
   ['{78328FC5-2C17-4AAC-B4F2-5D266648935C}']
   { Property Accessors }
   function Get_Info: IXMLInfoType;
   function Get_Edicoes: IXMLEdicoesType;
   { Methods & Properties }
   property Info: IXMLInfoType read Get_Info;
   property Edicoes: IXMLEdicoesType read Get_Edicoes;
 end;

{ IXMLInfoType }

 IXMLInfoType = interface(IXMLNode)
   ['{B77B4BEE-DE9B-418E-AD17-4606E7762CB7}']
   { Property Accessors }
   function Get_Versao: Integer;
   function Get_Totaledicoes: Integer;
   function Get_Ultimaedicao: UnicodeString;
   function Get_Url: UnicodeString;
   procedure Set_Versao(Value: Integer);
   procedure Set_Totaledicoes(Value: Integer);
   procedure Set_Ultimaedicao(Value: UnicodeString);
   procedure Set_Url(Value: UnicodeString);
   { Methods & Properties }
   property Versao: Integer read Get_Versao write Set_Versao;
   property Totaledicoes: Integer read Get_Totaledicoes write Set_Totaledicoes;
   property Ultimaedicao: UnicodeString read Get_Ultimaedicao write Set_Ultimaedicao;
   property Url: UnicodeString read Get_Url write Set_Url;
 end;

{ IXMLEdicoesType }

 IXMLEdicoesType = interface(IXMLNodeCollection)
   ['{27E19337-20E4-4B5B-8C81-2043FDAF8105}']
   { Property Accessors }
   function Get_Edicao(Index: Integer): IXMLEdicaoType;
   { Methods & Properties }
   function Add: IXMLEdicaoType;
   function Insert(const Index: Integer): IXMLEdicaoType;
   property Edicao[index: Integer]: IXMLEdicaoType read Get_Edicao; default;
 end;

{ IXMLEdicaoType }

 IXMLEdicaoType = interface(IXMLNode)
   ['{EBA6BE97-5780-4812-BE74-CBF6E7B1C92E}']
   { Property Accessors }
   function Get_Num: Integer;
   function Get_Data: UnicodeString;
   function Get_Imagens: IXMLImagensType;
   function Get_Artigos: IXMLArtigosType;
   function Get_Equipa: IXMLEquipaType;
   function Get_Pdf: UnicodeString;
   procedure Set_Num(Value: Integer);
   procedure Set_Data(Value: UnicodeString);
   procedure Set_Pdf(Value: UnicodeString);
   { Methods & Properties }
   property Num: Integer read Get_Num write Set_Num;
   property Data: UnicodeString read Get_Data write Set_Data;
   property Imagens: IXMLImagensType read Get_Imagens;
   property Artigos: IXMLArtigosType read Get_Artigos;
   property Equipa: IXMLEquipaType read Get_Equipa;
   property Pdf: UnicodeString read Get_Pdf write Set_Pdf;
 end;

{ IXMLImagensType }

 IXMLImagensType = interface(IXMLNode)
   ['{B9CB5C23-BFD6-4F7A-B49F-F65F30A8F8F1}']
   { Property Accessors }
   function Get_Capas: IXMLCapasType;
   function Get_Paginas: IXMLPaginasType;
   { Methods & Properties }
   property Capas: IXMLCapasType read Get_Capas;
   property Paginas: IXMLPaginasType read Get_Paginas;
 end;

{ IXMLCapasType }

 IXMLCapasType = interface(IXMLNodeCollection)
   ['{C9CFA690-A6FE-4126-AB9A-9A7AF185B67D}']
   { Property Accessors }
   function Get_Capa(Index: Integer): IXMLCapaType;
   { Methods & Properties }
   function Add: IXMLCapaType;
   function Insert(const Index: Integer): IXMLCapaType;
   property Capa[index: Integer]: IXMLCapaType read Get_Capa; default;
 end;

{ IXMLCapaType }

 IXMLCapaType = interface(IXMLNode)
   ['{8E954675-4AEC-4808-94AC-F9705C3BE342}']
   { Property Accessors }
   function Get_Tamanho: UnicodeString;
   procedure Set_Tamanho(Value: UnicodeString);
   { Methods & Properties }
   property Tamanho: UnicodeString read Get_Tamanho write Set_Tamanho;
 end;

{ IXMLPaginasType }

 IXMLPaginasType = interface(IXMLNodeCollection)
   ['{091BBC55-567B-48F6-B60C-A7E8380D87A4}']
   { Property Accessors }
   function Get_Pagina(Index: Integer): UnicodeString;
   { Methods & Properties }
   function Add(const Pagina: UnicodeString): IXMLNode;
   function Insert(const Index: Integer; const Pagina: UnicodeString): IXMLNode;
   property Pagina[index: Integer]: UnicodeString read Get_Pagina; default;
 end;

{ IXMLArtigosType }

 IXMLArtigosType = interface(IXMLNodeCollection)
   ['{7A1A0A29-A88B-48F3-B00E-4891CB7B14FF}']
   { Property Accessors }
   function Get_Categoria(Index: Integer): IXMLCategoriaType;
   { Methods & Properties }
   function Add: IXMLCategoriaType;
   function Insert(const Index: Integer): IXMLCategoriaType;
   property Categoria[index: Integer]: IXMLCategoriaType read Get_Categoria; default;
 end;

{ IXMLCategoriaType }

 IXMLCategoriaType = interface(IXMLNodeCollection)
   ['{3D384351-5284-4C9D-9D5F-D58927437396}']
   { Property Accessors }
   function Get_Designacao: UnicodeString;
   function Get_Artigo(Index: Integer): IXMLArtigoType;
   procedure Set_Designacao(Value: UnicodeString);
   { Methods & Properties }
   function Add: IXMLArtigoType;
   function Insert(const Index: Integer): IXMLArtigoType;
   property Designacao: UnicodeString read Get_Designacao write Set_Designacao;
   property Artigo[index: Integer]: IXMLArtigoType read Get_Artigo; default;
 end;

{ IXMLArtigoType }

 IXMLArtigoType = interface(IXMLNode)
   ['{70410B8A-F377-4790-A80D-6CB1B4BCAB39}']
   { Property Accessors }
   function Get_Titulo: UnicodeString;
   procedure Set_Titulo(Value: UnicodeString);
   { Methods & Properties }
   property Titulo: UnicodeString read Get_Titulo write Set_Titulo;
 end;

{ IXMLEquipaType }

 IXMLEquipaType = interface(IXMLNodeCollection)
   ['{C94EC3B3-CFA5-47D4-A762-904B06B846DB}']
   { Property Accessors }
   function Get_Membro(Index: Integer): UnicodeString;
   { Methods & Properties }
   function Add(const Membro: UnicodeString): IXMLNode;
   function Insert(const Index: Integer; const Membro: UnicodeString): IXMLNode;
   property Membro[index: Integer]: UnicodeString read Get_Membro; default;
 end;

{ IXMLEquipaType2 }

 IXMLEquipaType2 = interface(IXMLNode)
   ['{561D7237-367B-405A-8640-4087EA7E6DBB}']
 end;

{ Forward Decls }

 TXMLProgramarType = class;
 TXMLInfoType = class;
 TXMLEdicoesType = class;
 TXMLEdicaoType = class;
 TXMLImagensType = class;
 TXMLCapasType = class;
 TXMLCapaType = class;
 TXMLPaginasType = class;
 TXMLArtigosType = class;
 TXMLCategoriaType = class;
 TXMLArtigoType = class;
 TXMLEquipaType = class;
 TXMLEquipaType2 = class;

{ TXMLProgramarType }

 TXMLProgramarType = class(TXMLNode, IXMLProgramarType)
 protected
   { IXMLProgramarType }
   function Get_Info: IXMLInfoType;
   function Get_Edicoes: IXMLEdicoesType;
 public
   procedure AfterConstruction; override;
 end;

{ TXMLInfoType }

 TXMLInfoType = class(TXMLNode, IXMLInfoType)
 protected
   { IXMLInfoType }
   function Get_Versao: Integer;
   function Get_Totaledicoes: Integer;
   function Get_Ultimaedicao: UnicodeString;
   function Get_Url: UnicodeString;
   procedure Set_Versao(Value: Integer);
   procedure Set_Totaledicoes(Value: Integer);
   procedure Set_Ultimaedicao(Value: UnicodeString);
   procedure Set_Url(Value: UnicodeString);
 end;

{ TXMLEdicoesType }

 TXMLEdicoesType = class(TXMLNodeCollection, IXMLEdicoesType)
 protected
   { IXMLEdicoesType }
   function Get_Edicao(Index: Integer): IXMLEdicaoType;
   function Add: IXMLEdicaoType;
   function Insert(const Index: Integer): IXMLEdicaoType;
 public
   procedure AfterConstruction; override;
 end;

{ TXMLEdicaoType }

 TXMLEdicaoType = class(TXMLNode, IXMLEdicaoType)
 protected
   { IXMLEdicaoType }
   function Get_Num: Integer;
   function Get_Data: UnicodeString;
   function Get_Imagens: IXMLImagensType;
   function Get_Artigos: IXMLArtigosType;
   function Get_Equipa: IXMLEquipaType;
   function Get_Pdf: UnicodeString;
   procedure Set_Num(Value: Integer);
   procedure Set_Data(Value: UnicodeString);
   procedure Set_Pdf(Value: UnicodeString);
 public
   procedure AfterConstruction; override;
 end;

{ TXMLImagensType }

 TXMLImagensType = class(TXMLNode, IXMLImagensType)
 protected
   { IXMLImagensType }
   function Get_Capas: IXMLCapasType;
   function Get_Paginas: IXMLPaginasType;
 public
   procedure AfterConstruction; override;
 end;

{ TXMLCapasType }

 TXMLCapasType = class(TXMLNodeCollection, IXMLCapasType)
 protected
   { IXMLCapasType }
   function Get_Capa(Index: Integer): IXMLCapaType;
   function Add: IXMLCapaType;
   function Insert(const Index: Integer): IXMLCapaType;
 public
   procedure AfterConstruction; override;
 end;

{ TXMLCapaType }

 TXMLCapaType = class(TXMLNode, IXMLCapaType)
 protected
   { IXMLCapaType }
   function Get_Tamanho: UnicodeString;
   procedure Set_Tamanho(Value: UnicodeString);
 end;

{ TXMLPaginasType }

 TXMLPaginasType = class(TXMLNodeCollection, IXMLPaginasType)
 protected
   { IXMLPaginasType }
   function Get_Pagina(Index: Integer): UnicodeString;
   function Add(const Pagina: UnicodeString): IXMLNode;
   function Insert(const Index: Integer; const Pagina: UnicodeString): IXMLNode;
 public
   procedure AfterConstruction; override;
 end;

{ TXMLArtigosType }

 TXMLArtigosType = class(TXMLNodeCollection, IXMLArtigosType)
 protected
   { IXMLArtigosType }
   function Get_Categoria(Index: Integer): IXMLCategoriaType;
   function Add: IXMLCategoriaType;
   function Insert(const Index: Integer): IXMLCategoriaType;
 public
   procedure AfterConstruction; override;
 end;

{ TXMLCategoriaType }

 TXMLCategoriaType = class(TXMLNodeCollection, IXMLCategoriaType)
 protected
   { IXMLCategoriaType }
   function Get_Designacao: UnicodeString;
   function Get_Artigo(Index: Integer): IXMLArtigoType;
   procedure Set_Designacao(Value: UnicodeString);
   function Add: IXMLArtigoType;
   function Insert(const Index: Integer): IXMLArtigoType;
 public
   procedure AfterConstruction; override;
 end;

{ TXMLArtigoType }

 TXMLArtigoType = class(TXMLNode, IXMLArtigoType)
 protected
   { IXMLArtigoType }
   function Get_Titulo: UnicodeString;
   procedure Set_Titulo(Value: UnicodeString);
 end;

{ TXMLEquipaType }

 TXMLEquipaType = class(TXMLNodeCollection, IXMLEquipaType)
 protected
   { IXMLEquipaType }
   function Get_Membro(Index: Integer): UnicodeString;
   function Add(const Membro: UnicodeString): IXMLNode;
   function Insert(const Index: Integer; const Membro: UnicodeString): IXMLNode;
 public
   procedure AfterConstruction; override;
 end;

{ TXMLEquipaType2 }

 TXMLEquipaType2 = class(TXMLNode, IXMLEquipaType2)
 protected
   { IXMLEquipaType2 }
 end;

{ Global Functions }

function Getprogramar(Doc: IXMLDocument): IXMLProgramarType;
function Loadprogramar(const FileName: string): IXMLProgramarType;
function Newprogramar: IXMLProgramarType;

const
 TargetNamespace = '';

implementation

{ Global Functions }

function Getprogramar(Doc: IXMLDocument): IXMLProgramarType;
begin
 Result := Doc.GetDocBinding('programar', TXMLProgramarType, TargetNamespace) as IXMLProgramarType;
end;

function Loadprogramar(const FileName: string): IXMLProgramarType;
begin
 Result := LoadXMLDocument(FileName).GetDocBinding('programar', TXMLProgramarType, TargetNamespace) as IXMLProgramarType;
end;

function Newprogramar: IXMLProgramarType;
begin
 Result := NewXMLdocument.GetDocBinding('programar', TXMLProgramarType, TargetNamespace) as IXMLProgramarType;
end;

{ TXMLProgramarType }

procedure TXMLProgramarType.AfterConstruction;
begin
 RegisterChildNode('info', TXMLInfoType);
 RegisterChildNode('edicoes', TXMLEdicoesType);
 inherited;
end;

function TXMLProgramarType.Get_Info: IXMLInfoType;
begin
 Result := ChildNodes['info'] as IXMLInfoType;
end;

function TXMLProgramarType.Get_Edicoes: IXMLEdicoesType;
begin
 Result := ChildNodes['edicoes'] as IXMLEdicoesType;
end;

{ TXMLInfoType }

function TXMLInfoType.Get_Versao: Integer;
begin
 Result := ChildNodes['versao'].NodeValue;
end;

procedure TXMLInfoType.Set_Versao(Value: Integer);
begin
 ChildNodes['versao'].NodeValue := Value;
end;

function TXMLInfoType.Get_Totaledicoes: Integer;
begin
 Result := ChildNodes['totaledicoes'].NodeValue;
end;

procedure TXMLInfoType.Set_Totaledicoes(Value: Integer);
begin
 ChildNodes['totaledicoes'].NodeValue := Value;
end;

function TXMLInfoType.Get_Ultimaedicao: UnicodeString;
begin
 Result := ChildNodes['ultimaedicao'].Text;
end;

procedure TXMLInfoType.Set_Ultimaedicao(Value: UnicodeString);
begin
 ChildNodes['ultimaedicao'].NodeValue := Value;
end;

function TXMLInfoType.Get_Url: UnicodeString;
begin
 Result := ChildNodes['url'].Text;
end;

procedure TXMLInfoType.Set_Url(Value: UnicodeString);
begin
 ChildNodes['url'].NodeValue := Value;
end;

{ TXMLEdicoesType }

procedure TXMLEdicoesType.AfterConstruction;
begin
 RegisterChildNode('edicao', TXMLEdicaoType);
 ItemTag := 'edicao';
 ItemInterface := IXMLEdicaoType;
 inherited;
end;

function TXMLEdicoesType.Get_Edicao(Index: Integer): IXMLEdicaoType;
begin
 Result := List[index] as IXMLEdicaoType;
end;

function TXMLEdicoesType.Add: IXMLEdicaoType;
begin
 Result := AddItem(-1) as IXMLEdicaoType;
end;

function TXMLEdicoesType.Insert(const Index: Integer): IXMLEdicaoType;
begin
 Result := AddItem(Index) as IXMLEdicaoType;
end;

{ TXMLEdicaoType }

procedure TXMLEdicaoType.AfterConstruction;
begin
 RegisterChildNode('imagens', TXMLImagensType);
 RegisterChildNode('artigos', TXMLArtigosType);
 RegisterChildNode('equipa', TXMLEquipaType);
 inherited;
end;

function TXMLEdicaoType.Get_Num: Integer;
begin
 Result := AttributeNodes['num'].NodeValue;
end;

procedure TXMLEdicaoType.Set_Num(Value: Integer);
begin
 SetAttribute('num', Value);
end;

function TXMLEdicaoType.Get_Data: UnicodeString;
begin
 Result := AttributeNodes['data'].Text;
end;

procedure TXMLEdicaoType.Set_Data(Value: UnicodeString);
begin
 SetAttribute('data', Value);
end;

function TXMLEdicaoType.Get_Imagens: IXMLImagensType;
begin
 Result := ChildNodes['imagens'] as IXMLImagensType;
end;

function TXMLEdicaoType.Get_Artigos: IXMLArtigosType;
begin
 Result := ChildNodes['artigos'] as IXMLArtigosType;
end;

function TXMLEdicaoType.Get_Equipa: IXMLEquipaType;
begin
 Result := ChildNodes['equipa'] as IXMLEquipaType;
end;

function TXMLEdicaoType.Get_Pdf: UnicodeString;
begin
 Result := ChildNodes['pdf'].Text;
end;

procedure TXMLEdicaoType.Set_Pdf(Value: UnicodeString);
begin
 ChildNodes['pdf'].NodeValue := Value;
end;

{ TXMLImagensType }

procedure TXMLImagensType.AfterConstruction;
begin
 RegisterChildNode('capas', TXMLCapasType);
 RegisterChildNode('paginas', TXMLPaginasType);
 inherited;
end;

function TXMLImagensType.Get_Capas: IXMLCapasType;
begin
 Result := ChildNodes['capas'] as IXMLCapasType;
end;

function TXMLImagensType.Get_Paginas: IXMLPaginasType;
begin
 Result := ChildNodes['paginas'] as IXMLPaginasType;
end;

{ TXMLCapasType }

procedure TXMLCapasType.AfterConstruction;
begin
 RegisterChildNode('capa', TXMLCapaType);
 ItemTag := 'capa';
 ItemInterface := IXMLCapaType;
 inherited;
end;

function TXMLCapasType.Get_Capa(Index: Integer): IXMLCapaType;
begin
 Result := List[index] as IXMLCapaType;
end;

function TXMLCapasType.Add: IXMLCapaType;
begin
 Result := AddItem(-1) as IXMLCapaType;
end;

function TXMLCapasType.Insert(const Index: Integer): IXMLCapaType;
begin
 Result := AddItem(Index) as IXMLCapaType;
end;

{ TXMLCapaType }

function TXMLCapaType.Get_Tamanho: UnicodeString;
begin
 Result := AttributeNodes['tamanho'].Text;
end;

procedure TXMLCapaType.Set_Tamanho(Value: UnicodeString);
begin
 SetAttribute('tamanho', Value);
end;

{ TXMLPaginasType }

procedure TXMLPaginasType.AfterConstruction;
begin
 ItemTag := 'pagina';
 ItemInterface := IXMLNode;
 inherited;
end;

function TXMLPaginasType.Get_Pagina(Index: Integer): UnicodeString;
begin
 Result := List[index].Text;
end;

function TXMLPaginasType.Add(const Pagina: UnicodeString): IXMLNode;
begin
 Result := AddItem(-1);
 Result.NodeValue := Pagina;
end;

function TXMLPaginasType.Insert(const Index: Integer; const Pagina: UnicodeString): IXMLNode;
begin
 Result := AddItem(Index);
 Result.NodeValue := Pagina;
end;

{ TXMLArtigosType }

procedure TXMLArtigosType.AfterConstruction;
begin
 RegisterChildNode('categoria', TXMLCategoriaType);
 ItemTag := 'categoria';
 ItemInterface := IXMLCategoriaType;
 inherited;
end;

function TXMLArtigosType.Get_Categoria(Index: Integer): IXMLCategoriaType;
begin
 Result := List[index] as IXMLCategoriaType;
end;

function TXMLArtigosType.Add: IXMLCategoriaType;
begin
 Result := AddItem(-1) as IXMLCategoriaType;
end;

function TXMLArtigosType.Insert(const Index: Integer): IXMLCategoriaType;
begin
 Result := AddItem(Index) as IXMLCategoriaType;
end;

{ TXMLCategoriaType }

procedure TXMLCategoriaType.AfterConstruction;
begin
 RegisterChildNode('artigo', TXMLArtigoType);
 ItemTag := 'artigo';
 ItemInterface := IXMLArtigoType;
 inherited;
end;

function TXMLCategoriaType.Get_Designacao: UnicodeString;
begin
 Result := AttributeNodes['designacao'].Text;
end;

procedure TXMLCategoriaType.Set_Designacao(Value: UnicodeString);
begin
 SetAttribute('designacao', Value);
end;

function TXMLCategoriaType.Get_Artigo(Index: Integer): IXMLArtigoType;
begin
 Result := List[index] as IXMLArtigoType;
end;

function TXMLCategoriaType.Add: IXMLArtigoType;
begin
 Result := AddItem(-1) as IXMLArtigoType;
end;

function TXMLCategoriaType.Insert(const Index: Integer): IXMLArtigoType;
begin
 Result := AddItem(Index) as IXMLArtigoType;
end;

{ TXMLArtigoType }

function TXMLArtigoType.Get_Titulo: UnicodeString;
begin
 Result := AttributeNodes['titulo'].Text;
end;

procedure TXMLArtigoType.Set_Titulo(Value: UnicodeString);
begin
 SetAttribute('titulo', Value);
end;

{ TXMLEquipaType }

procedure TXMLEquipaType.AfterConstruction;
begin
 ItemTag := 'membro';
 ItemInterface := IXMLNode;
 inherited;
end;

function TXMLEquipaType.Get_Membro(Index: Integer): UnicodeString;
begin
 Result := List[index].Text;
end;

function TXMLEquipaType.Add(const Membro: UnicodeString): IXMLNode;
begin
 Result := AddItem(-1);
 Result.NodeValue := Membro;
end;

function TXMLEquipaType.Insert(const Index: Integer; const Membro: UnicodeString): IXMLNode;
begin
 Result := AddItem(Index);
 Result.NodeValue := Membro;
end;

{ TXMLEquipaType2 }

end.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
pikax

True. Hei-de continuar a manter até que fique sem teclado :P

Podes usar e abusar, está lá para isso.

http://programar.sergioribeiro.com/programar.xml

desconhecia, posso utilizar para a app do win8? :)


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Share this post


Link to post
Share on other sites
ribeiro55

Força


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
Kline777

Nice :)

Em termos de código a coisa é bastante directa... agora para ficar uma app android de jeito é que vai ser o triplo do tempo no layout e desempenho :P

Share this post


Link to post
Share on other sites
thoga31

@ribeiro55, obrigado por indicares o sítio onde tens o XML, confesso que já não me lembrava. ;)

@nunopicado, tenho de ver se isso funciona no Free Pascal, mas creio que não, a FCL-XML não inclui essas units. Sabes que eu não uso o Delphi, e já não seria a primeira vez que não conseguia usar algo útil fornecido por ti.

O mais provável é ter de procurar pela net ou, em último caso, fazer eu um pequeno parser só para este XML em particular (o qual não é, aliás, difícil de analisar).

Fico contente por ver que esta minha brincadeira que fiz numa tarde está a gerar interesse na criação de aplicações para a Revista. That's the spirit! :D:)

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
nunopicado

@nunopicado, tenho de ver se isso funciona no Free Pascal, mas creio que não, a FCL-XML não inclui essas units. Sabes que eu não uso o Delphi, e já não seria a primeira vez que não conseguia usar algo útil fornecido por ti.

O mais provável é ter de procurar pela net ou, em último caso, fazer eu um pequeno parser só para este XML em particular (o qual não é, aliás, difícil de analisar).

Pode ser que funcione... Esta unit, e todos os objectos contidos, são gerados automaticamente a partir do XML.

Experimenta se funciona, mas se não funcionar, é capaz de haver algo semelhante para FPC, não te ponhas a criar um parser para aquilo, que dás em doido num instante! :)


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Kline777

Bah, la estou eu a tentar reinventar a roda... era para usar uma ferramenta que fiz estes dias para importar ficheiros de texto mas já me estou a passar. Mais valia ter logo usado a tua unit nunopicado.

Isto é gerado automaticamente?

Share this post


Link to post
Share on other sites
nunopicado

Bah, la estou eu a tentar reinventar a roda... era para usar uma ferramenta que fiz estes dias para importar ficheiros de texto mas já me estou a passar. Mais valia ter logo usado a tua unit nunopicado.

Isto é gerado automaticamente?

Sim...

Num projecto aberto, fazes Novo -> XML -> XML Data Binding.

Segues os passos, e voilá, tens as classes todas criadas e prontas a usar.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
thoga31

Versão 1.1.0-beta

O código está reestruturado, apesar de ainda precisar de trabalho.

A aplicação e o seu código estão sob a licença GNU GPL 3.0 sendo, portanto, open-source.

Esta é a minha primeira aplicação open-source. :)

Edited by thoga31

Knowledge is free!

Share this post


Link to post
Share on other sites
Kline777

Sim...

Num projecto aberto, fazes Novo -> XML -> XML Data Binding.

Segues os passos, e voilá, tens as classes todas criadas e prontas a usar.

Funciona bem no windows mas crasha no android por causa duma ' num dos titulos dos artigos :/ será limitaçao do android ou parvoeira desse XML que ele gera? :(

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.