What you have for the TSearchRec structure is perfect the problem resides in your implimentation of adding subItems to the list. Here is your code block corrected...
[pascal]procedure TForm1.SearchButClick(Sender: TObject);
var sr: TSearchRec;
LI: TListItem;
begin
with Output.Items do begin
Clear;
if FindFirst('E:\Music\*' + SearchBox.Text + '*.mp3', faAnyFile, sr) = 0 then begin
repeat
LI := Add;
LI.Caption := sr.Name;
LI.SubItems.Add(IntToStr(sr.Size));
until FindNext(sr) <> 0;
FindClose(sr);
end;
end;
[/pascal]

Because you were calling add twice you were creating a new listitem each time add was called. Because you don't want to empty your list box you do not need to free LI. You should only nil it when you are done. ie. LI := nil; Hope that helps.

-Jeremy

p.s. I never professed to be able to spell correctly... :lol: