Autor Beitrag
Biarchiv
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: Fr 22.07.05 14:55 
Hey,

habe folgendes Problem...
Warum kann ich nicht aufeinmal alle checked files(items) in einer listview
in den Papierkorb verschieben lassen.
In ffiles sollen alle Files stehen und das wird in die Funktion
DeleteFileToRecycleBin übergeben

Vielen Dank...

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
function DeleteFileToRecycleBin(const AFile: string): boolean;
var
  Operation: TSHFileOpStruct;
begin
  with Operation do
  begin
    Wnd := Application.Handle;
    wFunc := FO_DELETE;
    pFrom := PChar(AFile +#0);
    pTo := Nil;
    { in den Papierkorb verschieben / keine
      Sicherheitsabfrage }

    fFlags := FOF_ALLOWUNDO; // or FOF_NOCONFIRMATION;
  end;
  Result := SHFileOperation(Operation) = 0;
end;

procedure TForm2.RemoveFilesDanger1Click(Sender: TObject);
var i : integer;
    ini : Tinifile;
    ffiles : string;
begin
ffiles := '';

if bsSkinCheckListBox1.Items.Count <> 0 then
begin
for i:=0 to bsSkinCheckListBox1.items.Count -1 do
  begin
  if bsSkinCheckListBox1.checked[i] then
  begin
  ffiles := ffiles + bsSkinCheckListBox1.items[i] + #0;
  Form1.Label4.Caption := '0';
  Close;
  end;
  DeleteFileToRecycleBin(ffiles); //DeleteFile(bsSkinCheckListBox1.items[i]); //   .Selected[i]);
  end;
end;
end;


Moderiert von user profile iconGausi: Code- durch Delphi-Tags ersetzt.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Di 26.07.05 01:07 
Wenn du besser einrücken würdest, würdest du Fehler sehr viel schneller finden:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm2.RemoveFilesDanger1Click(Sender: TObject);  
var i : integer;  
    ini : Tinifile;  
    ffiles : string;  
begin  
  ffiles := '';  

 
  if bsSkinCheckListBox1.Items.Count <> 0 then  
  begin  
    for i:=0 to bsSkinCheckListBox1.items.Count -1 do  
    begin  
      if bsSkinCheckListBox1.checked[i] then  
      begin  
        ffiles := ffiles + bsSkinCheckListBox1.items[i] + #0;  
        Form1.Label4.Caption := '0';  
        Close;  
      end;  
      // DeleteFileToRecycleBin(ffiles); // <= Hier weg
    end;  
    DeleteFileToRecycleBin(ffiles); // <= Und hier hin
  end;  
end;


Gruß,
maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Di 26.07.05 02:24 
das wird auch nichts nützen, da die funktion nur EINEN dateinamen erwartet und nicht ne ganze kette:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm2.RemoveFilesDanger1Click(Sender: TObject);  
var i : integer;  
    ini : Tinifile;  
begin  
  if bsSkinCheckListBox1.Items.Count <> 0 then  
  begin  
    for i:=0 to bsSkinCheckListBox1.items.Count -1 do  
    begin  
      if bsSkinCheckListBox1.checked[i] then  
      begin  
        DeleteFileToRecycleBin( bsSkinCheckListBox1.items[i] );  
        Form1.Label4.Caption := '0';  
        Close;  
      end;  
    end;  
  end;  
end;

das hier:
ausblenden Delphi-Quelltext
1:
pFrom := PChar(AFile +#0);					

ist übrigens auch für die katz, pchar(string) ist von haus aus nullterminiert

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 26.07.05 04:04 
SHFileOperation kannman aich eine Liste von Strings übergeben. Die einzelnen Dateien werden durch #0 getrennt und dann mit #0#0 abgeschlossen.