Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Pierdo datos de memo.text a label.caption (https://www.clubdelphi.com/foros/showthread.php?t=73366)

jgarcias2 16-04-2011 22:01:20

recibir datos rs232 desde pic
 
Hola compañeros,

os escribo para preguntar una duda que tengo y no me deja dormir, me tiene cansado y la verdad que no se por donde meterle "mano" ...

Os cuento:
lo que hago es enviar varios datos desde el pic hacia el pc via serie, y los recibo en el pc, los pongo en un memo y hasta ahi todo bien. Pero si quiero ponerlo en un label o en un edit o si quiero coger un valor para mostarlo en un indicador numerico no me coge la misma cadena.

Envio desde el pic con ccs:
Código Delphi [-]
 
  printf("Velocidad: %u\r\n",velocidad); 
  printf("Fuerza: %u\r\n",fuerza);
Recogo desde el pc con delphi y componente tciacomport:
Código Delphi [-]
 
procedure TForm1.CiaComPort1DataAvailable(Sender: TObject);
var str: string;
begin
  str := ciacomport1.ReceiveStr();      
  memo1.text := memo1.Text + str; // esto lo hace bien
  edit1.text := str; // en edit1 no aparece lo mismo que en memo1 
end;
Como puede ser ??? si en str tiene lo mismo no ???

Saludos, agradezco toda la ayuda que me podais prestar.
Gracias.

jgarcias2 17-04-2011 02:10:42

He estado haciendo pruebas, y lo que si puedo hacer es esto

comport1.ReadStr(str, count);
memo1.Text := memo1.text + str;
label2.caption := memo1.Text;

asi si que funciona bien, sin embargo esto no lo hace:
Código Delphi [-]
 
  comport1.ReadStr(str, count);
  memo1.Text := memo1.text + str;
  label2.caption := str;  // asi se pierden caracteres...
Como es posible esto, no lo entiendo...
Por cierto uso el delphi 7.

Saludos. Gracias.

jgarcias2 17-04-2011 02:17:00

Pierdo datos de memo.text a label.caption
 
Hola,

os escribia para ver si me podeis ayudar, estoy intentando sacar datos de un memo en el cual escribo datos recibidos por el rs232, la cuestion es, los datos son escritos correctamente en el memo, pero cuando voy a escribirlos en un edit o un label pierdo caracteres. Os adjunto parte del codigo:
Código Delphi [-]
 
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var str: string;
begin
  comport1.ReadStr(str, count);
  memo1.Text := memo1.text + str;  // Esta linea la hace perfecta
  label2.caption := str;    // Sin embargo en esta otra me pierde caracteres
end;


Como es posible ??? he realizado un monton de pruebas y no se ya por donde atacar el problema, a ver si me orientais un poco.

La cuestion que yo escribo caracteres en el memo y luego quiero recorrerlo para extraer ciertos números, si sabeis como podria hacerlo en el memo tambien me valdria.

Uso delphi 7,

Saludos y muchas gracias.

jgarcias2 17-04-2011 02:26:42

He realizado unas pruebas y veo que si pongo esto no pierdo ningún caracter,
Código Delphi [-]
 
  label2.caption := label2.Caption + str;

esto es posible ???, a q se puede deber ??? recuerdo que str proviene de datos recibidos por el rs232 (comport).

No entiendo nada de nada, a ver si me explicais algo por que ando un poco desesperado...

Saludos. Gracias.

ecfisa 17-04-2011 03:16:21

Hola jgarcias2.

Lo que te sucede es perfectamente normal.

En tu primer ejemplo, la sentencia:
Código Delphi [-]
label2.Caption:= str;
Deja en la propiedad Caption del TLabel el último valor asignado.(cada nueva asignación sobreescribe el valor anterior)

La solución te la diste vos mismo con:
Código Delphi [-]
label2.caption := label2.Caption + str;
Ya que los valores de la variable str se van concatenando en la propiedad Caption del mismo modo que cuando hacías:
Código Delphi [-]
memo1.Text := memo1.text + str;

Por favor encerrá tu código entre las etiquetas [delphi] [/delphi] para que tu código sea mas legible ( etiquetas vB), muchas gracias.

Un saludo.

jgarcias2 17-04-2011 20:44:42

Ante todo gracias por contestar ecfisa,

pero lo que pasa no es tan sencillo como parece, lo que pasa que igual me explico mal.
Eso que me comentas ya lo sabia, lo que quiero decir es que al recibir los datos en str si pongo esto:

Código Delphi [-]
   label1.caption := label1.caption + str;
si pongo eso lo hace bien, pero sin embargo al poner esto no lo hace bien

Código Delphi [-]
   label1.caption := str;

a lo que me refiero con hacerlo bien es a poner lo que realmente recibo por el rs232.

Este es el evento:

Código Delphi [-]
procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer);
var str: string;
begin
    comport1.ReadStr(str, count);
    label1.caption := label1.caption + str;
end;


Saludos y gracias.

ecfisa 18-04-2011 06:07:17

Hola jgarcias2.

Ví que habías duplicado el tema en el foro ASM y Microcontroladores, los combiné en este foro por parecerme más adecuado.
Sé que no llevas mucho tiempo en los foros así que este tipo de confusiones son normales, pero en lo posible trata de no duplicar
los temas. Si lo pones en un foro y luego te parece que hubiera debido ir en otro, sólo comunicaselo a un moderador para que lo mueva.

Un saludo.

jgarcias2 18-04-2011 19:27:45

ok, gracias, lo tendre en cuenta.

Saludos.


La franja horaria es GMT +2. Ahora son las 16:08:55.

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