Recent

Author Topic: Manejo de Edit1.Text  (Read 3377 times)

mav

  • Jr. Member
  • **
  • Posts: 80
Manejo de Edit1.Text
« on: August 10, 2021, 01:37:13 am »
Hola, buenas noches:
    La pregunta es ¿Cómo operaria máximo con diez caracteres ( desde 1 hasta 10) independientemente
de que se introdujeran en el Edit1 , 12, 16 etc?
   
Code: Pascal  [Select][+][-]
  1. procedure mensajito();
  2.  begin
  3.   Form3.Hide;
  4.   Application.MessageBox('No, no esta bien!', 'ERROR!', MB_OK + MB_ICONEXCLAMATION);
  5.   halt;
  6.  end;
  7.  
  8. procedure TForm3.BitBtn1Click(Sender: TObject);
  9. var
  10.   i, j, k, n : integer;
  11. begin
  12.     if (Edit1.Text='') or (Edit2.Text= '') then
  13.     halt;
  14.  
  15.     i:= 0;
  16.                // n := length(Edit1.Text) <=10 ;
  17.                // ¿Como operar maximo con 10 caracteres????__________________________________
  18.  
  19.      for j:= 1 to length (Edit1.Text) do
  20.      begin
  21.        k:= (Ord(Edit1.Text [j]));
  22.         if k < $41 then
  23.         begin
  24.           mensajito;
  25.         end else
  26.          if (k) >= $5A then
  27.           k:= k - $20;
  28.  
  29.          i := i+ k;
  30.      end;
  31.  
  32.       if (i xor $5678) = (StrToInt(Edit2.Text) xor $1234) then
  33.        begin
  34.        Form3.Hide;
  35.        Application.MessageBox('PERFECTO!'+#13'MUY BIEN LO HAS LOGRADO!', 'Good Work!', MB_OK + MB_ICONEXCLAMATION);
  36.        halt;
  37.       end else
  38.        mensajito;
  39. end;
  40.      
  41. //...esto es Windows.
  42. procedure TForm3.FormCreate(Sender: TObject); //Parece que se llevarán las esquinas redondeadas
  43.                                               // esta temporada.... :)
  44. var
  45.   regn: HRGN;
  46. begin
  47.   Form3.BorderStyle:= bsNone;
  48.   regn:= CreateRoundRectRgn(0, 0, ClientWidth, ClientHeight, 20, 20);
  49.   SetWindowRgn(Handle, regn, True);
  50. end;
  51.  
  52.             //Para poder mover la ventana por la pantalla
  53. procedure TForm3.FormMouseDown(Sender: TObject; Button: TMouseButton;
  54.   Shift: TShiftState; X, Y: Integer);
  55. begin
  56.   ReleaseCapture;
  57.    SendMessage(Form3.Handle, WM_SYSCOMMAND, 61458, 0) ;
  58. end;                                                            
  59.  

Saludos y gracias.. :) :)

GAN

  • Sr. Member
  • ****
  • Posts: 370
Re: Manejo de Edit1.Text
« Reply #1 on: August 10, 2021, 03:01:06 am »
Hola, TEdit tiene una propiedad MaxLength la puedes establecer en 10 y listo.
Eso sí, no usaría Halt,

Saludos.
Lazarus 2.0.8 FPC 3.0.4 Linux Mint Mate 19.3
Zeos 7̶.̶2̶.̶6̶ 7.1.3a-stable - Sqlite 3.32.3 - LazReport

mav

  • Jr. Member
  • **
  • Posts: 80
Re: Manejo de Edit1.Text
« Reply #2 on: August 10, 2021, 03:38:10 pm »
Hola, gracias por responder, en efecto si limitas la propiedad MaxLength a10, son sólo diez los caracteres que puedes escribir/operar
en el Edit1, pero la cuestión es poder escribir mas de diez y operar como máximo con diez, sin que el usuario sea consciente de ello...
¿Porqué no deberíamos utilizar Halt?

Saludos

lucamar

  • Hero Member
  • *****
  • Posts: 4219
Re: Manejo de Edit1.Text
« Reply #3 on: August 10, 2021, 04:00:47 pm »
[...] la cuestión es poder escribir mas de diez y operar como máximo con diez, sin que el usuario sea consciente de ello...

Fácil: mira a ver si hay más de 10 caracteres y en ese caso trunca la cadena:
Code: Pascal  [Select][+][-]
  1. StrToProcess := AnsiLeftStr(Edit1.Text, 10);
  2. for i := 1 to Length(StrToProcess) do
  3.  {... etc ...}

Quote
¿Porqué no deberíamos utilizar Halt?

Porque Halt para sin ejecutar bloques try...finally ni try...except y, además, puede dejar la aplicación en un estado inestable. En un programa GUI es mejor llamar a Close, si estás en el form principal, o directamente ejecutar Application.Terminate.

Halt sólo debería usarse en programas de consola y con mucho cuidado; generalmente es mejor reorganizarr tu código de modo que termine normalmente y dejar Halt para situaciones excepcionales en que quieres devolver un código de error/resultado al sistema.
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: 80
Re: Manejo de Edit1.Text
« Reply #4 on: August 10, 2021, 04:49:47 pm »
Vale, perfecto está funcionando sin problemas, he incluido en el uses StrUtils y he eliminado el Halt, como no estoy en la ventana principal
lo he sustituido por Form3.Close... :) :)

 

TinyPortal © 2005-2018