Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Array (https://www.clubdelphi.com/foros/showthread.php?t=7458)

esquerda21 16-02-2004 18:47:17

Array
 
Hola. Necesito leer un archivo de texto q pesa unos 2000K
Utilizo un array de string restingido a[10] letras.
Antes me salia un error EOutOfMemory y con la resticcion q le he puesto ya no lo hace.
Hago :

Readln(Loadfile, LoadLine);
SetLength(FileDXF, index);
FileDXF[index -1]:= LoadLine;
index:= index +1;

Me tarda muchisimo en acabar. Como puedo hacer q vaya caga....do leches?

delphi.com.ar 16-02-2004 19:01:16

¿Qué tipo de trabajo tienes que hacer con este array que lo tienes que cargar completo en memoria?.... ¿Oíste hablar de FileMapping?

esquerda21 16-02-2004 19:05:08

La información es de un divujo de Cad en dxf, y q es eso de FileMapping?
No es necesario guarlarlo todo pero es mucho mejor para despues a la hora de grabarlo a disco o si hago q el prog. mas adelante pueda abrir varios archivos a la vez.

delphi.com.ar 16-02-2004 19:23:08

Te recomiendo leer la ayuda de la función CreateFileMapping y sus "amigas"...

Por otro lado, si este archivo no estaría escrito linea a línea, podrías cargarlo directamente en la memoria, de a bloques mas grandes, utilizando un puntero a tu array.

Saludos!

esquerda21 17-02-2004 16:00:55

Un componente no puedo utilizar. Hata ahora he probado con el TStringList y cuando leo los datos para repintar mi dibujo tarda lo suficiente como para que parpadee. Osea q el componente queda descartado. Mi obcion era utilizar un simple array para q fuera como una moto pero tarda un huevo y medio. Lo q es increible es con TListBox q encima te lo pinta en pantalla sea inmediato. Este componente como debe organizarse para cargarlo? Utiliza un array y setLength? Otra cosa ...si un string[5] queda reducido al espacio en memoria de 5 caracteres o t deja poner cinco y el resto lo desperdicia?
Y por ultimo Ayer me comentaron algo del CreateFileMapping. Yo utilizo delphi7 y en la ayuda no me sale nada. Se llama de otra forma?
Gracias a todos.

delphi.com.ar 17-02-2004 16:07:50

Pertenece a la ayuda de "Win 32 Developer´s References", porque se trata de una WinApi. Menú Help \ Windows SDK


Saludos!

dannymunuera 26-02-2004 14:53:19

Respuesta a arreglos
 
Si quieres almacenar los datos en memoria por algo especifico no se, pero lo que se es que lo puedes tratar de la forma fácil y es usar una lista (TList) Busca en la ayuda, puesto que las líneas del fichero que vas a leer en algún momento puede ser mas o meno grande, esta es la forma muy fácil que es usar un TMEMO y si no quieres que se vea pones la propiedad visible en false y se acabo luego trabajas con la propiedad lines y el método add para adicionar línea a línea y por otra parte la opción muy muy fácil, usando el mismo componente TMEMO usas el método OpenFromFile y abres el fichero después lo trabajas con la propiedad index (Lo demás lo encontraras en la ayuda).

El metodo mas difícil seria que realizaras una class y crearas un homologo de Tlist. (Pero para que si ya existe uno)!!!!

esquerda21 26-02-2004 19:27:21

Muchas gracias compañero pero...
Lo ha estado provando con varios componentes y algunos son mejores q otros para ello, pero para leer y pintar tantos datos datos sin q el ojo lo aprecie no se puede utilizar un componente dado q stos son lentos.Tendran muchas chulerias para hecer mas facil el lenguage pero todo eso se paga con el tiempo de caLCULO. Lo mejor q he provado es un simple array y punto. Pero jamas sera tan rapido q el AutoCAD. Al Final creo que esta peña utiliza DIRECTX para pintar aunque sea en 2D. Si alguien sabe algo sobre el sistema de pintado q utiliza AutoCAD q me lo haga saber.

Hasta luego


La franja horaria es GMT +2. Ahora son las 05:14:54.

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