Separar numeros no deplhi

15/03/2017

0

Ola boa tarde a todos.
Acredito que deva ser simples porem não estou habituado a programar em delphi (apenas microcontrolador)

preciso separar um numero em uma array.

Até com um modo arcaico consigo fazer mas queria uma forma mais limpa para fazer esse processo.

por exemplo: , o numero 128 ficaria 1 em uma array , 2 em outra array , 8 em outra array

o que fiz fica assim.

if updown1.Position = 128 then
    begin
      verifica [4] := 1;
      verifica [5] := 2;
      verifica [6] := 8;
    end;

if updown1.Position = 127 then
    begin
      verifica [4] := 1;
      verifica [5] := 2;
      verifica [6] := 7;
    end;


Assim por diante ......
Gostaria de uma forma mais eficiente de fazer em vez de numero por numero
Grato Rodrigo Hernandes
Rodrigo Hernandes

Rodrigo Hernandes

Responder

Post mais votado

15/03/2017

var
   numero: string;
begin
   numero := inttostr(updown1.Position);
   if (updown1.Position > 99) then
   begin
      verifica [4] := numero[1];
      verifica [5] := numero[2];
      verifica [6] := numero[3];
   end;
end;

Raylan Zibel

Raylan Zibel
Responder

Mais Posts

16/03/2017

Rodrigo Hernandes

Valeu a Ideia funcionou certinho . só não achei qeu iria ser tão simples
só tive que fazer umas pequenas mudanças pois o array era bits e precisava também os números abaixo de 100 com zero na frente.

var
  numero: string;
  I: Integer;
begin
    verifica[0] := $dd;
    verifica[1] := $de;
    verifica[2] := $ae;
    for I := 3 to 50 do
    begin
         verifica[I] := 0;
    end;

    Numero := inttostr(updown1.Position);
    if (updown1.Position > 99) then
    begin
      verifica [4] := strtoint(numero[1]);
      verifica [5] := strtoint(numero[2]);
      verifica [6] := strtoint(numero[3]);
    end;

        if ((updown1.Position > 9) AND (updown1.Position <100) ) then
    begin

      verifica [5] := strtoint(numero[1]);
      verifica [6] := strtoint(numero[2]);
    end;
            if updown1.Position <10  then
    begin
      verifica [6] := strtoint(numero[1]);
    end;


Grato Rodrigo Hernandes
Responder

31/08/2023

Fabio Assumpção

Ola boa tarde a todos.
Acredito que deva ser simples porem não estou habituado a programar em delphi (apenas microcontrolador)

preciso separar um numero em uma array.

Até com um modo arcaico consigo fazer mas queria uma forma mais limpa para fazer esse processo.

por exemplo: , o numero 128 ficaria 1 em uma array , 2 em outra array , 8 em outra array

o que fiz fica assim.

if updown1.Position = 128 then
    begin
      verifica [4] := 1;
      verifica [5] := 2;
      verifica [6] := 8;
    end;

if updown1.Position = 127 then
    begin
      verifica [4] := 1;
      verifica [5] := 2;
      verifica [6] := 7;
    end;


Assim por diante ......
Gostaria de uma forma mais eficiente de fazer em vez de numero por numero
Grato Rodrigo Hernandes


Delphi has long been a reliable companion for programmers, and when combined with the power of the ESP32, it opens up a realm of possibilities.
See more about at:

<a href="https://www.programmingboss.com/2023/07/esp32-toggle-led-beginners-guide-to-control-LED-with-ESP32.html#gsc.tab=0"></a>


This microcontroller's versatility and ease of use have garnered immense popularity. Imagine seamlessly integrating Delphi's capabilities with the ESP32's potential to control components like LEDs. From basic to intricate projects, the ESP32's allure remains unwavering. Whether it's toggling an LED or embarking on more complex ventures, the journey is enriched with resources like this article, where essential information and code converge. So, let Delphi and ESP32 be the conduits to your creative coding odyssey!
Responder

31/08/2023

Arthur Heinrich

Daria para substituir o código:

    Numero := inttostr(updown1.Position);
    if (updown1.Position > 99) then
    begin
      verifica [4] := strtoint(numero[1]);
      verifica [5] := strtoint(numero[2]);
      verifica [6] := strtoint(numero[3]);
    end;
 
        if ((updown1.Position > 9) AND (updown1.Position <100) ) then
    begin
 
      verifica [5] := strtoint(numero[1]);
      verifica [6] := strtoint(numero[2]);
    end;
            if updown1.Position <10  then
    begin
      verifica [6] := strtoint(numero[1]);
    end;


Por:

var
  i, p : Integer;
...
  i:=6;
  p:=updown1.Position;
  while (p > 0) do
    begin
      verifica[i]:=(p mod 10);
      p:=(p div 10);
      Dec(i);
    end;

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar