Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2012
kirios kirios is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 27
Poder: 0
kirios Va por buen camino
Ayudita con un codigo

Hola!
tengo este codigo y no tengo idea por que no funciona.

Antes corria perfecto. El programa compila bien, pero no me da el resultado que quiero. Este es el código

procedure Tformbar.preciobar;
var
i,j:integer;
chk: TCheckbox;
TOTAL: real;
begin
TOTAL:=0;
for i:= 0 to ControlCount - 1 do
begin
if controls [i] is tcheckbox then
begin
chk:=controls[i] as Tcheckbox;
if chk.Checked then
begin
for j:= 1 to n do
begin
if upcase(chk.caption) = upcase(copy(B[j],1,pos(';',B[j])-1))
then TOTAL:= TOTAL + strtofloat(Copy(B[j],pos(';',B[j])+1,maxint));
end;
end;
end;
end;

uncontbar.formcontbar.LBPrecioBar.Caption:=floattostr(Total);

end;

Consta basicamente de un formulario con checkbox's, y la idea es que los recorra, que encuetre cuales estan chequeados y compare su caption con una matriz con datos que ya esta cargada. Si encuentra ese nombre en la matriz, copia un dato de esa matriz y la guarda en la variable TOTAL. Al final, esa variable se imprime en un label en otro formulario.
Pero cuando ejecuto, siempre se queda en cero, nunca cambia.

Alguna ayudita por ahi...?

Graciass
Responder Con Cita
  #2  
Antiguo 20-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola kirios.

Por favor cuando incluyas código en tus mensaje utiliza TAG's:



Con respecto a tu consulta, yo encararia el tema de otro modo; que a mi entender es más simple. Usaría la propiedad Tag de los TCheckBox como índices y en lugar de una matriz usaría un arreglo dinámico.

Un ejemplo como para darte una idea:
Código Delphi [-]
var
  Valores: array of Double;

(* Cargar valores, asignar Tag *)
procedure TForm1.FormCreate(Sender: TObject);
var
  i, c: Integer;
begin
  for i:= 1 to 100 do
  begin
    SetLength(Valores,i+1);
    Valores[i]:= i;
  end;
  c:= 1;
  for i:= 0 to ComponentCount-1 do
    if Components[i] is TCheckBox then
    begin
      TCheckBox(Components[i]).Tag:= c;
      Inc(c);
    end;
end;

(* Devolver total *)
function TForm1.preciobar: Double;
var
  i:integer;
begin
  Result:= 0;
  for i:= 0 to ComponentCount - 1 do
    if Components[i] is TCheckBox then
      if TCheckBox(Components[i]).Checked then
        Result:= Result + Valores[TCheckBox(Components[i]).Tag];
end;

(* Llamada *)
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption:= FloatToStr(preciobar);
end;

(* Liberar memoria *)
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Valores:= nil;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 20-03-2012
kirios kirios is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 27
Poder: 0
kirios Va por buen camino
Hola!
Buenisimo, no sabia lo de los tags. Igual te comento que la matriz que tengo se carga al iniciar el programa, desde un archivo de texto externo, donde tengo el nombre y el precio de cada cosa. Entonces, mi idea es comparar los caption de los checkbox's, compararlos con los nombres en la matriz, y sacar el precio desde ahi. El Caption esta tomado de la misma matriz, asique la comparacion no es el problema, son la misma cosa. Pudiste encontrar algun error en el codigo que pase antes?

Gracias!
Responder Con Cita
  #4  
Antiguo 20-03-2012
adfa adfa is offline
Miembro
 
Registrado: may 2003
Ubicación: Montevideo-Uruguay
Posts: 119
Poder: 21
adfa Va por buen camino
Hola. Hace mucho que no escribo, pero me parece que no es el lugar correcto del foro para esto.
No veo problemas en tu codigo si antes te andaba y ahora quiza pueda ser la configuración regional con los separadores decimales...
Responder Con Cita
  #5  
Antiguo 20-03-2012
kirios kirios is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 27
Poder: 0
kirios Va por buen camino
Hola!
No creo que ese sea el problema, pero gracias igual. Me voy a fijar lo del foro, yo tambien hace mucho que no escribo, por aho entre en otro lado.
Gracias!
Responder Con Cita
  #6  
Antiguo 20-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, además de los tags para el código, recuerda nuestra guía de estilo y también recuerda poner títulos descriptivos a tus preguntas, sirven para luego hacer búsquedas.
Además no repitas preguntas.
Ya he borrado la otra.
Ya sabemos que llevas poquito tiempo aquí y todavía no estás familiarizado, te aconsejo que leas la guía de estilo, no te llevará ni tres minutos.
Muchas gracias por tu colaboración.
Responder Con Cita
  #7  
Antiguo 20-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola kirios.

Ahora creo que entendí lo que buscas.

A ver... tenés un archivo de texto con el nombre de un objeto y un valor separados por un ';' . Supongamos que se llame Archivo.txt y contenga lo siguiente:
Código:
cama;1
mesa;2
silla;3
vaso;4
plato;5
banco;6
cuchillo;7
tenedor;8
cuchara;9
fuente;10
Entonces sería mucho más fácil hacerlo usando TStrings :
Código Delphi [-]
var
  TS: TStrings;

(* Cargar valores, asignar Tags *)
procedure TForm1.FormCreate(Sender: TObject);
var
  i,c: Integer;
begin
  TS:= TStringList.Create;
  TS.LoadFromFile('C:\Archivo.txt'); // leer datos del archivo
  c:=0;
  for i:= 0 to ComponentCount-1 do
    if Components[i] is TCheckBox then
    begin
      TCheckBox(Components[i]).Caption:= Copy(TS[c],1,Pos(';',TS[c])-1); // nombre del objeto
      TCheckBox(Components[i]).Tag:= c;  // índice
      Inc(c);
    end;
end;

(* Devolver total *)
function TForm1.preciobar: Double;
var
  i,c:integer;
  s: string;
begin
  Result:= 0;
  c:=0;
  for i:= 0 to ComponentCount - 1 do
    if Components[i] is TCheckBox then
      if TCheckBox(Components[i]).Checked then
      begin
        s:= TS[TCheckBox(Components[i]).Tag]; // dato
        Result:= Result + StrToFloat(Copy(s,Pos(';',s)+1, MaxInt)); // valor
        Inc(c);
      end;
end;

(* Llamada *)
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption:= FloatToStr(preciobar);
end;

(* Liberar *)
procedure TForm1.FormDestroy(Sender: TObject);
begin
  TS.Free;
end;
Por supuesto tendrás que tener tantos CheckBoxs como datos haya en el archivo...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 20-03-2012
kirios kirios is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 27
Poder: 0
kirios Va por buen camino
Hola! Repetí la pregunta porque estaba en la sección equivocada, pensé que tenia que volver a escribirla, no lo hice para molestar. Por favor podes habilitarla? A menos que la primera pregunta que hice se vea desde esta seccion del foro, necesito algunas respuestas para el problema. Voy a leer la guia.

Gracias!
Responder Con Cita
  #9  
Antiguo 20-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿No te gusta la respuesta de ecfisa?
Responder Con Cita
Respuesta



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
Una ayudita con un gps newgeek Varios 7 09-12-2010 13:43:58
Ayudita con HD dape Varios 5 29-04-2008 18:33:21
Una ayudita, para este codigo ingabraham OOP 14 17-08-2007 01:22:48
ayudita con mi space en mns¿? gypi Varios 7 08-08-2007 10:53:34
una ayudita Delphius Varios 4 16-01-2005 11:24:58


La franja horaria es GMT +2. Ahora son las 00:45:59.


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