Einzelnen Beitrag anzeigen

Benutzerbild von HomerGER
HomerGER

Registriert seit: 8. Jun 2003
390 Beiträge
 
Delphi 7 Professional
 
#1

SHGetFileInfo Icon und ListView

  Alt 25. Jun 2004, 08:02
Hallo
Ich lese tmp dateien aus und zeige sie in ein Listview an
zustätzlich noch das Datei-Icon

Delphi-Quellcode:
//******************************************************************************
//Haupt Function
Procedure Temp_Ordner_Anzeigen_WHU();
var
list_item_li : TListItem;
icon_list_il : HImageList;
file_info_fi : TSHFileInfo;
dateien_sl : TStringList;
folder_s : String;
i : Integer;

begin
    //Icon laden
    icon_list_il := HImageList(SHGetFileInfo('', 0, file_info_fi, SizeOf(file_info_fi), SHGFI_SYSICONINDEX or SHGFI_ICON));

    if (icon_list_il <> 0) then
    begin
        Haupt_Form.Wartung_Temp_ImageList1.Handle := icon_list_il;
        Haupt_Form.Wartung_Temp_ImageList1.Height := 16;
        Haupt_Form.Wartung_Temp_ImageList1.Width := 16;
    end;

    //Alles löschen
    Haupt_Form.Wartung_ListView41.Clear;

    //Spezial Ordner auslesen
    folder_s := Windows_System_Variable_GU('Temp');

    dateien_sl := TStringList.Create;
    dateien_sl.Clear;

    try
        Dateien_Suchen_GU(dateien_sl , folder_s, '*.*');

        for i := 0 to dateien_sl.Count - 1 do
        begin
            Application.ProcessMessages;

            //Name
            list_item_li := Haupt_Form.Wartung_ListView41.Items.Add;
            list_item_li.Caption := ExtractFileName(dateien_sl.Strings[i]);

            //Icon
            SHGetFileInfo(PChar(dateien_sl.Strings[i]), 0, file_info_fi, SizeOf(file_info_fi), SHGFI_SYSICONINDEX or SHGFI_ICON);
            list_item_li.ImageIndex := file_info_fi.iIcon;

        end;


    finally
        dateien_sl.Free;
    end;
end;
nur bekomme ich jetzt den fehler Out of Resource
nehme ich
Delphi-Quellcode:
            
SHGetFileInfo(PChar(dateien_sl.Strings[i]), 0, file_info_fi, SizeOf(file_info_fi), SHGFI_SYSICONINDEX or SHGFI_ICON);
list_item_li.ImageIndex := file_info_fi.iIcon;
raus ist alles ok
habe ich irgendwo vergessen den speicher freizugeben?
oder was ist da falsch?
kann jemand helfen
  Mit Zitat antworten Zitat