Grabar Datos

Hola nuevamente, mi consulta es la siguiente:
En el códido del archivo ComMainForm.pas de la librería Cport264 (pertenece al ejemplo ComExample) se especifica que al recibir datos, estos se grabarán en una archivo memo.txt. Actualmente recibo datos, pero estos no se graban en ni un archivo ¿Es necesario seguir algún paso previo?
De antemano muchas gracias.
Respuesta
1
Vamos a ver
Cuando recibes algo por el puerto com, el evento OnRxChar pasa el contenido del buffer del puerto a una variable de tipo cadena mediante la función ComPort. ReadStr(Str, Count), es decir en la variable Str tienes el contenido de los "Count" caracteres que había en el buffer del puerto en el momento de hacer la lectura. Lo que hagas a partí de aquí con el contenido de la variable Str (hasta que se produzca una nueva lectura) es cosa tuya. Puedes mostrarlo por pantalla, grabarlo en un memo, pasarlo a un registro de una tabla, etc. Es información que has de manejar tu a partir de ahí.

2 respuestas más de otros expertos

Respuesta
1
Pues de hecho el programa no lo realiza. De hecho lo que hace es pasar la información a la propiedad TEXT del componente MEMO.
Si deseas que se almacenen en un archivo tendrías que reemplazar el procedimiento por el siguiente:
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
F1: TextFile;
begin
ComPort.ReadStr(Str, Count);
Memo.Text := Memo.Text + Str;
AssignFile(F1,'memo.txt');
if not FileExists('memo.txt') then
rewrite(F1)
else
Append(F1);
Writeln(F1,Str);
Flush(F1);
CloseFile(F1);
end;
Avisame si tienes problemas.
Respuesta
1
No encuentro el lugar donde se graba algo a algún archivo.
¿Te referís a el código que se ejecuta en el evento OnRXChar?
De cualquier manera si necesitas grabar en un archivo podes hacer los siguiente:
Declarar un procedimiento como:
procedure Loguear(Texto: string);
var
arch : TextFile;
begin
AssignFile(arch, 'c:\log.txt');
if not FileExists('c:\log.txt') then
Rewrite(arch);
Append(arch);
Writeln(arch, FormatDateTime('dd/mm/yy hh:nn:ss', Now) + ' > ' + Texto);
CloseFile(arch);
end;
y llamarlo desde el evento OnRXChar asi:
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort.ReadStr(Str, Count);
Loguear(Str);
end;
No se si te ayuda en algo
Cualquier duda avisame
Germán
Agradeciendo tu interés por ayudarme, te cuento que el archivo del cual hablo se encuentra en el dentro del la librería cport264.zip, dentro de esta fila viene el siguiente archivo Ejemplos.zip, dentro de este vienen 3 ejemplos: ComExample.dpr, ModTest.dpr y MiniTerm.dpr. Al abrir ComExample.dpr este llama al achrivo ComMainForm.pas el cual lee datos desde la puerta serial. El código especifica que lo que se reciba será guardado en el archivo memo.txt. Actualmente puedo ver los datos que se reciben, pero estos no se guardan en ni un archivo. La parte que especifica esto es la siguiente:
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
Str: String;
begin
ComPort.ReadStr(Str, Count);
Memo.Text := Memo.Text + Str;
end;
Si a lo que te referís es a la linea de código que dice:
Memo.Text := Memo.Text + Str;
No graba en ningún archivo, el componente "memo" es el que muestra por pantalla los datos que entran por el puerto com, y su propiedad "text" hace referencia a todo el contenido del memo.
Si quieres grabar en un archivo el contenido del memo podes hacer:
Memo.Lines.SaveToFile('c:\puerto.txt');

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas