DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

soma de graus expressos em graus, minutos e segundos

Home Fóruns Dúvidas gerais sobre código fonte com Delphi soma de graus expressos em graus, minutos e segundos

Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Autor
    Posts
  • #2470
    acs
    Participante

    Estou precisando de ajuda (código) para simular a soma de graus expressos em graus, minutos e segundos no delphi ou no lazarus, agradeçido.

    Soma
    89° 59′ 60″ Entro com estes valores (variáveis) no MaskEdit1
    43° 27′ 32″ Entro com estes valores (variáveis) no MaskEdit2
    —————-
    46° 32′ 28″ O resultado deste exemplo é dado no MaskEdit3 ou no “Labe1 se tiver condiçõe de colocar máscara nele nele também”

    Os MaskEdits tem mascaras para graus “até 3 digitos”, minutos e segundos “até 2 digitos” ___°__’__”

    #2471
    acs
    Participante

    correção: Escrevi errado SOMA é uma conta de DIFERENÇA

    #2492

    Olá acs.

    Tens como passar um exemplo de dados e a formula de calculo?

    Exemplo:

    1 – Informo 89° 59′ 60 e 43° 27′ 32
    2 – Realizo o cálculo x (descrição o calculo)
    3 – O Resultado deve ser este: ( O que deve ser apresentado )

    Aqui tem uma dica que converte segundos em Horas, minutos e segundos.
    Talvez possa ajudar.

    Converter Segundos em Horas, minutos e segundos.

    #2493

    Aqui tem outra dica para obter os segundos entre duas datas ou horas.

    Função para obter os segundos entre duas datas ou horas

    #2535
    acs
    Participante

    Boa tarde Giovani da Cruz

    Fiz uma imagem de rascunho aqui no Lazarus e mandei por email para expor melhor a dúvida, se não chegar vou tentar por palavras responder melhor, entro com dois angulos em 2 MaskEdit e internamente ele efetua a subtração destes dois angulos qualquer e mostra o resultado num label.

    As suas perguntas Giovani

    1 – Informo 89° 59′ 60 e 43° 27′ 32
    2 – Realizo o cálculo x (descrição o calculo)
    3 – O Resultado deve ser este: ( O que deve ser apresentado )

    1)

    MaskEdit1 _89° 59′ 60″
    MaskEdit2 _43° 27′ 32″

    Ps. Os angulos , pode ter até 3 digitos de opção na casa dos angulos °, 2 nos dois minutos’ e nos segundos” nas mascaras dos MaskEdits ___°__’__”

    2)

    Subtração destes dois 89° 59′ 60″ e 43° 27′ 32″

    3)
    46° 32′ 28″ O resultado apresentado num label para poder ser visualizado

    Agradeçido

    #2536
    acs
    Participante

    Giovani Da Cruz

    Obrigado pelos links das dicas é bem interessante, vou estudar eles

    #2551

    Oi acs, caso precise, envie o seu skype para giovani@showdelphi.com.br
    que em todo caso, podemos conversar por áudio.

    #2554
    acs
    Participante

    Bom dia Giovani

    Infelizmente só tenho o computador para me comunicar, o celular quebrou e está no conserto

    Qualquer coisa se tiver algum código que possa me ajudar beleza, nquanto vou testando os que tenho aqui e se der certo retorno e posto o código aqui, então valeu, obrigado outra vez.

    #3097
    acs
    Participante

    demorei mas consegui este código aqui e pode servir para outra pessoas que tenha precisão, com uma amiga chamada Melissa e não estou entrar em contato com ela

    estou sem o Delphi e no Lazarus já dá mesensagem de erro bem na primeira linha do case e não estou conseguindo acertar isso e não sei se tem mais coisas que podem travar na frente

    Agradecido a quem poder dar um auxilio

    begin
    case P_Caracter of
    ‘º’: Result := StrToInt(Trim(Copy(P_Texto, 1, Pos(P_Caracter, P_Texto)-1)));

    __________________________________________________________________________________________

    Melissa

    Segue solução em Delphi, destaco que Edit1 e Edit2 esperam uma string válida, com o formato: ggº mm’ ss”

    ————–
    procedure TForm1.Button1Click(Sender: TObject);

    function GetValorNumerico(const P_Texto: string; const P_Caracter: Char): Integer;
    begin
    case P_Caracter of
    ‘º’: Result := StrToInt(Trim(Copy(P_Texto, 1, Pos(P_Caracter, P_Texto)-1)));
    ””: Result := StrToInt(Trim(Copy(P_Texto, Pos(‘º’, P_Texto)+2, 2)));
    ‘”‘: Result := StrToInt(Trim(Copy(P_Texto, Pos(””, P_Texto)+2, 2)));
    end;
    end;

    var
    W_Graus1: integer;
    W_Minutos1: integer;
    W_Segundos1: integer;

    W_Graus2: integer;
    W_Minutos2: integer;
    W_Segundos2: integer;

    W_Graus3: integer;
    W_Minutos3: integer;
    W_Segundos3: integer;
    begin
    W_Graus1 := GetValorNumerico(Edit1.Text, ‘º’);
    W_Minutos1 := GetValorNumerico(Edit1.Text, ””);
    W_Segundos1 := GetValorNumerico(Edit1.Text, ‘”‘);

    W_Graus2 := GetValorNumerico(Edit2.Text, ‘º’);
    W_Minutos2 := GetValorNumerico(Edit2.Text, ””);
    W_Segundos2 := GetValorNumerico(Edit2.Text, ‘”‘);

    if W_Segundos1 < W_Segundos2 then
    begin
    Dec(W_Minutos1);
    Inc(W_Segundos1, 60);
    end;

    W_Segundos3 := W_Segundos1 – W_Segundos2;

    if W_Minutos1 < W_Minutos2 then
    begin
    Dec(W_Graus1);
    Inc(W_Minutos1, 60);
    end;

    W_Minutos3 := W_Minutos1 – W_Minutos2;

    W_Graus3 := W_Graus1 – W_Graus2;

    Label1.Caption := Format(‘%dº %d” %d”‘, [W_Graus3, W_Minutos3, W_Segundos3]);
    end;

Visualizando 9 posts - 1 até 9 (de 9 do total)
  • Você deve fazer login para responder a este tópico.

Ir ao topo
© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados