Usuwam wiele plików naraz za pomocą funkcji SHFileOperation.
Ale jest jeden minus - nie są one usuwane na stałe tylko przenoszone do kosza. Jak temu zaradzić? :-/
0
0
A nie lepiej poleceniem DeleteFile ?
procedure TForm1.Button1Click(Sender: TObject);
var
usuwaj : integer;
begin
for usuwaj :=ListBox1.Items.Count-1 downto 0 do
begin
Application.ProcessMessages;
DeleteFile(ListBox1.Items.Strings[ListBox1.ItemIndex]);
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
end;
0
Opi napisał(a)
A nie lepiej poleceniem DeleteFile ?
procedure TForm1.Button1Click(Sender: TObject);
var
usuwaj : integer;
begin
for usuwaj :=ListBox1.Items.Count-1 downto 0 do
begin
Application.ProcessMessages;
DeleteFile(ListBox1.Items.Strings[ListBox1.ItemIndex]);
ListBox1.Items.Delete(ListBox1.ItemIndex);
end;
end;
shfileoperation() usuwa całe(pełne) katalogi, ty mu <ort>walnołeś </ort>kod, w tkórym nawet nie ma wyszukiwania tych plików i wprowadzania do listbox'a.
Pixel u mnie usuwa fizycznie a nie przenosi do kosza a mam tak :
var s:tshfileopstruct;
begin
s.wnd:=handle;
s.wfunc:=fo_delete;
s.pform:='c:\temp';
s.flags:=fof_noconfirmation or fof_renameoncollision;
s.fanyoperationsaborted:=true;
shfileoperation(s);
end;
(pisane z glowy/mogą być błędy)
0
with FOS do
begin
Wnd := Form1.Handle;
wFunc := FO_DELETE;
pFrom := PChar(ExcludeTrailingPathDelimiter(ExtractShortPathName(Source)) + '\*.*' + #0);
pTo := PChar(ExcludeTrailingPathDelimiter(ExtractShortPathName(Destination)) + 0);
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMMKDIR or FOF_NOCONFIRMATION;
fAnyOperationsAborted := False;
end
Ja robie tak. Wydaje mi się że to zależy od ustawień systemowych.
0
PiXel napisał(a)
fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMMKDIR or FOF_NOCONFIRMATION;
Jeśli przy usuwaniu ustawiasz flagę FOF_ALLOWUNDO, to na 100% dane zostana przesunięte do kosza.
0
Thx, pomogło ;)