Autor Beitrag
firefuzy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
BeitragVerfasst: Mi 03.05.06 15:37 
Hallo!
Wenn ich ein Programm wie dieses starte:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
begin
if copyfile(PChar('C:\neu'), PChar('C:\alt'), false)
then showmessage('Geklappt!')
else Raiselastoserror;
end;

Meldet mir mein PC folgendes:
Zitat:
System Error. Code: 5. Zugriff verweigert.


Was mache ich falsch???

MfG firefuzy

P.S. Bei all den Unterforen weiss ich nicht recht wo mein Thema hingehört; es kann also verschoben werden falls nötig.
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mi 03.05.06 16:15 
user profile iconfirefuzy hat folgendes geschrieben:
Hallo!
Wenn ich ein Programm wie dieses starte:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.Button1Click(Sender: TObject);
begin
if copyfile(PChar('C:\neu'), PChar('C:\alt'), false)
then showmessage('Geklappt!')
else Raiselastoserror;
end;

Meldet mir mein PC folgendes:
Zitat:
System Error. Code: 5. Zugriff verweigert.


Was mache ich falsch???

MfG firefuzy

P.S. Bei all den Unterforen weiss ich nicht recht wo mein Thema hingehört; es kann also verschoben werden falls nötig.


Ich denke Copyfile kann nur Dateien kopieren. Du versuchst aber einen Ordner zu kopieren. Am besten liest du erstmal alle Dateien mit Ordnerstruktur in eine Stringlist Suche in der Delphi-PRAXiS FINDALLFILES und kopierst dann jede einzeln mit einer FOR-Schleife. Um Verzeichnisse zu erstellen empfehle ich dir ForceDirectories (oder macht Copyfile selbst Verzeichnisse?).
firefuzy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
BeitragVerfasst: Do 04.05.06 06:16 
Achso...
Es gibt ja auch den Befehl 'copyfileex', aber der ist bei mir irgendwie anders als in den Hilfedateien. Der Compiler sagt dann immer 'not enough actual parameters' oder so ähnlich.

Aber da ich noch Delphianfänger bin wäre es nett, wenn du mir dass mit der FOR-Schleife mal als Delphi Quelltext zeigen könntest
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Do 04.05.06 17:01 
user profile iconfirefuzy hat folgendes geschrieben:
Achso...
Es gibt ja auch den Befehl 'copyfileex', aber der ist bei mir irgendwie anders als in den Hilfedateien. Der Compiler sagt dann immer 'not enough actual parameters' oder so ähnlich.

Aber da ich noch Delphianfänger bin wäre es nett, wenn du mir dass mit der FOR-Schleife mal als Delphi Quelltext zeigen könntest


Hättest du in der Hilfe gesucht oder dir den Crashkurs von user profile iconChristian s. angeschaut wüsstest du wie eine for-Schleife gemacht wird.

ausblenden ungetestet, schnell runtergetippt!
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure form1.button1.onclick(Sender: TObject);
var
 i: Integer;
begin
 for i:=0 to stringlist.count-1 do
  begin
   copyfile(stringlist.strings[i],'D:\bla\'+extractfilename(stringlist.strings[i]));
  end;
end;


Natürlich musst du innerhalb der procedure erst noch eine stringlist erstellen und diese dann mit den Werten von FindAllFiles füllen. Siehe: www.delphi-forum.de/search.php
firefuzy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
BeitragVerfasst: Do 04.05.06 18:49 
Die For schleife kannte ich schon, aber ich wusste nicht wie das aussehen muss was bei dir Zeile 7 im Quelltext ist.
Aus den Topics die ich mit FindAllFiles gefunden habe werde ich nicht schlau und selber krieg ich des net hin. :cry:
Könnt ihr mir den Funktionsaufruf von FindAllFiles auch noch zeigen? bitte!
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Do 04.05.06 18:57 
ausblenden volle Höhe www.delphipraxis.net...ghlight=findallfiles etwas unten im ersten Beitrag
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:
39:
procedure FindAllFiles(var FileList: TStrings; RootFolder: string; Mask: string =
  '*.*'; Recurse: Boolean = True);

var
  SR: TSearchRec;
begin
  IncludeTrailingPathDelimiter(RootFolder);

  if Recurse then
    if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then
    try
      repeat
        if SR.Attr and faDirectory = faDirectory then
            // --> ein Verzeichnis wurde gefunden
            //   der Verzeichnisname steht in SR.Name
            //   der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist
            //       RootFolder + SR.Name
          if (SR.Name <> '.') and (SR.Name <> '..') then
            FindAllFiles(FileList, RootFolder + SR.Name, Mask, Recurse);
      until FindNext(SR) <> 0;
    finally
      FindClose(SR);
    end;
  if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then
  try
    repeat
      if SR.Attr and faDirectory <> faDirectory then
      begin
          // --> eine Datei wurde gefunden
          //   der Dateiname steht in SR.Name
          //   der vollständige Dateiname (inkl. Pfadangabe) ist
          //       RootFolder + SR.Name
        FileList.Add(RootFolder + SR.Name);
      end;
    until FindNext(SR) <> 0;
  finally
    FindClose(SR);
  end;
end;


Wo liegt das Problem?

ausblenden Delphi-Quelltext
1:
FindAllFiles(StringList, 'C:\bla\', '*.*', True);					
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Do 04.05.06 19:09 
2 Sachen dazu:
1. Das Suchverfahren ist relativ langsam, es gibt schnellere (über WinAPI Stichwort TWin32FindData), was für größere Ordnerstrukturen brauchbar wäre (es gibt genug fertige davon, die du nutzten kannst (DriveTools von Luckie und SearchTool von mir und es gab noch irgendetwas von retny, wenn ich mich richtig erinnere ;) ))
2. Es geht leichter über SHFileOperation(TSHFileOpStruct), da man dort bei entsprechenden Parametern Ordner angeben darf, wo Windows den Rest für dich macht ;).

PS: MSDN hat zu beiden genug Informationen ;).
firefuzy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 69

Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
BeitragVerfasst: Fr 05.05.06 11:06 
Ok, jetzt hab ichs endich geblickt.
Ein abschließendes Danke an alle die mir geholfen haben!! :-) :-)