Ver Mensaje Individual
  #4  
Antiguo 11-08-2007
Avatar de b3nshi
b3nshi b3nshi is offline
Miembro
 
Registrado: feb 2005
Ubicación: Tucuman - Argentina
Posts: 164
Reputación: 20
b3nshi Va por buen camino
Se les ocurre alguna solucion?

Bueno esta es la estructura del archivo xml q estoy queriendo leer:
Código:
<?xml version="1.0"?>
<Agenda>
<Dia>Lunes
<Horario>Mañana</Horario>
<Horario>Tarde
<Actividad>ir a un lugar</Actividad>
</Horario>
<Horario>Noche
<Actividad>ir a un lugar</Actividad>
<Actividad>ir a un lugar</Actividad>
</Horario>
</Dia>
<Dia>Martes
<Horario>Mañana</Horario>
<Horario>Tarde</Horario>
<Horario>Noche</Horario>
</Dia>
<Dia>Miercoles
<Horario>Mañana</Horario>
<Horario>Tarde</Horario>
<Horario>Noche</Horario>
</Dia>
<Dia>Jueves
<Horario>Mañana
<Actividad>ir a un lugar</Actividad>
<Actividad>ir a un lugar</Actividad>
</Horario>
<Horario>Tarde</Horario>
<Horario>Noche</Horario>
</Dia>
<Dia>Viernes
<Horario>Mañana
<Actividad>ir a un lugar</Actividad>
<Actividad>ir a un lugar</Actividad>
</Horario>
<Horario>Tarde</Horario>
<Horario>Noche</Horario>
</Dia>
<Dia>Sabado
<Horario>Mañana</Horario>
<Horario>Tarde</Horario>
<Horario>Noche</Horario>
</Dia>
<Dia>Domingo
<Horario>Mañana</Horario>
<Horario>Tarde</Horario>
<Horario>Noche</Horario>
</Dia>
</Agenda>
En cada horario pueden cargar la cantidad de actividades q deseen...
Y este es el codigo q estoy implementando para ello... pero me aparece un error... al parecer es donde lo indico, pero no se porq...

Código Delphi [-]
//prodecimiento
var
h,d,j,i : integer;
nhorario: ttreenode;
ndia, nhor, nsec: IXMLNode;
const
dias : array [0..6] of string =  ('Lunes','Martes','Miercoles','Jueves','Viernes','Sabado','Domingo');
hora : array [0..2] of string =  ('Mañana','Tarde','Noche');

{bueno primero cargo el documento}
xml1.loadfromfile('agenda\' + enom.Text +'.lp');
xml1.Active := true;
{ahora tengo q empezar a leer}
d:= 0;
h:= 0;
  repeat//Para los dias
  ndia := xml1.DocumentElement.ChildNodes.First.ChildNodes.FindNode('Dia');
  nhor := ndia.ChildNodes.findnode('Horario'); //AQUI ESTA EL PROBLEMA
    repeat//este es para el horario
              //Aqui coloco un for para ir cargando en el treeview
              //Recorro todo el treeview
              for i := 0 to actividad.Items.Count - 1 do
                begin
                  if uppercase(trim(actividad.Items[i].Text)) = uppercase(trim(dias[d])) then
                    begin
                       for j := 0 to actividad.items[i].Count - 1 do
                          begin
                             if uppercase(trim(actividad.Items[i + j].Text)) = uppercase(trim(hora[h])) then
                               begin
                                 nhorario := actividad.Items[i + j];
                                 actividad.Items.AddChild(nhorario,nhor.ChildNodes['Actividad'].Text);
                               end;
                           end;
                       end;
                   end;//Fin del for principal

    h := h+1;
    nhor := nhor.NextSibling; //Avanzo al siguiente horario
    until  nhor = nil; //Repeat  de los horarios
  
  d := d+1; //Para moverme en el array de los dias
  ndia := ndia.NextSibling; //avanzo al siguiente dia
  until ndia = nil; //Este es el repeat de los dias
xml1.Active := false;
end;

Lo que intento hacer es cargar en un treeview q se llama "actividad" Tengo q aclarar q ese treeview ya tiene cargado los dias y los horarios... solo resta cargarle las actividades en sus respectivos horarios...

Espero q alguien pueda ayudarme... muchisimas gracias!

{Saludos}

Última edición por b3nshi fecha: 13-08-2007 a las 19:08:49.
Responder Con Cita