![]() |
Llenar un arreglo bidimensional ...
Hola, nuevamente ando por aqui con un problemita, es que necesito llenar un arreglo bidimensional con ' ' espacios en blanco o con un caracter, por ejemplo 'i' la razón es que en esa tabla (o arreglo) se guardan el nombre de una variable y su valor, pero tambien hay ocasiones en que solo se guarda el nombre de la variable y el espacio del valor queda sin nada, entonces tengo que buscar en la tabla si hay espacios vacios y es ahi donde tengo el problema, porque supongo que para que sea eficaz la busqueda el arreglo debe ser llenado primero con espacios en blanco o con el mismo caracter y despues se ira llenando con los nombres de las variables y los valores pero cuando tengo uqe buscar, buscaré ya sea los espacios en blanco ó el caracter, la cosa es que me sale un error cuando lo quiero llenar con estos dos elementos, otra cosa, el array es de tipo String porque asi lo necesito para guardar los nombres de las variables... El codigo que uso es el siguiente:
Código:
|
¿Puedes poner cómo tienes definido el array?
¿Estático o dinámico? y los límites que utilizas. |
No soy muy amigo de los arrays dinamicos, así que te propongo que lo hagas de otra forma.
Usando Objetos EDITO: para el caso de valores por defecto (el espacio o la letra 'i' como decias), te conviene más este otro ejemplo: uso de objeto Tlist un saludote |
Cita:
Cita:
// Saludos |
Pues es por vuestra culpa :p, me refiero a todos los que me presentaron al TobjectList, Tqueque,Tstack y a todos estos colegas, siempre que pienso en Arrays... digo... NO, mejor objetos.
Los asiduos al foro, quizás penseis que soy un poco pesado con el tema del TobjectList, pero creo que el hecho de no usarlos, es por desconocimiento. A todos nos enseñan a trabajar con arrays, es uno de los ejemplos más comunes de la Universidad o manuales, sin embargo, del ObjectList (al menos en mi caso) nadie me habló de ellos. El principal problema que le veo a los arrays, es que justo despues de asignarle el nuevo tamaño, tienes que "perder tiempo" en inicializarlos con valores, y despues controlar los errores. Por otra parte, en cuanto pasas de 2 dimensiones, suele ser muy engorroso trabajar con ellos. En casos puntuales sigo trabajando con arrays, pero me parece acertado comentar otras alternativas. (si creen que me equivoco, decidmelo) Un saludote |
Cita:
Yo creo que cada cosa tiene su lugar y en este caso de un arreglo bidimensional de cadenas, el uso de arreglos, dinámicos o estáticos, me parece lo más adecuado, máxime cuando los mayores problemas con los que te puedes enfrentar son con el uso de índices en cuyo caso únicamente hay que tener cuidado en no rebasar los límites inferior y superior:
// Saludos |
Toda tabla de 2 dimensiones puede convertirse en un objeto con propiedades y métodos, por tanto, hasta ahí, prefiero usar Objetos. Si tiene más dimensiones, y hay que hacerlo, se hace, pero hacerlo pa ná... es tontería.
En serio, si unicamente va a escribir datos en el array, y despues leerlos, usaré un array, pero en cuanto haya que acceder al array para modificar ciertos datos, hacer comprobaciones, etc., busco otro método de implementarlo, ¿por qué? porque el código principal del programa se convierte en codigo de comprobaciones. En el caso que nos ocupa, se tiene que asignar valores iniciales a cada fila, y al tiempo de leerlo, debe hacer 2 comprobaciones para una fila: - el valor del nombre de la variable es bueno - saber si se guarda el valor de la variable o no. Esto implica realizar rutinas del tipo: function Nombre Variable Es Bueno(indice de la tabla) : Boolean function Tiene Valor Asignado(indice de la tabla):Boolean Para rescatar el valor de una variable no puede usar AsString, AsDouble por ejemplo, cada vez que rescate un valor deberá convertirlo segun la necesidad; o peor aún.... realizando las conversiones sobre la marcha y repitiendo mucho código. Todo se puede encapsular en un objeto con apenas 3 propiedades y 2 métodos privados, obteniendo mucha más claridad en el código. Un saludote |
El uso de un objeto que encapsule un arreglo bidimensional o de las dimensiones que quieras no se elaciona con lo que has afirmado anteriormente. La pregunta prevalece: ¿en qué forma usas un TObjectList o un TList para implementar un arreglo?
Si he de mantener un arreglo, digamos para almacenar un tablero de ajedrez, ciertamente puedo pensar en un objeto Tablero con métodos para colocar las piezas y moverlas. Pero en su representación interna muy posiblemente seguiría usando un arreglo (en este caso estático) para mantener las posiciones de la fichas. Cada elemento del arreglo podría ser un record o, incuso, un objeto, pero el punto es que sigo sin ver la necesidad de una TList o TObjectList para representar un arreglo bidimensional. // Saludos |
Cita:
No siempre puede sustituirse, incluso a veces, por comodidad es mejor un array que andar creando objetos en memoria, liberando y demás. Estoy totalmente de acuerdo que los fallos que puede dar un array son mínimos, e incluso menores que un objeto. Por ejemplo, cada vez que creas un objeto, deberías usar un try except, en el caso de arrays, solamente usas un try except con la instrucción SetLegth en su interior y listo!!. No respondí a la pregunta de la matriz 5x3x6, ya que, como es obvio, la única forma de hacerlo es mediante una matriz. (No voy a ser cabezota manteniendo una afirmación insulsa... y menos contigo ;) :D, me podrías dar la del pulpo con afirmaciones muy contundentes :D) Cita:
Cita:
Por cierto, Mis felicitaciones por los Hijos de San Luis, que me tuvieron en Jaque hasta el último momento :D |
La franja horaria es GMT +2. Ahora son las 21:54:24. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi