Delphi - Ayuda Urgente!!!!!

 
Vista:

Ayuda Urgente!!!!!

Publicado por Karla (4 intervenciones) el 19/01/2004 17:21:57
Hola a todos: quisiera que me ayudaran en esta situación. tengo un form que capto informacion y la meto en un array . Sucede que para llenar el arreglo ultilizo un ciclo for. Hasta ahí todo ok. Pero lo malo es que me llena todo el arreglo con la misma información.
Este es mi código;
For i:=1 to 5 do
Begin
Inform[i].Obj:= Edit1.Text;
Inform[i].Peso:= StrtoFloat(edit2.Text);
Inform [i].Valor:=StrtoFloat(edit3.Text) ;
RichEdit1.Text:= RichEdit1.Text+ Inform[i].Obj + #13+ FloatToStr(Inform[i].Peso) + #13 + FloatToStr(inform [i].Valor) + #13+ #13;
end;
Como puedo lograr que en cada iteraçión coja datos distintos captado por el teclado.
Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda Urgente!!!!!

Publicado por Pablo (1 intervención) el 19/01/2004 17:47:53
¿Has programado hace poco en algún lenguaje secuancial? Eso en Clipper funcionaría bien pero en Delphi te pone las cinco veces el mismo valor porque el Edit es el mismo.

Sin bucle For.., puedes poner un botón Aceptar y cada vez que tengas rellenados los datos das al botón que irá al procedure guardar.
Allí tendrás una variable pública que incrementarás en 1, guardas los datos en los arrays, y limpias las entradas (Edits,....).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente!!!!!

Publicado por skull leader (284 intervenciones) el 19/01/2004 17:57:49
yo entendi tu problema asi...

por que en vez de usar un ciclo for, usas un simple evento de click en un boton? es decir, por que complicarse queriendo llenar un array pudiendo pasar todo al richedit de una vez?
lo que yo haria es por cada click que haga en un botón usar la propiedad Add del richedit.

algo asi:

procedure TForm1.Button1Click(Sender);
begin
RichEdit1.Add(Edit1.Text);
RichEdit1.Add(StrtoFloat(edit2.Text););
RichEdit1.Add(StrtoFloat(edit3.Text));
RichEdit1.Add(#10); //salto de linea
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit1.SetFocus;
end;

con esto repetiria las veces que yo quisiera, inserto el contenido de los edits, los limpio y le doy el foco al Edit1 para seguir la captura en caso de que asi la requira.

espero haberte ayudado
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente!!!!!(skull leader )

Publicado por kARLA (4 intervenciones) el 19/01/2004 19:27:39
Amigo skull leader : necesito meter los valores en un arreglo porque luego tengo que escoger los valores que más me convengan, meterlo en otro arreglo y mostrarlos. te digo más estoy implementando el problema de la mochila usando Bactraking. Dime si me copiaste. Si puedes ayudarme en alguna aclaración, con repecto a mi problema te lo agradeceria
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente!!!!!(skull leader )

Publicado por skull leader (284 intervenciones) el 19/01/2004 23:55:08
No entiendo bien... lo que pasa es que yo tmb tengo mis problemas, pero
quizas si pueda ayudarte.
asi entiendo esta vez, quieres meter los valores en un array, para despues
escojer los que te convengan y asignarlos a otro... para mostrarlos...
por demas explicito en tu nota...
no conocia el problema ese, de la mochila, nunca lo habia escuchado mencionar
se me ocurre que hagas pausas al capturar, en el for, otra es que
uses un contador simple, en el click de un boton lo incrementes para hacer referencia a los indices del array y asignes los valores, y cuando
llegue a 5 (siendo el caso) haces el resto de las operaciones...
es lo primero que me vino a la menta, toma en cuenta que ando mareado
de mi propio codigo o que quizas ya se te ocurrio.

espero te sirva, si no, pues explicame como es el problema de la mochila
y quizas ya sea mas clara mi idea.
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente!!!!!

Publicado por Cuervo (262 intervenciones) el 20/01/2004 03:32:55
no logro justificar porque usas "for i". pero si insistes, prueba asi:

For i:= 1 to 5 do
Begin
Inform[i].Obj:= Edit1.Text;
Inform[i].Peso:= StrtoFloat(edit2.Text);
Inform [i].Valor:=StrtoFloat(edit3.Text) ;
end; // do..begin

//asi:
RichEdit1.Text:= RichEdit1.Text+ Inform[1].Obj + #13+ FloatToStr(Inform[2].Peso) + #13 + FloatToStr(inform [3].Valor) + #13+ #13;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente!!!!!

Publicado por karla (4 intervenciones) el 20/01/2004 15:38:27
Bueno, bueno: ya por fin planteo el problema completo y me dan opciones y sugerencia, ok amigos??. El problema de LA MOCHILA consiste en lo siguiente. Se tienen N objetos, con peso y valor cada uno de ellos, y se tiene una mochila que puede cargar un peso máximo M. Se desea escoger un subconjunto de los objetos de manera que el valor total sea el máximo posible, sin sobrepasar el peso máximo. Entonces tengo que implementar un programita para este caso pero usando Bactraking(vuelta a trás), pero con vectores de tamaño variable. Espero que ya me comprendan y si tiene alguna idea por favor soy toto oido.
Byeeee
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ayuda Urgente!!!!!

Publicado por skull leader (284 intervenciones) el 20/01/2004 17:27:34
lo que comenta Cuervo es muy parecido a lo que te comente,
sino es que igual, usa por cada click en un boton o el
evento que necesites, un contador, que se incremente por
cada click (suponiendo que usas un click).
algo asi:

procedure TForm1.Button1Click(Sender: TObject);
begin
Inform[i].Obj:= Edit1.Text;
Inform[i].Peso:= StrtoFloat(edit2.Text);
Inform [i].Valor:=StrtoFloat(edit3.Text) ;
Inc(i); //o es su caso i:=i+1;
end;

supongamos que i es una variable global para la forma
solo tienes que ver que no pase de 5, siendo el caso que tienes
5 elementos maximo en ese array.
el resto del algoritmo es cosa tuya...

espero que te sirva
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:tengo la mochila

Publicado por Cuervo (262 intervenciones) el 20/01/2004 18:35:33
dame un mail para enviarte un -pas con el problema de "la mochila"
los valores tenes que introducirlos vos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar