delphi
Type TMiObjeto = class(TObject) sPath: String; end; procedure CargarM3u(M3u: string; Src: TListbox); var m3ufile: TStringList; i: integer; Temp, Cancion: string; obj: TMiObjeto; begin obj := TMiObjeto.Create; m3ufile := TStringList.Create; m3ufile.LoadFromFile(M3u); for i := 0 to m3ufile.Count -1 do begin Temp := UpperCase(Trim(m3ufile[i])); if Copy(Temp, 1, 1) <> '#' then obj.sPath := m3ufile[i] else if Copy(Temp, 1, 8) = '#EXTINF:' then Cancion := Copy(m3ufile[i], Pos(',', m3ufile[i]) + 1, Length(m3ufile[i])); Src.AddItem(Cancion, TMiobjeto(obj)); end; m3ufile.Free; obj.Free; end;
El resultado es el siguiente:
Problema número 1, se me repite dos veces la canción, problema número 2, cuanto intento el valor del objeto de un item del listbox me da error:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004032B2 in module 'Project1.exe'. Read of address BAADF00D'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
El code lo tengo así:
delphi
procedure TForm1.Button2Click(Sender: TObject); var Obj: TmiObjeto; i: integer; begin i := ListBox1.ItemIndex; Obj := ListBox1.Items.Objects[ListBox1.Items.IndexOf(ListBox1.Items[i])] as TmiObjeto; ShowMessage(Obj.sPath); end;
Ya probé con el paso a paso (F4 y F7) y se obitenen los valores correctamente, así que no sé por donde anda el problema. ¿me pueden echar una mano?.
Saludos.