Chciałbym zoptymalizować zapis folderów do pliku.
Problem mam na etapie zapisania ścieżki tylko dla folderu, który ma zaznaczone wszystkie podfoldery.
Jeśli w podgałęziach jest któryś folder odznaczony, to trzeba zapisać wszystkie zaznaczone gałęzie.
Jeśli w podgałęziach jest wszystko zaznaczone, to należy zapisać tylko gałąź główną.
Zobrazuje to:
1: Wynik w pliku powinien być:
C:
a mnie wychodzi:
C:$RECYCLE.BIN
C:\Boot
C:\Documents and Settings
C:\MSOCache
C:\Program Files
C:\Recycled
C:\RECYCLER
C:\System Volume Information
C:\WINDOWS
2: Wynik w pliku powinien być:
C:$RECYCLE.BIN
i tak też mam.
Zauważyłem iż problem pojawia się po rozwinięciu gałęzi.
Jeśli zaznaczę cały dysk C bez rozwijania gałęzi, poprawnie mi zapisuje tylko "C:" do pliku.
procedure SaveChecksToDisk(FileName: string);
var
List: TStringList;
i: integer;
Node: TTreeNode;
Path: string;
begin
List := TStringList.Create;
for i := 0 to Items.Count - 1 do
begin
Node := Items[i];
if (Node.Level > 0) and (Node.StateIndex = CHECKED) then
begin
if (Node.GetFirstChild <> nil) and (Node.GetFirstChild.StateIndex = CHECKED) then Continue;
Path := GetDirectory(FRootShellFolder, Node.Data, SHGDN_FORPARSING);
Application.ProcessMessages;
List.Add(Path);
end;
end;
List.SaveToFile(FileName);
List.Free;
end;
Proszę o pomoc