Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   capacidad del componente Memo (https://www.clubdelphi.com/foros/showthread.php?t=27458)

ber 21-11-2005 18:06:33

capacidad del componente Memo
 
hola a todos, alguien sabe la capacidad que tiene el componente Memo, lo que pasa es que quiero leer un archivo .txt pero este tiene un peso aprox de 2 Mb, me marca un error y no se si es por eso o porque. Les agradesco el sacarme de esta duda.

Salu2

dec 21-11-2005 18:34:22

Hola,

Si no dices el error que "te saca"... en fin. Yo creo que el Memo no tiene un "límite" más allá de las características de la memoria RAM del sistema del usuario. En todo caso, ya digo... ¡a ver si dices qué error te encuentras! ;)

ber 21-11-2005 19:08:02

Antes que nada gracias por molestarte en contestar la pregunta, el error que sale al mmomemnto de leer el archivo es el siguiente "Proyect Proyect.exe raised exception class ElnOutError with message 'Invalid numeric input'. Process stoped. Use step or Run to continue" bueno creo que en si, el error me lo da porque el archivo que quiero leer son numeros, pero no estoyy seguro por eso pregunto. nuevamente gracias.

Saludos cordiales

dec 21-11-2005 19:19:04

Hola,

La verdad que a mí tampoco me queda muy claro el problema. Posiblemente sea porque desconozca el contexto de lo que estás tratando de llevar a cabo. En la ayuda de Delphi, si buscas la cadena "Invalid numeric input" verás que te aparecen dos resultados. En uno de ellos, concretamente, en "I/O errors" puede leerse lo siguiente, que habría que tener en cuenta, acaso:


Cita:

Empezado por Ayuda de Delphi
In Delphi, I/O errors cause an exception to be thrown if the particular statement was compiled in the {$I+} state with I/O checking on. (If the application does not include the SysUtils unit, the exception causes the application to terminate). In the {$I-} state, the program continues to execute, and the error is reported by the IOResult function.

Pero, lo que me llama más la atención es la descripción del propio error de que estamos hablando:


Cita:

Empezado por Ayuda de Delphi
Invalid numeric format

Reported by Read or Readln if a numeric value read from a text file does not conform to the proper numeric format.

O sea, que no entiendo muy bien qué está ocurriendo, pero, me da en la nariz que si haces uso de las clases "TStrings" o "TFileStream" no tendrás el problema que ahora tienes. No sé... no estoy seguro... podrías probar a ver. Tampoco estaría demás que copiaras aquí algo del código fuente del contexto en que se produce el error, es decir, por ejemplo, estás cargando el contenido del archivo, pero, ¿qué haces con el mismo? ¿Lo asignas a alguna variable? ¿Lo...? Un poco de código puede ayudar.

Por mi parte estaba a punto de terminar este "ejemplo" de uso de la clase "TStrings" para lo que te es menester. Échale un vistazo, por si te sirve de algo. En cualquier caso, creo que, el error que te aparece no tiene que ver con la capacidad del "Memo", sino que tiene que ver con otro problema. Y, hablando del Memo... si lo que quieres es cargar el archivo en el "TMemo", directamente, puesto que este cuenta con una propiedad "Lines" de tipo "TStrings", precisamente, podrías emplear su método "LoadFromFile", como he dicho más arriba.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
resourcestring
  rsLineas = 'Línea: %D/%D'+#13#10+'Contenido: %S';
var
  i: integer;
  temporal: TStrings;
begin
  temporal := TStringList.Create;
  try
    temporal.LoadFromFile('C:\archivo.txt');

    { Aquí ya tienes en la variable temporal
      el contenido de "archivo.txt", de tal
      manera que podrías acceder al mismo
      línea por línea, como por ejemplo se
      hace a continuación. }

    for i := 0 to temporal.Count-1 do
    begin
      ShowMessage(Format(rsLineas, [i, temporal.Count, temporal[i]]));
    end;

  finally
    temporal.Free;
  end;
end;

dec 21-11-2005 19:26:34

Hola,

Me doy cuenta de que en mi anterior mensaje he mezclado un tanto las respuestas para este Hilo y para este otro Hilo... Espero, aún así, que puedas sacar algo en claro. Si no es así avisa, por favor. ;)

ber 21-11-2005 19:35:44

Gracias
 
Lo que dices de los hilos pues si la verdad es que al principio no supe donde encajaba mi pregunta y la puse aqui, ya despues me di cuenta que existia la de varios y pues hice una pregunta parecida alla, disculpas por eso.

Muchas gracias por tu ayuda.

Saludos

dec 21-11-2005 19:39:31

Hola,


Cita:

Empezado por ber
Lo que dices de los hilos pues si la verdad es que al principio no supe donde encajaba mi pregunta y la puse aqui, ya despues me di cuenta que existia la de varios y pues hice una pregunta parecida alla (...)

Bueno. Te recuerdo que, como usuario registrado de estos Foros que eres, puedes no solamente editar tus mensajes, sino incluso borrarlos. Cuando te equivoques, ya sabes que puedes hacer una de estas cosas, sencillamente. Por mi parte voy a mover este Hilo a otro lugar, pues el apartado "Gráficos" no me parece el más oportuno para el mismo.

Casimiro Notevi 21-11-2005 21:54:39

Por si acaso sirve de algo: Tengo probado que los TMemo no funcionan bien cuando se les introduce "bastante" texto, pero todos los problemas se resuelven usando un TRichEdit. (Si es texto plano, ponle la propiedad PlainText a true).

Esto es suponiendo que ese sea tu problema.

Delfino 22-11-2005 10:09:01

solo un apunte para la rapidez de la insercin del texto an un Memo, ademas de los conocidos beginupdate y endupdate:

Código:

Memo1.SelStart := Memo1.GetTextLen;
Memo1.SelText := Stringlist.Text;



La franja horaria es GMT +2. Ahora son las 11:14: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