Recent

Author Topic: ¿Como transladar a un TMemo, el resultado paso a paso de operaciones.....?  (Read 3101 times)

mav

  • Jr. Member
  • **
  • Posts: 79
Lo del enunciado ¿Como transladar a un TMemo, el resultado paso a paso de operaciones diversas y la complejidad de format (para mi,claro)?..una
especie de debug...

Code: Pascal  [Select][+][-]
  1. .......
  2.    nombre               : String;
  3.    i,temp, final, total: integer;
  4. .......
  5.  //------------------------------------------------------Operaciones
  6.      for i:= 1 to Length(nombre) do
  7.       begin
  8.        temp := temp+ord(nombre[i]);
  9.       end;
  10.      final:= temp + $2D;
  11.  
  12.      total:= (((final xor $4569) xor $FFF) xor $989A);
  13.  
  14.  
  15.      //'%' [[Index]':'] ['-'] [Width] ['.' Precision] ArgType
  16.  
  17.        Memo1.Append(
  18.        IntToStr(i)
  19.         + Format(????????????????????????????
  20.                 ?????????? [temp, final,total])) ;  
  21.   ............................                            
  22.  
Saludos  :) :)

Edson

  • Hero Member
  • *****
  • Posts: 1296
Si lo que quieres es mostrar el contenido de 4 enteros en un TMemo, puedes usar la forma clásica de Pascal:

Code: Pascal  [Select][+][-]
  1.   Memo1.Append( IntToStr(i)+','+IntToStr(temp)+','+IntToStr(final)+','+IntToStr(total) );
  2.  

O sino, al estilo de C:

Code: Pascal  [Select][+][-]
  1.   Memo1.Append( Format('%d, %d, %d, %d', [i,temp, final, total]) );
  2.  

Pero si lo que quieres es solo mostrar algo para depuración, mejor no uses TMemo y usa las funciones debugln(), que te muestran el resultado en la consola:

Code: Pascal  [Select][+][-]
  1.   debugln('%d, %d, %d, %d', [i,temp, final, total]);
  2.  

Para ello tienes que incluir la unidad LCLproc y habilitar la consola,en tu aplicación.
Lazarus 2.2.6 - FPC 3.2.2 - x86_64-win64 on Windows 10

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Otra forma de añadir variables formateadas a un memo:
Code: Pascal  [Select][+][-]
  1. Memo1.Lines.Add('%d %d %d %d', [i, temp, final, total]);
con las misma sintaxis de Format().

Eso, claro, es usando el formato más "simple" posible; también podría ser, por ejemplo:
Code: Pascal  [Select][+][-]
  1. Memo1.Lines.Add('i=%d, temp=%d, final=%d, total=%d', [i, temp, final, total]);

Si quieres algo más, tendrás que decirnos qué formato estás buscando. ;)
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

mav

  • Jr. Member
  • **
  • Posts: 79
...lo que estoy buscando (culpa tuya, Lucamar ;) ;) ;)) es ir mostrando en el memo los resultados paso a paso de las operaciones efectuadas...
 la suma de cada caracter del nombre con el siguiente y resultado..la suma posterior del $2D y resultado...el 1º xor y resultado...el 2º etc..etc
 cada uno de ellos en una linea del Memo...¡Complicandome siempre! :) :) :)
..Muchas gracias .
Saludos

lucamar

  • Hero Member
  • *****
  • Posts: 4219
¿Algo así como ... ?

Code: Pascal  [Select][+][-]
  1. var
  2.    nombre               : String;
  3.    i,temp, final, total: integer;
  4.    sv: String;
  5.  
  6.   //------------------------------------------------------Operaciones
  7.   for i:= 1 to Length(nombre) do
  8.   begin
  9.    sv := IntToStr(temp);
  10.    temp := temp+ord(nombre[i]);
  11.    Memo.Lines.Add('Paso %d: %s + %d = %d',
  12.                   [i, sv, ord(nombre[i]), temp]);
  13.   end;
  14.   final:= temp + $2D;
  15.   Memo.Lines.Add('Paso final: %d + $2D = %d',
  16.                  [temp, final]);
  17.  
  18.   { Un sólo paso, pero si quieres cada uno por separado sólo tienes
  19.     que ir calculando "total" a partir del anterior y añadiendo una línea }
  20.   total:= (((final xor $4569) xor $FFF) xor $989A);
  21.   Memo.Lines.Add('Total: (((%x xor $4569) xor $FFF) xor $989A) = %d',
  22.                  [temp, final]);
Turbo Pascal 3 CP/M - Amstrad PCW 8256 (512 KB !!!) :P
Lazarus/FPC 2.0.8/3.0.4 & 2.0.12/3.2.0 - 32/64 bits on:
(K|L|X)Ubuntu 12..18, Windows XP, 7, 10 and various DOSes.

mav

  • Jr. Member
  • **
  • Posts: 79
Exacto, eso es ..y funcionando correctamente, como siempre... :) :)
Muchas gracias.

 

TinyPortal © 2005-2018