Hola, tengo un error de stack overflow, en el siguiente código:
Código Delphi
[-]procedure TForm1.Button7Click(Sender: TObject);
var
i, j: integer;
begin
timer1.Enabled:= true;
button5.Enabled:= false;
button2.Enabled:= false;
button3.Enabled:= false;
button4.Enabled:= false;
comb.Enabled:= false;
for i:= 0 to lista.Items.Count -1 do
for j:= 0 to listBox1.Items.Count -1 do
begin
barra2.Max:= listBox1.Items.Count;
barra2.Position:= j;
label10.Caption:= (IntToStr((i)+1))+' de '+IntToStr(lista.Items.Count);
label12.Caption:= (IntToStr((j)+1))+' de '+ IntToStr(listBox1.Items.Count);
if lista.Items.Item[i].SubItems[0] +
' '+ lista.Items.Item[i].SubItems[1]+' '+lista.Items.Item[i].SubItems[2]+
' '+ lista.Items.Item[i].SubItems[3] +' '+lista.Items.Item[i].SubItems[4] +
' '+ lista.Items.Item[i].SubItems[5] = listBox1.Items.Strings[j] then
begin
showmessage('encontrado en la fila '+IntToStr(i)+' de la lista inical');
lista.Selected:= lista.Items[i];
end;
label17.Caption:= FormatFloat('0.00',(i*100)/lista.items.Count)+'%';
end;
showmessage('Proceso terminado. No se encontraron coincidencias.');
if label10.Caption = IntToStr(lista.Items.Count)then
timer1.Enabled:= false;
lista.Selected:= lista.Items[i];
end;
Pero si cambio
listBox1.Items.Strings[j] por
listBox1.Items.Text el error no se produce, aunque claro, tampoco estoy seguro de que se recorra correctamente todo el listbox. A parte, que usando .string[j] se reduce enormemente el tiempo que emplea en recorrer y comparar cada linea de listbox con cada linea del listview.
¿Alguna sugerencia? saludos.