• Martes 5 de Noviembre de 2024, 20:38

Autor Tema:  Problema con la segunda lista  (Leído 8967 veces)

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Problema con la segunda lista
« en: Martes 29 de Abril de 2003, 13:36 »
0
Buenas a tod@s:

Aqui os dejo la continuacion del programa para buscar archivos con estension C y H, y crear una lista con ellos, ahora despues de esto lo que hago es leer todos los archivos y saco de ellos los "define" que tenga, y creo otra lisat con ellos.

Mi problema viene a la hora de hacer esta segunda lista, sepende el momento el Borlandc me funciona hasta los 210 elementos, o hasta lo 700 algo, epro luego peta.

No se donde estare metiendo la pata, me imagino que no trabajare bien con la memoria, a parte siempre me crea la lista en el mismo sector de memoria, pero cuano llega al final no pasa a otro para seguir creandome la lista, es cuando me peta.

A parte os dejo el achivos "dir.h", ya que parece ser que no es estandar, si alguien tiene algun porblema con algun otro que me lo diga y se lo envio o lo pongo aca.

Un saludo a todos y muchas gracias

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #1 en: Martes 29 de Abril de 2003, 13:37 »
0
Aqui os dejo un include que creo que no es estandar
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #2 en: Martes 29 de Abril de 2003, 13:38 »
0
O este otro :beer:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #3 en: Martes 29 de Abril de 2003, 22:09 »
0
estuve mirando tu programa y ya + o -  lo entendi, hay cosas que no me sirvieron porque veo que usas c++ y
1-c++ no es mifuerte y hay cosas que hmmm
2-no tengo compilador de c++ aqui en la oficina.

Sin embargo veo que vas como bien, y te felicito, me he tomado el atrevimiento de hacerte una recomendacion, y es que utilices multiples archivos de copdigo fuente , con el fin de ordenar màs tu programa porque esta demasiado extenso para un solo archivo y por tanto te queda algo desordenado, si tienes inconvenientes en esto te puedo asesorar.
ojala alguien te ayude con tu programa.
Por el momento no tengo mucho tiempo para aprender lo que me falta de c++ que es bastante, ya que estoy aprendiendo c y c# asi qu de tiempo...ni 5.

Chauu..

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #4 en: Miércoles 30 de Abril de 2003, 11:09 »
0
Hola Juank,

te puedes tomar todo el atrevimiento que quieras, ya que no tengo mucha idea y siempre es bueno que la gente te diga como mejorar cosa.

Creo que mi programa no tiene nada de C++, lo que hago es programar segun yo con C aunque luego los archivos se guardan con la extension "cpp", qunque puede ser que tenga alguna instruccion en C++, ya que ando mirando los dos lenjuages para programar.

Con lo de multiples archivos de codigo fuente, te refieres a que haga casi cada funcion o modulo en un programa aparte?, no me ha quedado muy claro, si me puedes dar mas datos sobre esto te lo agradeceria.

Muchas gracias.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #5 en: Miércoles 30 de Abril de 2003, 14:18 »
0
Más o menos esa es la idea.
Lo más recomendable es que en cada archivo ubiques tareas especificas, por ejemplo si tienes funciones que trabajan el archivo en memoria, lo recomendable es que haya un archivo donde esten todas estas funciones, si hay funciones que solo hacen trabajos del archivo en disco..igualmente, si manejas estructuras de datos, todas estas funciones de manejo de esta estructura, desde su creacion, hasta el dezplazamiento, insercio o borrado de datos, deberian ir por aparte, todo es cuestion de que clasifiques tus funciones de acuerdo a lo que hagan.
Debes ser precabido y de preferencia todas las definiciones de tu programa meterlas en un archivo .h, asi en tu programa en vez de escribir:
 
Código: Text
  1. /*~-1*/
  2. /*~XSF_LANGUAGE: C/C++*/
  3. /*~K*/
  4. /*~+:Este Programa busca en el dico
  5. duro en la carpeta que se le indique
  6. todos los archivos con estension C o H,
  7. crea una lista con ellos, y despues lee
  8. todos los archivos que estan en esta lista
  9. para buscar los "define" que hay en ellos
  10. , y realiza otra lista con estos.*/
  11. /*~K*/
  12. /*~+:Libresias*/
  13. /*~T*/
  14. #include <alloc.h>
  15. #include <conio.h>
  16. #include <dir.h>
  17. #include <dirent.h>
  18. #include <dos.h>
  19. #include <stdio.h>
  20. #include <stdlib.h>
  21. #include <string.h>
  22.  
  23. /*~K*/
  24. /*~+:Estructuras de las dos Listas*/
  25. /*~T*/
  26. struct ListaArchivos { char *NombreArchivo;
  27.                        char *NombreCarpeta;
  28.                        int  Indentificador;
  29.                        ListaArchivos *Archivo_anterior_Ptr, *Archivo_siguiente_Ptr;
  30.                        ListaArchivos ()
  31.                        : Archivo_anterior_Ptr(NULL), Archivo_siguiente_Ptr(NULL) {};
  32.                      } ;
  33.  
  34. struct ListaDefines { char *NombreDefine;
  35.                       int  NumeroElemento;
  36.                       ListaDefines *Define_anterior_Ptr, *Define_siguiente_Ptr;
  37.                       ListaDefines ()
  38.                       : Define_anterior_Ptr(NULL), Define_siguiente_Ptr(NULL) {};
  39.                     } ;
  40. /*~K*/
  41. /*~+:Variables Globales*/
  42. /*~T*/
  43. struct ListaArchivos *ListaArchivos_Ptr = NULL;
  44. struct ListaDefines *ListaDefines_Ptr = NULL;
  45. int i = 0;
  46. int j = 0;
  47. int k = 0;
  48. int PrimerVez_bt = 0;
  49. int PrimerFallo_bt = 0;
  50. int Fallo = 0;
  51. int Indentificador_u16 = 0;
  52. int Numero_u16 = 0;
  53. int YaExiste = 0;
  54. int YA = 0;
  55. int YA1 = 0;
  56. /*~K*/
  57. /*~+:Constantes*/
  58. /*~T*/
  59. #define FinalLinea        ''
  60. #define Tabulador         0x09
  61. #define Retorno           0x0A
  62. #define Espacio           0x20
  63. #define Almoadilla        0x23
  64. #define ParentesisAbierto 0x28
  65. #define ParentesisCerrado 0x29
  66. #define Punto             0x2E
  67. #define Semicoma          0x3B
  68. #define Letra_C           0x43
  69. #define Letra_H           0x48
  70. #define LlaveAbierta      0x7B
  71. #define LlaveCerrada      0x7D
  72. #define Copyright         0xA9
  73. #define MAX_LONG_D_N      14
  74.  
  75.  
metes todo eso dentro de un archivo .h, por ejemplo radarman.h y colocas esto en
el encabezado de tu programa asi:
#include"radarman.h"
si usas variables globales, en cada archivo que las vuelvas a usar deberas colocar: ejm

extern int mivariable;

sin embargo en el archivo donde este lña declaracion lo colocas normalmente
int mivariable;

Eso es todo por el momento

Por otro lado, seguramente esque hay codigo que no conozco en c, por eso dije que tu programa era cpp y tal vez sea algo de c que nunca he manejado, por ejemplo:
 
Código: Text
  1. struct ListaArchivos { char *NombreArchivo;
  2.                        char *NombreCarpeta;
  3.                        int  Indentificador;
  4.                        ListaArchivos *Archivo_anterior_Ptr, *Archivo_siguiente_Ptr;
  5. /*--------------------------------------------------*/
  6.                         ListaArchivos ()
  7.                        : Archivo_anterior_Ptr(NULL), Archivo_siguiente_Ptr(NULL) {};
  8.  
  9. /*-------------------------------------------------*/
  10.                      } ;
  11.  
  12.  

Me perdonas por la ignorancia pero realmenmte no se que hace la instruccion que te coloque entre lineas.
Me explicas porfa...

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #6 en: Miércoles 30 de Abril de 2003, 15:30 »
0
Buenas otra vez,

tienes toda la razon eso es C++, no me habia dado cuenta, pero ahora si que estoy seguro que es lo unico.

Entonces esto:

struct ListaArchivos { char *NombreArchivo;
                       char *NombreCarpeta;
                       int  Indentificador;
                       ListaArchivos *Archivo_anterior_Ptr, *Archivo_siguiente_Ptr;
/*--------------------------------------------------*/
                        ListaArchivos ()
                       : Archivo_anterior_Ptr(NULL), Archivo_siguiente_Ptr(NULL) {};

/*-------------------------------------------------*/
                     } ;
--------------------------------------------------------------------------------

en C es:

struct DateiElement { char *DateiName;
                      char *OrdnerName;
                      int  Handler;
                      DateiElement *vorherige_Datei_Ptr, *naechste_Datei_Ptr;
                    } *vorherige_Datei_Ptr = NULL, *naechste_Datei_Ptr = NULL;

_________________________________

que me imagino ya lo conoceras.

De todas formas tengo el problema que tengo es que no puedo insertar mas de 775 elementos en la segunda lista, y necesito poder hacerlo porque tengo muchos mas.

Cuando lo miro con el Borlandc me indica que se guarda en un segmento cualquiera xxxx : yyyy ds : xyzt, pero cuando el "ds" me llega la limite se para y no se pasa a otro segmento de memoria, entonces queria saber si es posible indicarle que lo haga para que me siga creando la lista.

Un saludo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #7 en: Miércoles 30 de Abril de 2003, 15:58 »
0
1- trata de usar algo diferente a borland, ya que otros compiladores ya te tienen solucionado ese problema implicitamente.
2-Como la memoria ha llegado a su tope, deberias pensar en un medio de almecenamiento secundario, es decir cada que completes x cantidad de registros deberas bajar estos registros a un archivo en disco que puedes utilizar de manera temporal, y asi liberar los registros en memoria, mejor dicho es como hacer un reciclado de memoria... espero que me haya hecho entender...

JuanK
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #8 en: Lunes 5 de Mayo de 2003, 10:11 »
0
Hola juank,
muchas gracias por tus aclaraciones, pero si puedo abusare un poco mas de tus conocimientos y paciencia.

Te explico lo que he cambiado, he hecho una rutina que me crea un archivo "txt" cada vez que llego a los 700 elementos, entonces segun yo despues borro la lista y creo una nueva otra vez hasta los 700 elementos, el problema viene a la hora de borrar la lista, segun yo lo tengo que hacer con el "free" ya que la creo con "malloc", pero eso no ocurre.

Entonces te pediria si puedes ver la sutina de borrar lista de defienes (es con la que estoy trabajando ahora) y ver si puedes encontrar el fallo.

Muchas gracias.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #9 en: Lunes 5 de Mayo de 2003, 15:34 »
0
En las 2 rutinas don de efectuas el "borrado" lo que estas haciendo  es cambiando la direccion del apuntador.
Recuerda que cuando utilizas malloc, lo que haces es "reservar" una porcion de la memoria, una vez reservada creas una variable que apunte a ese segmento.
Por ejemoplo imagina que llamas a malloc pero que no le asignas el resultado a nada, es decir:
 
Código: Text
  1.  
  2. int main()
  3. {
  4.  .
  5.  .
  6.   malloc(5);
  7. }
  8.  
  9.  
Esto no te arroja ningun error...per que paso con la memoria que llamaste con malloc?..pues que quedo reservada, entonces si tu le asignas null al puntero, le estas es cambiando su direccion, mas no liberando la memoria que ha sidio reservada, para esto necesariamente debes utilizar free();
No he estudiado muy a fondo tu programa, asi que es probable que me quede algun "agujerillo" pendiente por ahi, pero de todod modos se supone que este codigo funciona, por que es el que yo uso cuando trabajo con listas.
 
