| Autor |
Beitrag |
firefuzy
      
Beiträge: 69
Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
|
Verfasst: Mi 03.05.06 15:37
Hallo!
Wenn ich ein Programm wie dieses starte:
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.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mi 03.05.06 16:15
|
|
firefuzy 
      
Beiträge: 69
Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
|
Verfasst: 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.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Do 04.05.06 17:01
firefuzy 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 Christian s. angeschaut wüsstest du wie eine for-Schleife gemacht wird.
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 
      
Beiträge: 69
Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
|
Verfasst: 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.
Könnt ihr mir den Funktionsaufruf von FindAllFiles auch noch zeigen? bitte!
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Do 04.05.06 18:57
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 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 FileList.Add(RootFolder + SR.Name); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; |
Wo liegt das Problem?
Delphi-Quelltext 1:
| FindAllFiles(StringList, 'C:\bla\', '*.*', True); |
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: 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 
      
Beiträge: 69
Win 98 SE, WinXP Prof, Vista HPrem.
Delphi 7
|
Verfasst: Fr 05.05.06 11:06
Ok, jetzt hab ichs endich geblickt.
Ein abschließendes Danke an alle die mir geholfen haben!! 
|
|
|