Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-03-2011
kdemia kdemia is offline
Miembro
 
Registrado: may 2010
Posts: 109
Poder: 17
kdemia Va por buen camino
totalmente, pero no lo puedo guardar en un archivo :/ File of array_dinamico no se puede hacer
Responder Con Cita
  #2  
Antiguo 08-03-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Cita:
Empezado por kdemia Ver Mensaje
totalmente, pero no lo puedo guardar en un archivo :/ File of array_dinamico no se puede hacer
Sinceramente nunca había escuchado eso de File of... Te compila esa línea?
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 09-03-2011
kdemia kdemia is offline
Miembro
 
Registrado: may 2010
Posts: 109
Poder: 17
kdemia Va por buen camino
si es para manejar archivos.. osea en vez de usar base de datos asi automaticas como mysql y esas cosas uso archivos..
Responder Con Cita
  #4  
Antiguo 09-03-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por kdemia Ver Mensaje
si es para manejar archivos.. osea en vez de usar base de datos asi automaticas como mysql y esas cosas uso archivos..
Hola kdemia.

Precisamente por el archivo tipado (File of) que te limita al uso estático, es que me parece que la solución es dimensionar el array lo suficientemente grande para contener las máximas cotas posibles. Pero claro, en varios casos se va a desperdiciar espacio.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 09-03-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Acabo de leer un poco en delphi.about sobre esta declaración File of, que sinceramente desconocía. Según leí, puedes utilizar File of con arreglos dinámicos.

El problema que veo es que quieres definir una nueva clase que sería nada más que un arreglo dinámico. Esto no se puede hacer. Lo que debes hacer es crear el arreglo dinámico como variable (al igual que otro cualquier arreglo dinámico) y luego asignarle su longitud con la rutina SetLength. Deduzco, que no es necesario utilizar SetLength cuando estés abriendo un archivo, sino sólo para guardarlo. Más o menos creo que sería así:
Código Delphi [-]
procedure PasarAArchivo(const Alto, Ancho: Integer);
var
    Arreglo: Array of array of Integer;
    OIFile: File of Array of array of Integer;
    I: Integer;
begin
    // definir las longitudes bidimencionales de Arreglo
    SetLength(Arreglo, Alto, Ancho);

    // rellenar los datos de Arreglo ....
    // .....

    // guardar el arreglo en un archivo.
    try
        AssingFile(IOFile, 'archivo_a_guardar.dat');
        Rewrite(IOFile);
        for I := 0 to Max(Arreglo) do
            Write(IOFile, Arreglo[i]);
    finally
        CloseFile(IOFile);
    end;
end;

Creo que también deberías considerar utilizar registros en lugar de arreglos polidimencionales. Los registros son más fáciles de leer y entenderse para el programador.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #6  
Antiguo 09-03-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Chris.

Hasta donde sé, desde Pascal 5.5 hasta Delphi 7 incluido, no permiten usar arreglos dinámicos en archivos tipeados.
Dado que los archivos con tipo, son archivos de acceso directo, no creo que sus registros pudieran tener diferentes tamaños.

Con el código que adjuntas (usando Delphi 7) en la línea donde se declara el archivo con tipo, obtengo el siguiente error de compilacion:
Cita:
Type 'dynamic array' needs finalization - not allowed in file type.
Lo que ciertamente ignoro, si esto es así para las versiones posteriores de Delphi.

También coincido con vos que es mucho más sencillo y práctico utilizar registros en lugar de arreglos multi-dimensionales.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 09-03-2011 a las 20:00:35.
Responder Con Cita
  #7  
Antiguo 09-03-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 21
Chris Va por buen camino
Hola ecfisa!

Gracias por la aclaración. Creo que mi ignoracia al respecto de File of se ha notado . Entonces no se me ocurre otra cosa, a menos que talvez se pueda simplemente utilizar la declaración File of Array of Integer para la variable IOFile y verificar que con eso los datos se guarden correctamente.

Pero bueno, talvez la declaración:
Código Delphi [-]
type
  Arreglo = Array[0..Ancho, 0..Alto] of integer;
en registros se puede traducir como:
Código Delphi [-]
type
    Arreglo = record
        ArregloInterno: array of integer;
    end;
y de ahí utilizarla a cómo el compañero había querido hacerlo.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que estoy haciendo mal ? piolillo Internet 8 28-07-2011 17:23:24
Que estoy haciendo mal con este trigger @-Soft Firebird e Interbase 6 25-01-2011 02:37:35
Uso de clases, ¿que estoy haciendo mal? gerardorom C++ Builder 2 26-12-2007 15:35:38
Que estoy haciendo Mal esimon SQL 4 04-07-2006 21:55:25
Que estoy Haciendo mal jostrix PHP 1 01-11-2004 01:29:16


La franja horaria es GMT +2. Ahora son las 21:05:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi