como leer n caracteres de un archivo
Hola a todos, tengo un archivo de texto que es muy muy grande (del orden de 800 MB) y necesito leer bloques de 700 bytes. Estoy probando este codigo, pero no me sirve pq no puedo limitar la informacion que leo:
var fich:TextFile; cad:ansistring; begin // database1.Commit; try try AssignFile(fich,'fichero.txt'); reset(fich); while not eof(fich) do begin readln(fich,cad); memo1.Text:=memo1.Text+cad; //esto es solo para ver el resultado end; finally closeFile(fich); end; except on E:Exception do showmessage('Error de acceso al fichero con msg: '+E.Message); end; Por favor, si alguien sabe como deberia leer el archivo, les estaria muy agradecido. Muchas gracias. |
El problema es que estás leyendo líneas, tal vez deberías leer caracteres.
Revisa la ayuda sobre Read. |
ya me estoy leyendo el reset pero no me deja pasarle el numero de caracteres a leer, y creia que con BlockRead deberia pero no me deja pasarle una cadena como buffer. La verdad es que no se como podria hacer esto. Si supieras solo que funcion utilizar para leer n caracteres ya lo tendria todo solucionado. Muchas gracias.
|
Creo que si utilizas Seek para colocarte en una posicióin del fichero y luego Read (no ReadLn) para leer n caracteres te debería funcionar.
|
Prueba con esto:
Vamos leyendo los bytes de 700 en 700 y luego los convertimos en un string. el byte extra en el buffer es porque las cadenas tipo PChar necesitan acabar en un carácter nulo. El resto creo que se entiende bien, sino pregunta. |
muchisisimas gracias, me has ahorrado un monton de tiempo. Muchas gracias de verdad. Un fuerte abrazo :)
|
Leer linear de archivo .txt
IMP20983;0;IMP20983
VK RF SE1052 SO M;9008;60490001070 Dejar en una variable cada campo separado por ; es un archivo .txt y los campos son variables. Leo el archivo y lo traspaso a un Memo. if OpenDialog1.Execute then begin AssignFile(F, OpenDialog1.FileName); Reset(F); while not eof(F) do begin Readln(F, S); Memo.Lines.Add(S); end; CloseFile(F); end; |
La franja horaria es GMT +2. Ahora son las 07:22:20. |
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