
Lazarus - Výpis adresářů do ListBoxu
Dobrý den.
Toto mi funguje
procedure TForm1.Button1Click(Sender: TObject);
var SR: TSearchRec;
begin
if FindFirst('f:\Data\*.*', faAnyFile, SR) = 0 then
try
repeat
if Longbool(SR.Attr and faDirectory) then
if (SR.Name <> '.') and (SR.Name <> '..') then
ListBox1.Items.Add(SR.Name);
until FindNext(SR) <> 0;
finally
FindClose(SR);
end;
end;
V adresaři jsou podsložky Leden 2019,Únor 2019,Březen 2019, atd
Jelikož jsem podsložky vytvařel postupně, jsou v Listboxu seřazene podle toho jak jdou po sobě měsice.
Tedy to výpada že zdrojak to nějak setřidí podle datumu vytvoření adresaře.
Když adresař data někam překopirují, cele se to po, a mam to setřizene podle abecedy.
Jak na to, aby se adresaře do listboxu načetle postupně jak jdou měsce?
Načist to do StringListu a pak postupně prohledavat a vypisovat do Listboxu?
Nebo je jednodužší řeení?
Děkojí.
Aby se to načetlo podle měsíců, tak to musíš mít možnost podle něčeho seřadit. Třeba si nedělat složky Leden 2019, ale 2019-01 nebo aspoň 01-2019
Pak je můžeš seřadit podle abecedy
Další možnost je načíst to třeba do StringList, pak seřadit přes CustomSort, kde si napíšeš vlastní proceduru na seřazení, abys zohlednil jména měsíců a nakonec to pak přesypat do ListBox.
Takové pojmenování je absolutně nepraktické, klasická začátečnická chyba. Pojmenuj adresáře 2019-01, 2019-02, ... jak už radil Jan Fiala.