![]() |
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? |
¿Qué tipo de trabajo tienes que hacer con este array que lo tienes que cargar completo en memoria?.... ¿Oíste hablar de FileMapping?
|
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. |
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! |
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. |
Pertenece a la ayuda de "Win 32 Developer´s References", porque se trata de una WinApi. Menú Help \ Windows SDK
Saludos! |
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)!!!! |
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 02:01:54. |
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