FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Es posible trabajar con un fichero de estructura variable?
Hola tengo un problemilla aver si me podéis ayudar...
Estoy haciendo una aplicación para gestionar MP3 además de info relacionada con el álbum y los artistas... Trabajo con registros (record) porque aun no sé utilizar bases de datos. Quisiera saber si hay una manera de hacer lo siguiente:
Esta estructura como tal, según mi delphi 2006, no está permitida porque debería definir un límite en la matriz para poder utilizar TAlbumInfo en un fichero de registros. Ahora sí me deja compilar. No da error en la estructura de datos. Un álbum podrá tener máximo 20 canciones. Pero el problema es... ¿qué pasa si tengo álbums de más de 20 canciones? Alguien me puede dar una solución? Gracias! |
#2
|
||||
|
||||
Hola xaguilars,
¿Estás seguro de que puedes hacer un archivo de arrays de registros? Yo hice la prueba... pero me resulta extraño el heho de que el compilador acepte algo como lo que tu dices. Se puede hacer un file of records, ¿pero... un file de arrays? Como dije... no hice la prueba... Para darte mayor libertad al asunto de guardar una cantidad arbitraria de canciones, yo creo que podrías considerar el uso de un TStringList. Ya que cuenta con LoadFromFile() y SaveToFile() que lo que hace es abrir y guardar el contenido de un archivo. Podrías valerte del empleo de una "marca" para determinar cuando termina un album y empieza otro. Podrías hacer algo como: *ALBUM:Un nombre#20 $Info cancion 1 $Info cancion 2 ... $cancion20 La idea es que *ALBUM sea como cabecera del album, los dos puntos una marca para indicar que lo que sigue es el nombre del album, y # correspondería a la marca que establece la cantidad de canciones que tiene el album. Para cada canción del album, siguiendo con el ejemplo: se indica que su "cabecera" es el símbolo $. Es una alternativa,... no es la mejor... pero a lo mejor te resulta. Yo hice algo parecido... para hacer un manejo de una playlist (ultima versión). Chequealo por si te interesa. Saludos, |
#3
|
||||
|
||||
Hola,
Si se trata de almacenar información en archivos y no usar bases de datos ahí están los formatos INI y XML. No se reinventa la rueda y por otro lado da juego a que estos archivos puedan leerse no sólo desde nuestra aplicación, por ejemplo, sino por cualquier progama capaz de procesar estos formatos. Vamos, digo yo, ¿eh? |
#4
|
||||
|
||||
Hola Dec, también estuve pensando en la posibilidad de un archivo INI... Y puede que sea recomendable. Al menos yo lo imagino algo así:
[ALBUM 1] Cantidad=20 Cancion 1=titulo canción 1#Artista$Duracion@etc... Cancion 2=titulo canción 2#Artista$Duracion@etc... .... Aunque aquel ejemplo de manejo de PlayList que hice hace ya bastante tiempo no es tan diferente a la manera en que trabaja un archivo INI. Mi idea, tal vez un poco descabellada, es guardar toda la info de cada canción en una línea. Una vez que se invoca a ReadString(), mediante alguna función o procedimiento leer cada "marca" y extraer la información entre ellas. Habría que ver que dice xaguilars. |
#5
|
||||
|
||||
Hola,
Sí; tal vez un archivo INI no sería lo más adecuado, pero, ¿qué me dices de un archivo XML? Ahí puedes incluso inventarte tu propia "estructura del documento". Tal vez por ahí pudieran ir los tiros, pero, también como tú dices, y, en todo caso, a ver qué dice el compañero que inició este Hilo. |
#6
|
||||
|
||||
Cita:
Como no lo empleo y no termino de comprender sus propósitos no opino mucho. He visto muchos archivos XML pero de comprender su funcionamiento no puedo decir. Tal vez les parezca un poco tonto pero me cuesta entender como y para que usarlos. Saludos, |
#7
|
|||
|
|||
Gracias por vuestras propuestas, no me esperaba q me respondieran tan rápido jeje. La verdad es que me han ayudado mucho a pensar y aquí tengo una posible solución...
Aquí os dejo un link con el esquema de los dos casos. Aún no lo he implementado. He ido escribiendo conforme me han surgido ideas... pero cuando lo intente os digo que tal... o si me podéis aconsejar antes mejor En cuanto a lo de XML no sé cómo funciona ni qué posibilidades tiene... Delphi lo trata como un fichero de texto? O puede interpretar el código? Bueno gracias por todo! Última edición por xaguilars fecha: 29-07-2007 a las 19:31:02. Razón: el formato de codigo no se visualizaba bien |
#8
|
||||
|
||||
Hola,
A partir de Delphi 6 (me parece) se cuenta con el componente "TXmlDocument", así como una serie de clases e interfaces de apoyo. Con estas herramientas es posible procesar archivos XML, insertar datos, obtenerlos, actualizarlos, etc. Además de el componente mencionado, a poco que busques en sitios como Torry's, encontrarás componentes para trabajar con XML desde Delphi. Pero, vamos, que es una opción más, que a lo mejor te basta y sobra como lo estás haciendo. |
#9
|
||||
|
||||
Vaya, si que le dieron muchas soluciónes mientras yo estaba en "otras"; acá les doy la mía que tiene mi estilo clásico:
En realidad no entiendo muy bien cuál es el problema? Incrementar (duplicar o triplicar) el tamaño del vector TAlbumInfo, no es ningun problema tomando en cuenta que el espacio de cada estructura es menor a un Kb. Ahora si el problema es el espacio que utiliza en disco tampoco lo veo muy problemático; si usaras una BD el espacio ocupado por ésta sobrepasaría los 100 Kb. SIN datos. Sin embargo para ahorrar algo de tamaño te aconsejaría utilizar un archivo sin "tipo", por ejemplo; abres tu pseudo BD, lees el primer caracter (Byte), el cual representará la cantidad de Albunes que tienes; luego entras a un bucle en el que lees un byte y en éste obtienes el tamaño del primer Track; lees el siguiente (segundo) y así susesivamente, claro que es mi perspectiva, y la adecúo un poco para fines genéricos:
PD: Utilizando una BD; no tendrás que preocuparte por los registros...; integridad, duplicidad, etc, etc, etc... (tampoco de componentes) |
#10
|
|||
|
|||
Hola cHackAll, gracias por tu propuesta. No sé si he entendido mal pero propones utilizar un fichero con un header o cabezera... me parece interesante e igual después estudio como adaptarlo a mi caso. Ayer estuve mejorando mi estructura de datos y me ha quedado de la siguiente manera (en realidad el programa ya estaba funcionando, pero estoy reescribiendo el código porque he añadido la función de manejar álbums que antes no tenía. Era el proyecto final de 1º de FP de Admin de sistemas jeje, ahora tengo k empezar 2º y allí empezamos con las BDD). Bueno ahí va:
Si os habéis fijado tengo algunos tipos y clases que sólo difieren del tipo de una variable o del tipo que recibe o devuelve un método. He probado de hacer una clase global y después subclases... pero sería lo mismo porque tendría que redefinir... ya que cada método de cada clase utiliza implementaciones distintas, aunque sea sólo cambiar un tipo. No sé hasta qué punto lo puedo simplificar todo. Me gustaría aprender BDD en delphi, porque si yo supiera haría esto como BDD... pero no sé por donde empezar hay tantas cosas... qué me aconsejáis? Ah se me olvidaba... si quiero salir de un bucle basta poner 'break;'? Gracias gente. Última edición por xaguilars fecha: 30-07-2007 a las 19:09:48. |
#11
|
||||
|
||||
Bueno, las BDs son como várias hojas de Excel, en cada una de ellas guardas datos como matriz. La gran diferencia entre ésto y una BD como tal (aparte de la obvias) es que cada columna puede tener un formato diferente... a a qué me refiero con ésto: a que puedes guardar en la primera un numero que incremente solo, en la segunda un entero de 32 bits, en la tercera una cadena y en la cuarta una fecha... (ejemplo ehh?)
Lastimosamente en breve me debo ir así que te lo mostraré con un ejemplo mañana. PD: revisa el Minitutorial de Caral; pues esta "Gueno"... Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
variable dentro de una variable | molinero1 | Varios | 3 | 23-04-2007 12:44:48 |
Obtener un fichero adjunto a un nodo de un fichero XML | muntasil | Internet | 0 | 18-07-2006 12:57:57 |
Es posible trabajar con xp en oracle 10g... | uper | Oracle | 6 | 07-04-2006 15:44:04 |
Es posible para solo la estructura de la base de datos de ib expert a Access | Nelly | Varios | 3 | 10-02-2006 08:37:59 |
Tipo de Estructura variable | pplacido | Varios | 4 | 04-01-2004 01:50:16 |
|