Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-06-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
66,00 no es double ???

Buenas, tengo una variable declarada asi :

suma : double;

Y le envio el valor :

66,00

Y me da este error :

no es un valor entero valido

¿Que esta mal? ¿por que no es entero? ....

Venga gracias anticipadas.
Responder Con Cita
  #2  
Antiguo 14-06-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
Vale segun veo es que es el . no la ,

¿Como le hago un replace? en vb es facil suma = replace(suma,",",".")

Pero en delphi no conosco la funcion ...

Gracias anticipadas.
Responder Con Cita
  #3  
Antiguo 14-06-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Cómo obtienes el dato? quizás cambiando la forma de obtención solucionaríamos el problema

No obstante puedes mirarte la función StringReplace o la función Pos
Responder Con Cita
  #4  
Antiguo 14-06-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
A ver creia solucionarlo pero nada, este es el codigo que tengo :

Código Delphi [-]
procedure TlFactAutorizaciones21.hinteriuraPrint(sender: TObject;
  var Value: String);

function CambiaEn(Cadena, Esto, Por: String): String;
   var
     aPos: Integer;
   begin
     aPos := Pos(Esto, Cadena);
     Result:= '';
     while (aPos <> 0) do begin
       Result := Result + Copy(Cadena, 1, aPos-1) + Por;
       Delete(Cadena, 1, aPos + Length(Esto)-1);
       aPos := Pos(Esto, Cadena);
     end;
     Result := Result+Cadena;
   end;

var
a : string;
ParaCambiar:string;
//a : double;
begin


a:=CambiaEn(value,',','.');

     if anterior1 = anterior then
        begin

        end
     else
         begin
        suma1 := suma1 + strtofloat(a);
         end;

anterior1 := anterior;
end;

Pero me da el mismo error, y ahora estoy enviando el valor 66.00 ya que hago el reemplazo correctamente.

El valor me llega de una base de datos y yo lo leo de un QRDBText

¿Que puedo hacer?. Pense que al quitarle la coma y ponerle punto iba a funcionar pero nada.

Gracias anticipadas.

Última edición por __cadetill fecha: 14-06-2004 a las 12:54:12. Razón: corregir etiqueta [/delphi]
Responder Con Cita
  #5  
Antiguo 14-06-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
Vale ya esto si que no lo entiendo, si pongo esto :

suma1 := 30.3;

Me dice que es correcto, es decir no peta

Pero si pongo :

suma1 := strtoint(a);

ME da el error, si miro el valor de a es 66.00 es decir correcto

Bua me esta ganando no se que error es ...
Responder Con Cita
  #6  
Antiguo 14-06-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Vale, y por qué no accedes al dataset asociado y coges directamente el valor de allí?

Código Delphi [-]
suma1 := suma1 + Sender.DataSet.FieldByName(Sender.DataField).AsFloat;
Responder Con Cita
  #7  
Antiguo 14-06-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
Por que no es un dataset, yo creo el codigo segun necesito, el cliente mete muchas variables y creo el sql, a partir del sql creo el resto, no es un dataset.

Esto es mas menos :

Código Delphi [-]
        qry := TIBQuery.Create(qry);
        qry.database := datamodule2.database;
        Qry.SQL.Text := cadenaSQL;
        qry.open();

        llistat := Tlfactautorizaciones21.create(Self);

        llistat.QuickRep1.DataSet := qry;

Donde cadenaSQL depende de muuuchas cosas, es asi como nos han dicho qeu tenemos que hacerlo en la empresa y no me dejarian cambiarlo.

¿se te ocurre otra forma de hacerlo?
Responder Con Cita
  #8  
Antiguo 14-06-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
jeje, cuando hablo de dataset, lo digo de forma genérica, es decir, a cualquier descendiente de la clase dataset (como puede ser un TIBQuery)

La idea sigue siendo la misma, da igual que lo que tengas detrás sea un TIBQuery, como un TQuery, como TTable, como un TIBDataset,....... Lo importante es que deriban todos de Dataset y que todos tienen el FieldByName que te menciono en el ejemplo (ya que este método es de la clase dataset, no de la clase TIBQuery u otra)

Pruebalo y me comentas
Responder Con Cita
  #9  
Antiguo 14-06-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
Ah si ??? juas cada dia me doy mas cuenta de lo poco que se jeje.

Y como le referencio ???

Es decir todo esto lo hago en otro form ... ¿como lo referencio?
Responder Con Cita
  #10  
Antiguo 14-06-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Bueno, la operación de suma la haces en el OnPrint de un TQrDbText, no?

Si es así, en principio sólo tendrías que poner la linea de código que te he pasado (siempre y cuando suma1 sea de tipo Float)
Responder Con Cita
  #11  
Antiguo 14-06-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Perdón, la linea anterior tiene un error, tendría que quedar algo así

Código Delphi [-]
if Sender is TQrDbText then
  suma1 := suma1 + TQrDbText(Sender).DataSet.FieldByName(TQrDbText(Sender).DataField).AsFloat;
Responder Con Cita
  #12  
Antiguo 14-06-2004
chele chele is offline
Miembro
 
Registrado: feb 2004
Posts: 83
Poder: 21
chele Va por buen camino
Bua funciona perfecto, gracias
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 18:05:24.


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