Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-10-2015
MoeHoward MoeHoward is offline
Registrado
NULL
 
Registrado: oct 2015
Posts: 5
Poder: 0
MoeHoward Va por buen camino
Problema para generar vector a partir de maskedit y combobox

Hola buen día, soy usuario nuevo en el foro y vengo a pedir ayuda y orientación para resolver un problema muy básico al generar un vector a partir de valores ingresados en dos maskedit y un combobox, soy principiante usando delphi espero su comprensión.

El objetivo del programa es generar un vector de rango 'n'. Esta 'n' está definida por el rango existente entre el MaskEdit1 y el MaskEdit2. Por ejemplo, si el maskedit1 tiene como texto '0' y el maskedit2 tiene como texto '10', el rango será 10, que resulta de la resta en entero de
10 - 0, strtoint(maskedit2.text) - strtoint(maskedit1.text). La longitud del vector se determina con el valor del combobox, los valores posibles pueden ser 0.1, 0.2, 0.5 o 1. Esto quiere decir que si en el combobox se selecciona 0.2 cada posición del vector aumentará 0.2. Para el ejemplo de 0 a 10, el vector tendrá una longitud de 50, resultante de 0.2/10, algo así es lo deseado: [0 0.2 0.4 0.6 .... 9.6 9.8 10]

El problema es que justo en las posiciones 23 a 27 del vector resultan valores con exponenciales muy pequeños cercanos a cero, al usar la función trunc() se vuelven cero. Entre la posición cero y la veintidos todo bien, y partir de la 28 todo bien.

Para comprobar, escribo cada posición del vector en una línea de un memo. El evento se genera al presionar un botón. Aquí el código:

Código Delphi [-]
var
  
  LI, LS, ND : Integer;                   //LI: límite inferior, LS: límite superior, ND: número de divisiones
  x1 : Real;                                 //Acumulador
  RES1 : Real;                              //Resolución de las variables

procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
  if ComboBox1.Text = '1' then
  begin
    LI1 := StrToInt(MaskEdit1.Text);          //Límite inferior en entero
    LS1 := StrToInt(MaskEdit2.Text);         //Límite superior en entero
    RES1 := StrToFloat(ComboBox1.Text);  //Resolución en real
    RE1 := LS1 - LI1;                              //Rango de la variable
    ND1 := trunc(RE1 / RES1);                 //Número de divisiones
    SetLength(VE1, RE1);                         //Se establece longitud del vector

    for i := 0 to ND1 do
      begin
        VE1[i] := LI1 + x1;
        x1 := x1 + RES1;
      end;

    for i := 0 to ND1 do
     begin
      Memo1.Lines.Add(FloatToStr(StrToFloat(FormatFloat('0.00', VE1[i]))));    //Con formato float se redondea y se da cero en la posición 23-27
      //Memo1.Lines.Add(FloatToStr(VE1[i]));                                              //En este formato las posiciones 23 a 27 tienen valores                         
                                                                                                          //exponenciales cercanos a cero
     end;

De antemano muchas gracias por su ayuda y su tiempo.

Última edición por roman fecha: 16-10-2015 a las 04:33:56. Razón: cerrar correctamente la etiqueta delphi
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Generar XML a Partir de XSD Avellas Internet 3 02-05-2022 11:54:57
Generar Metadatos a partir de una consulta SQL. Neeruu MS SQL Server 10 09-04-2014 01:02:00
generar un string a partir de dos celdas de un DbGrid pablopessoa Conexión con bases de datos 3 20-10-2008 18:18:44
Generar fichero x.tlb a partir de x_TLB.pas albion Varios 1 16-06-2006 13:20:51
generar html (tablas) a partir de query jymy788 Varios 2 28-09-2004 10:29:36


La franja horaria es GMT +2. Ahora son las 23:30:51.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi