Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error al multiplicar 2 memos (https://www.clubdelphi.com/foros/showthread.php?t=79753)

rufo 07-08-2012 21:36:30

Error al multiplicar 2 memos
 
Hola amigos buenas tardes, tengo un problemilla en el cual nose como resolverlo ya he dado muchas vueltas en el foro y no encuentro la solucion, espero que me ayuden, bueno resulta que tengo dos memos y manualmente escribo las cantidad y en un terce memo sale el resultado pero al momento de pasar a escribir la siguiente cantidad me sale el siguiente error:

http://www.subirimagenes.net/show-im...7e754a0e8b57c9

y el codigo que utilizo para hacer dichas operacion es la siguiente

Código Delphi [-]
 If Memo4.Text = '' then
    begin
    // nada
    end
    else
    Memo2.Text := FloatToStr(StrToFloat(Memo7.Text) * StrToFloat(Memo4.Text));

Bueno de antemano gracias y espero su ayuda.Uso delphi 2007

roman 07-08-2012 21:39:25

Da la impresión, a juzgar por la imagen, que en uno de los memos hay un salto de línea entre los dos digitos del número.

// Saludos

rufo 07-08-2012 23:01:01

Claro es cuando quiero introducir otro digito y me lanza este error

Casimiro Notevi 07-08-2012 23:07:50

¿Pero qué es lo que quieres hacer?

roman 07-08-2012 23:08:41

Cita:

Empezado por rufo
Claro es cuando quiero introducir otro digito y me lanza este error

Entonces tienes que leer una línea del memo a la vez y no todo el texto. La propedad Text te dará todo el contenido incluyendo los retornos de carro.

// Saludos

rufo 07-08-2012 23:24:26

Lo que quiero hacer es un multiplicacion cada vez que introdusca datos numericos en los los dos memos y que me muetre el resultado en el tercer memo, pero nose como hacerle solo ese codigo tengo y es ahi mi problema.

champy 08-08-2012 08:16:48

Como dice Roman, leyendo las lineas una por una, con Memo.Lines[NdeLinea]

Código Delphi [-]
VAR
   Linea : Integer;
Begin

For Linea := 0 to Memo1.Lines.Count -1 do
Begin
   Memo3.Lines.Add( FloatToStr( StrToFloat(Memo1.Lines[Linea]) * StrToFloat(Memo2.Lines[Linea])) );
End;

End;

rufo 08-08-2012 20:43:34

Gracias amigo champy el resultado que me das funciona pero al momento de escribir mas cantidad en el memo y salta a la linea siguiente me borra la cantidad anterior.

champy 08-08-2012 23:15:39

Perdón? No comprendo el problema :confused:

rufo 08-08-2012 23:22:11

Una disculpa por no aclarar bien resulta que puse el ejemplo que mencionaste Champy, si funcioan pero al momento de poner otra cantida en el memo donde muestra los resultados estos se van borrando es ahi mi duda, anexo el codigo

Código Delphi [-]
procedure TFACTURA.Memo4Change(Sender: TObject);
VAR
   Linea : Integer;
Begin

For Linea := 0 to Memo4.Lines.Count -1 do
Begin
   Memo2.Lines.Add( FloatToStr( StrToFloat(Memo4.Lines[Linea]) * StrToFloat(Memo7.Lines[Linea])) );
End;
end;

Mi duda es por que cuando pongo otra cantida en la siguiente linea del memo, en el otro memo donde tiene que mostrar el resultado se borra...

ecfisa 09-08-2012 00:42:49

Hola rufo.

Proba de este modo:
Código Delphi [-]
procedure TFACTURA.FormCreate(Sender: TObject);
begin
  ...
  // Las dos líneas siguientes se pueden omitir,
  // si se asigna el evento desde el Object Inspector
  Memo4.OnChange:= MemoChange;
  Memo7.OnChange:= MemoChange;
end;

procedure TFACTURA.MemoChange(Sender: TObject);
var
  v1,v2: Double;
  c: Integer;
begin
  c:= 0;
  Memo2.Lines.Clear;
  while (c < Memo4.Lines.Count) and (c < Memo7.Lines.Count) do
  begin
    if TryStrToFloat(Memo4.Lines[c],v1) and TryStrToFloat(Memo7.Lines[c],v2) then
      Memo2.Lines.Add(Format('%8.2f',[v1*v2]))
    else
      Memo2.Lines.Add('Error en operandos. (Línea' + IntToStr(c) +')');
    Inc(c);
  end;
end;
...

Saludos.

rufo 10-08-2012 23:18:42

Gracias amigo Ecfisa he probado el ejemplo que me diste y me funciono, gracias de nuevo y a todos que me ayudaron.


La franja horaria es GMT +2. Ahora son las 18:51:19.

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