Separar numeros no deplhi

Delphi

15/03/2017

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

Curtidas 0

Melhor post

Raylan Zibel

Raylan Zibel

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;
GOSTEI 1

Mais Respostas

Rodrigo Hernandes

Rodrigo Hernandes

15/03/2017

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
GOSTEI 0
Fabio Assumpção

Fabio Assumpção

15/03/2017

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!
GOSTEI 0
Arthur Heinrich

Arthur Heinrich

15/03/2017

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;

GOSTEI 0
POSTAR