| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
AnimaSubtilis Ens

Registrado: 25 Jun 2008Mensajes: 26Ubicación: Bogota Colombia
|
Publicado: Vie 16 Abr, 2010 3:06 pm Asunto: Manejar formatos RSS |
|
|
Buenas a todos....
En este momento estoy mirando informacion sobre rss..
la verdad conozco poco sobre el tema y estoy investigando sobre eso....
acudo a ustedes para pedirles ayuda en la consecucion de informacion y la forma de leer dichos archivos en builder.....
cualquier pagina u informacion en la que me puedan colaborar estare bastante agradecido y sera util pa salir del fondo en que ando...
gracias de antemano... _________________ A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales
↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓ |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 21 Abr, 2010 5:43 am Asunto: |
|
|
Las especificaciones las puedes encontrar en: http://www.rssboard.org/rss-specification
Y para leerlo puedes usar el componente "TXMLDocument" (pestaña: "Internet").
Un ejemplo, añade un "TXMLDocument" (XMLDocument1), un "TMemo" (Memo1) y el siguiente código en el constructor del Form:
| Código: | // Compatibilizar versiones
#ifdef _DELPHI_STRING_UNICODE
typedef UnicodeString LString;
#else
typedef WideString LString;
#endif
// Para hacer mas comoda la lectura si el campo es de texto, datos, vacio..
struct LOCAL {
static inline String ChildValue(_di_IXMLNode node, LString name)
{
_di_IXMLNode cnode = node->ChildNodes->GetNode(name);
return (cnode->IsTextElement) ? cnode->Text : (cnode->ChildNodes->Count)
? cnode->ChildNodes->Get(0)->Text : LString("");
}
};
XMLDocument1->FileName = "http://blogs.embarcadero.com/feeds/wpmu-feed/";
XMLDocument1->Active = true;
_di_IXMLNode node = XMLDocument1->DocumentElement->ChildNodes
->First()->ChildNodes->FindNode(LString("item"));
while (node)
{
LString title = LOCAL::ChildValue(node, "title"),
link = LOCAL::ChildValue(node, "link"),
desc = LOCAL::ChildValue(node, "description");
Memo1->Lines->Append("TITULO: " + title + "\r\nENLACE: "
+ link + "\r\nDESCRIPCION: " + desc + "\r\n");
node = node->NextSibling();
} |
En el ejemplo uso las 3 etiquetas mas típicas, aunque hay muchas mas que puedes mirar en las especificaciones.
(Probado en las versiones 6 y 2010 en Windows 7)
NOTA: En la versión 6 Profesional no viene instalado este componente por defecto (originalmente solo venia en la Enterprise), pero se puede descargar desde: http://cc.embarcadero.com/Item.aspx?id=18938. En las versiones superiores ya viene incluida en la edición profesional.. |
|
| Volver arriba |
|
 |
AnimaSubtilis Ens

Registrado: 25 Jun 2008Mensajes: 26Ubicación: Bogota Colombia
|
Publicado: Mie 21 Abr, 2010 2:26 pm Asunto: |
|
|
Gracias Leo...
he probado tu codigo y se trunca en un lado..
me puse a realizar la depuracion del codigo y el error o volcamiento de memoria ocurre al momento de cargar los valores de titie, description...
| Código: | while (node)
{
LString title = LOCAL::ChildValue(node, "title"),//aca se daña
link = LOCAL::ChildValue(node, "link"),
desc = LOCAL::ChildValue(node, "description");
Memo1->Lines->Append("TITULO: " + title + "\r\nENLACE: "
+ link + "\r\nDESCRIPCION: " + desc + "\r\n");
node = node->NextSibling();
} |
Cuando se estan cargando los valores... al menos conte el numero de nodos de un rss y son correctos.. la verdad no se si se requiera alguna libreria o algo extra... trabajo con la version 6 y venia el componente de xml directo..
gracias de antemano... _________________ A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales
↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓ |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 21 Abr, 2010 2:56 pm Asunto: |
|
|
| Que quieres decir con que se se daña ? te ocurre con el enlace que he puesto ? o al usar otro ? te da algún código de error ? |
|
| Volver arriba |
|
 |
AnimaSubtilis Ens

Registrado: 25 Jun 2008Mensajes: 26Ubicación: Bogota Colombia
|
Publicado: Mie 21 Abr, 2010 3:00 pm Asunto: |
|
|
upss Leo que pena miento sirve perfectamente.....
lo que pasa es que cuando lo corria en Builder me salia el cuadro
donde sale el asm pero corri directamente el exe y ya...
creo que no he configurado bn mi Builder...
mil y mil gracias...... _________________ A menudo unas pocas horas de «prueba y ensayo» podrán ahorrarte minutos de leer manuales
↑°°°°ÄNÍMÄ §ÛBTÍLͧ°°°°↓ |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Mie 21 Abr, 2010 3:45 pm Asunto: |
|
|
| AnimaSubtilis escribió: | lo que pasa es que cuando lo corria en Builder me salia el cuadro
donde sale el asm pero corri directamente el exe y ya... |
Esto es normal, ya que encuentra una instrucción "int 3" que provoca las paradas. Una forma de evitarlo es marcando el siguiente checkbox:
MENU: Project -> Options... -> PESTAÑA: Linker -> CHECKBOX: Use debug libraries
(En la versión 2010 que es la otra con la que había probado no es necesario) |
|
| Volver arriba |
|
 |
|