FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
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? |
#2
|
||||
|
||||
¿Qué tipo de trabajo tienes que hacer con este array que lo tienes que cargar completo en memoria?.... ¿Oíste hablar de FileMapping?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
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!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
|||
|
|||
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. |
#6
|
||||
|
||||
Pertenece a la ayuda de "Win 32 Developer´s References", porque se trata de una WinApi. Menú Help \ Windows SDK
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
|||
|
|||
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)!!!! |
#8
|
|||
|
|||
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 |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|