Delphi - Ayuda con Strings y TStrings

 
Vista:

Ayuda con Strings y TStrings

Publicado por Sephiroth (24 intervenciones) el 27/06/2007 04:05:20
Hola tengo esta situación:
Tengo un ListBox(Items: TString) con la sgte lista:

josé
pepe
pablo
maría
maira
juana


etc...¿cómo puedo hacer una rutina que lea por ejemplo el contenido de la línea 3(maría), si lo que está allí es maría que me diga que es maría en un mensaje, miren algo así fue lo que hice y no me funcionó:

declaré una variable global:
var
i: integer;

y en el evento OnCreate del Form1 la setié a 0:

procedure TForm1.OnCreate(Sender: TObject);
begin
i:=-1; //para que al incrementarlo suba a 0 luego a 1 etc...
end;

luego hice esta rutina:

procedure TForm1.Button1Click(Sender: TObject);
begin
Inc(i); //incremento la variable
ShowMessage('Línea '+IntToStr(i)+':'+ListBox.Items[i] );
end;

debería salir este mensaje al primer clic en el botón:

Línea 0:josé

luego:

Línea 1:pepe

..etc.

..pero desafortunadamente no fué así. Si puedes ayudarme te lo agradecería mucho. Gracias.
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 con Strings y TStrings

Publicado por Juzam (821 intervenciones) el 27/06/2007 12:56:03
Prueba con esto:

procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:=0 to ListBox1.Count-1 do
ShowMessage ('El item numero '+IntToStr(i+1)+' es ' +
ListBox1.Items[i]);
end;

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 con Strings y TStrings

Publicado por juancho (193 intervenciones) el 27/06/2007 12:59:26
Puedes usar:
//Devuelve un String de acuerdo al indice
Lista.Strings[Index]; //as String
O sea tu mensaje seria:
ShowMessage('Línea ' + IntToStr(i)+ ': ' + ListBox.Items.Strings[i] );
//Esta otra funcion muy util te devuelve el indice del item que contiene la cadena, sino la
//encuentra devuelve -1
Lista.IndexOf('maria');// as Integer
Espero que te sirva.
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 con Strings y TStrings

Publicado por Nombre (106 intervenciones) el 27/06/2007 13:52:38
Pues he copiado tu código (los nombres propias con mayúscula inicial), y funciona.
Lo único que cuando pasa el último da error porque se sale de índice (out of bouds).

>> ...pero desafortunadamente no fue así.

¿ Cómo fue ?
¿ Podrías decir el error o el resultado que te da ?
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

para "Nombre"

Publicado por Sephiroth (24 intervenciones) el 28/06/2007 19:08:36
Si exactamente ese mismo error me da, el de out of bounds.
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:para

Publicado por nombre (106 intervenciones) el 29/06/2007 18:41:35
Pues cuenta los items y cuando estés en el último que te avise, y si se ha pasado el contador le restas uno.

Por ejemplo así.

procedure TForm1.Button1Click(Sender: TObject);
begin
Inc(i);
if (i = Listbox.Items.Count - 1) or (i > Listbox.Items.Count - 1) then
begin
if i > Listbox.Items.Count - 1 then
i := i - 1;
ShowMessage('Línea ' + IntToStr(i) + ': ' + ListBox.Items[i] + ' [Es el último nombre]');
end
else
ShowMessage( 'Línea ' + IntToStr(i) + ': ' + ListBox.Items[i] );
end;
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

Gracias amigo, me ha funcionado.

Publicado por Sephiroth (24 intervenciones) el 01/07/2007 03:09:29
Muchas gracias, es justo lo que necesitaba.
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