Código: Text
  1.  
  2. int BorrarListaDefine (void)
  3. {
  4. /*JUANK*/
  5.    struct ListaDefines *aux= NULL;
  6.    
  7.    PrincipioListaDefine ();
  8.    aux = ListaDefines_Ptr;
  9.    while(ListaDefines_Ptr->Define_siguiente_Ptr!=NULL)  
  10.    {
  11.       ListaDefines_Ptr=aux;
  12.       aux = aux->Define_siguiente_Ptr;
  13.       free(ListaDefines_Ptr);
  14.    }
  15.    return 1;
  16. }
  17.  
  18.  
Espero que te sea de utilidad.
Chau

JuanK.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #10 en: Martes 6 de Mayo de 2003, 09:48 »
0
Gracias Juank,

lo estoy probando y el Borlandc se me cierra, eso es me imagino por algun problema en la memoria al compilar el programa, voy a ver si lo puedo arreglar y te comento como anda el tema.

Otr pregunta que te queria hacer es con relacion a lo de programar con multiples archivos, te refieras a por ejemplo: (sino es asi por favor corrigeme)

1.-Archivo: main.c, donde este lo principal y los #includes para los demas archivos, y xon los modulos de concatenar cadenas, ver la extension de archivo, y el de ver si es archivo o carpeta.
2.-Archivo: EncontrarArchivo, el modulo para buscar en el disco duro.
3.-Archivo: Crear lista de archivos (c, h), y manejarme en ella, o sea, los modulos de ir al principio, al final, ... tambien aqui o en otro archivo.
4.-Archivo: El mosulo para abrir y leer todos los archivos que tengo en la lista.
5.-Archivo: Lo mismo que el de la lista de archivos (c, h) pero para los defienes.

Seria algo asi?.

Con el tema de los compiladores, me baje de internet todo lo del "dgjcc" o algo asi, pero al final lo borre todo porque era un rollo estar descomprimiendo todos los zip que necesitaba el programa, asi que sigo con el Borlandc.

Bueno un saludo, y muchas gracias.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #11 en: Martes 6 de Mayo de 2003, 14:37 »
0
mas o menos a eso es a lo que me refiero con lo de los archivos.

con respecto al dgjpp....no es dificil..es solo cuestion de practica.
1-baja los archivo que necesites.
2-por la consola de comandos entra a la carpeta donde tienes los zip y dale esta instruccion:

dir >>lista.bat

esto tre crea un archivo llamado lista.bat, que contine algo asi:

19/04/2003  08:55              157.507 SRS.zip
19/04/2003  09:39               52.048 Toon.zip
               8 archivos    186.351.276 bytes
               5 dirs   1.504.063.488 bytes libres
o sea  que te ha mandado lo de la pantalla al archivo.

borras todo lo que no te sirva para que te quede asi:..borrarlo es facil porque es repetitivo.

SRS.zip
Toon.zip

una vez este asi le agregas lo siguiente al contenido de cada linea

unzip -o SRS.zip -d c:dgjpp
unzip -o Toon.zip -d c:djgpp

-o  es para sobreescribir y -d para decirle en que directorio descomprimir..recuerda que el unzip.exe lo bajas de tambien de la pagina del djgpp..


bueno una vez hayas echo esto como con 30 lineas mas o menos que debes tener, cierras el archivo y lo guardas, le das doble click..y listo.

Sio te fijas te puede parecer aburridoramente largo, pero no lo es tanto porque puedes hacer el archivo como una tabla de excel y luego lo guardas como texto separado por comas, de este modo luego es solo quitar las comas...  no se si me haga entender pero es refacil...
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #12 en: Miércoles 7 de Mayo de 2003, 14:48 »
0
Hola de nuevo :beer:,

oye me podrias decir que archivos son los que me tengo que bajar para programamr en C solo y usar el dgjpp.

He vuelto a crear las lista de otra manera, pero me sigue cerrandoseme el Debugger cuando debugeo el programa.

Un saludo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #13 en: Miércoles 7 de Mayo de 2003, 15:25 »
0
puedes bajar vtodos, pero recomendadion es que solo bajes lo quwe creas que vas a usar, estos son los que yo uso, y este es un link de otra respuesta que que publique hace un tiempo aqui en el foro...
http://foros.solocodigo.com/viewthread. ... 6&pid=8201

si quieres revisa la pregunta en el foro para novatos..donde solicitan insertar una imagen gif..ahi encontraras muchas cosas que te pueden servir.

Si cambias las cosas que tienes en c++ ac, te prometo que te ayudare mas , ya que ..bueno puedo aprender c++, al fin y al vcabo ya manejo varios lenguajes OO, pero el problema es que pafra instalar un compilador de c++ aqui en la empresa es como complicado.. de hecho por eso instale el djgpp inicialmente, porque no necesitas tener privilegios de administrador para instalarlo..;)

chau

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #14 en: Miércoles 7 de Mayo de 2003, 15:58 »
0
Buenas de nuevo,

anda que andaras hasta las narices de mi, pero bueno insisto:), el archivo TT que me bajo con el lin que me has puesto son los archivos que te bajaste tu??.

Es necesario tambien el Rhide???.

Creo que mi programa esta todo en C, pero le echare otro vistazo para asegurarme, con respecto a los cambios que he realizado con tu ayuda, cada vez que debugeo el programa, con la nueva forma de borrar las lista, se cierra el compilador, eso creo que es porque accede el programa a lugares de memoria no permitidos para el, no?.

Bueno sigo probando a ver si consigo borrar las puñeteras lista.

Un salduo.

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #15 en: Jueves 8 de Mayo de 2003, 10:14 »
0
Buenas de nuevo,

El link que me has puesto me descarga un archivo TXT, esos son los archivos que me tendria que bajar para programar en C?.

Creo que mi programa esta completamente en C menos lo de las estrucutras, pero eso ya te dije como cambiarlo, no?, si hay algo mas dimelo, asi lo vuelvo a escribir todo en C y lo subo otra vez.

Con los cambios que he hecho con tu informacion para borrar las listas cada vez qeu debugeo el programa se cierra por un fallo el Borlandc, asi que creo que es porque estoy pisando memoria que no deberia usar, si quito el modulo de borrar me va bien, con los problemas de siempre preo lo puedo hacer correr.

He intentado hacer las listas de otra manera, pero sigo con lo mismos problemas.

Ando desesperado, ya que es una practica la que esty haciendo en una empresa y se supone que el programa lo tiene que usar luego la empresa, pero a este ritmo no creo que lo acabe.

Un saludo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #16 en: Jueves 8 de Mayo de 2003, 14:55 »
0
Por que no me lo dijiste antes...
eso es muy importante para ti...
tengo que hablar contigo porque siendo para una empresa...debes cambiar algunas cosas Urgente!!!!...

El rhide no es necesario pero si muy recomendable
La lista son los archivos que yo baje, que seguramente son mas de los miniman¡mente necesarios, pero los baje porque todos son de utilidad, estan las ayuda, las librerias del make, de manejar zips, y jpgs, y las de allegro.

Porfa reenviame la ultima version de tu codigo.. hay que ir cambiando algunos aspectos crìticos... yo te ayudo con algunos , y otros ye digo como hacerlos..

Debiste haberme dicho antes la importancia de este trabajo.. .:comp:

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #17 en: Viernes 9 de Mayo de 2003, 09:07 »
0
Bueno dias de nuevo,

Este programa es el bueno al enterior no le habia hecho als modificaciones en el modulo de borrar lista.

Muchas gracias de nuevo
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #18 en: Miércoles 14 de Mayo de 2003, 18:14 »
0
Como estas?---

Bueno he revisado tu programa yu aunque inicialmente no iva a revisar la funcion de busqueda decidi hacerlo y pues hay varias inconsistencias...
recuerda que el sw es para una empresa y debes ser exigente en cuanto a la calidad y el control de errores.

-En el algoritmo que tienes diferencias los archivos de las carpetas solo por el punto, y resulta que pueden existir archivos sin punto y carpetas con punto...
este es un punto critico!!!

-Adicionalmente hay un par de validaciones menores por ahi, que ya he corregido en esta nueva version de la funcion,
-Es importante tambien que revices como he construido las listas y las funciones que mueven al primer y ultimo nodo
-Observa que se suprime el uso de variables globales, lo cual es muy recomendable, mas aun cuando esta funcion utiliza recursividad.
-El codigo es mas largo que el de la version original que poseias y esto es porque para lograr calidad en el codigo, por lo general se incrementa el numero de lineas..todo con tal de no dejar "huecos" que nos puedan generar inconsistencias graves en la aplicacion.
-El codigo que te envio esta bastante compacto, pero no quiere decir que no se pueda volver aun más compacto, ya que no dispongo de mucho tiempo para realizar una labor de depuracion exaustiva.
-Solo resta que modifiques la funcion para tu programa, ya que como es un ejemplo la `parte de la impresion en pantalla es innecesaria.-Te pido disculpas por la documentacion pero ya sabes los motivos de tiempo...:(
:comp: sin embargo creo que el codigo en su mayoria esta facil de leer aun sin documentacion.
:angel: espero que esto te sirva de ayuda, pues lo primero es optimizar el codigo existente para luego continuar, si tienes dudas del codigo me cuentas.

Estamos hablando.. en cuanto sea posible y mi trabajo y m,i u me lo permitan, continuare ayudandote con esto.

juank
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #19 en: Jueves 15 de Mayo de 2003, 11:14 »
0
Buenas Juank,

gracias por seguir ayudandome, a ver, he estado irando el codigo que me ahs mandado y tengo un par de dudas, espero que no sean muy tontas las preguntas que te voy a plantear, pero al fin y al cabo hace tres meses no sabia nada de C.:o

A ver por partes:

En la funcion BuscaFiles, el tercer parametro que le das a la funcion es un int, pero no entiendo para que lo necesitas, le das el valor 1 o 0, de que depende?.

Se puede pasar como segundo parametro de la funcion BuscaFiles, el "argv[]", me imagiono que si, no se,voy a ir adaptando el codigo que me has mandado al mi programa.

La instruccion "memset", es para borrar lo que tenga la memoria a la que apunta el puntero que usas con la instruccion?

Hay alguna diferencia entre _Lista Lista ( es un _ o dos __ ), y porque haces lo del typedef y despues defines las estrucutura, no se podria hacer:

typedef struct _Lista { ...... }Lista;

Creo que por ahroa son todas mis dudas sobre le codigo que me has mandado, pero ya te digo que voy a probarlo e igual me las contsto yo mismo al ir probando el codigo en mi programa o me creo nuevas, jeje.

Bueno nos mantenemos en contacto.
:good:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #20 en: Jueves 15 de Mayo de 2003, 14:44 »
0
1- Depende de que si es la primeras ejecucion de la funcion, es decir no es invocada recursivamente, entonces imprime el resultado en pantalla, si es un hijo, o sea que ha sido invocada recursivamente, entonces no imprime nada... para efectoas de tu programa debes quitar esta parte y por ende la parte de la impresion.

2-si... pero mejor que no lo hagas, es más practico para el usuario que pida esta informacion en el  transcurso de la ejecucion.

3-memset llena un buffer con el valor especificado, asi que

memset(buffer, '',sizeof(buffer));

llena la variable buffer con caracteres null, en todo el tamaño del buffer.

memset(buffer, '', 5);

esta haria lo mismo pero en las primeras 5 posiciones del buffer.

4-si se puede hacer, lo de haberlo llamado __Lista y depues del typedef Lista, es solo para facilitarme la estructura del codigo, ya que es mas largo escribir

struct Lista *mylist;    o
struct __Lista *mylist;

y mas corto

Lista *mylist;

5-Espero que sigas despjando tus didas,. en cuanto tenga tiempo, tratare de ayudarte más.

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #21 en: Viernes 16 de Mayo de 2003, 13:02 »
0
Aupa juank,

oye he estado trabajando con tu programa en el debuger, y o no me entero o no esta bien, ya que no encuentro donde haces la lista, no veo que se genere ninguna lista.

Ya te digo que seguramente no me entere pero bueno, un apregunta para hacer las lista con puntero "far", necesito declarar todos como far, o con declarar los de la estructura vale?

Un saludo.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #22 en: Viernes 16 de Mayo de 2003, 15:58 »
0
Para la lista no tienes necesidad alguna de utilizar punteros far... de hecho creo que seria contraproducente.

la lista se crea en la variable listaf y en el main se recibe en la variable  fl

fl = BuscaFiles(fl,"c:sw",1);

y dentro de la funcion busca files dentro de listaf

listaf=BuscaFiles(listaf,listad->path,0);

Como le haces debug a los programas?
para hacer una inspeccion al contenido del apuntador de la lista deberias hacerle la inspeccion a la exprecion
*listaf

en otras palabras todo te queda asi:

JUANK
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

radarman

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Problema con la segunda lista
« Respuesta #23 en: Lunes 19 de Mayo de 2003, 11:02 »
0
Buenas,
 
a ver en principio esto no tiene nada que ver con todo lo que estamos haciendo hasta ahora, pero es que he querido escribir todo el programa en diferentes programas, y tengo una duda, en los "includes" no se puede definir archivos .c solo valen los .h? y si es asi como puedo hacer que por ejemplo el modulo de Main, me llame al de EncontrarArchivo, y asi sucesivamente.

He probado porner sin mas el nombre del miodulo entre comillado, o poner todo el pafd o sea : .........NombreArchivo.c, pero no ha funcionado de ninguna de las dos maneras.

Respecto a lo de la lista, pues ando mas perdido que un pulpo en un garage, pero espero poder encontrar com poder equipara el codigo tuyo con mi codigo. Te mantendre informado.

GRacias.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Problema con la segunda lista
« Respuesta #24 en: Lunes 19 de Mayo de 2003, 15:59 »
0
hola,
tienes que llamar mi funcion , no el programa como tal,  y para hacerlo debes modificarla para que no utilice lo del parametro padre.
Solo algunas versiones de compiladores permiten llamar archiuvos .c en el include, pero casi nunca es necesario hacer eso , simplemente el codigo de una funcion esta en un archivo y el el main en otro, asi que creas un archivo que se llame como0 quieras y .h eje:  radarman.h
y en incluyes las definiciones de tipos de datos que utilizo en mi funcion y adicionalmente el encabezado de la funcion..
tal vez no sea sencillo, al comienzo esto solia tomarme del pelo pero con algo de tiempo y practica se vuelve muy util y sencillo...

Mejor dicho ahi te voy a ahorrar otro tiempo, dado que ahorita estoy con mis cosas de la U , no he podido seguir revisando tu apliacion.

En este zip van los archivos por separado y la forma de manejarlos, ademas ya modifique la funcion, optimice una linea de codigo y adicionalmente realice una fuerte documentacion de la misma para que liberes tus dudas.

Con los archivos anexos, deberas crear tu propio proyecto en el compilador que uses, si usas solo gcc por comandos, crea un bash que te compile los archivos asi:

gcc -o radarman juank.c FileWork.c ListWork.c

Bueno, espero que esto te haya sido de utilidad

hasta pronto.


Juank
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io