Entwickler-Ecke
Windows API - Windows Shell copy Problem!
Jan_ - Mo 27.10.03 13:17
Titel: Windows Shell copy Problem!
Ich habe das gemacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| cmd := Str1+'\data\*.*' ; with shellinfo do begin wnd := handle; wfunc := FO_COPY; pFrom := Pchar(cmd); pTo := Pchar(Str2+'\');
end; SHFileoperation(shellinfo); |
Und wenn ich jenes nochmal mache, gibt es einen Fehler! Es liegt wahrscheinlich daran, das der Ordner schon die gleichen Dateien enthält!
in str1 und str2 sind die Verzeichnisse, das klapt auch! Bitte helft mir befor ich den PC aus dem Fenster haue!
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
Delete - Mo 27.10.03 14:31
Titel: Re: Windows Shell copy Problem!
| Jan_ hat folgendes geschrieben: |
| Und wenn ich jenes nochmal mache, gibt es einen Fehler! |
Welchen?
| Zitat: |
| Es liegt wahrscheinlich daran, das der Ordner schon die gleichen Dateien enthält! |
Du solltest dich mit den Flags von SHFileOperation bzw. von TSHFileOpStruct vertraut machen. Dort kannst du auf bestimmte (einige, nicht alle!) Situationen reagieren. Etwa, dass Verzeichnisse automatisch ohne Rückfrage angelegt werden. Oder dass im Fehlerfall keine Fehlermeldung angezeigt werden soll, usw. Als Beispiel eine kurze Codezeile:
Delphi-Quelltext
1: 2:
| fFlags := FOF_NOCONFIRMATION or FOF_NOERRORUI or FOF_ALLOWUNDO; |
Was die Flags bewirken, kannst du im PSDK oder
MSDN [
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/structures/shfileopstruct.asp] erfahren.
| Zitat: |
| Bitte helft mir befor ich den PC aus dem Fenster haue! |
Hoffentlich ist es nicht zu spät. :mrgreen:
Übrigens müssen die angegebenen Strings mit zwei Null-Zeichen enden, damit die Funktion "weiß", wo Schluss ist. Es ist nämlich möglich, mehr als eine Datei und mehr als ein Verzeichnis gleichzeitig anzugeben. Diese werden jeweils durch
ein Null-Zeichen getrennt.
| Zitat: |
Delphi-Quelltext 1: 2:
| pFrom := Pchar(cmd); pTo := Pchar(Str2+'\'); | |
castet den String zwar als PChar, aber eben mit nur einem Null-Zeichen am Ende. Auf der sicheren Seite bist du deshalb, wenn du die Nullen extra angibst.
Jan_ - Mo 27.10.03 15:24
Thx
Ich probiere gleich mal!
Jan_ - Di 28.10.03 11:09
Es grht immer noch nicht, habe mal noch andere Flags ausprobiert geht aber immer nicht, :cry:
kommt ein Dateisystem fehler!
Es geht auch die Löschfunction nicht richtig!
Aber wenn ich in dem Ziel Verzheichniss alles Lösche und ein paar Dummy Files einfüge (alles per Hand) geht es!
Wie ist das gemeint mit der Null?
oder
?????
Delete - Di 28.10.03 14:22
Dateisystemfehler deuten eigentlich darauf hin, dass evtl. vorhandene Dateien aus irgendwelchen Gründen nicht überschrieben werden können. Bspw. wenn eine der Dateien (ein Programm o.ä.) noch offen ist. Sollte das Zielverzeichnis noch nicht existieren, dann brauchst du noch das Flag
FOF_NOCONFIRMMKDIR. Dann werden Verzeichnisse ggf. automatisch ohne Rückfrage erstellt.
Bei mir gibt´s etwas ähnliches unter XP - ein Rechteproblem. :) Ich habe als Admin den Mozilla installiert, der ein Desktop-Icon angelegt hat. Da ich als Admin aber nicht surfe, habe ich das Icon auf meinen Benutzerordner gesetzt. Als Benutzer kann ich es nun natürlich nicht löschen, weil der Besitzer ja immer noch der Admin (mit den höheren Rechten) ist. Aber das ist okay. ;)
Prüf also mal, ob solche oder ähnliche Fehlerquellen bei dir auftreten können.
| Zitat: |
| Wie ist das gemeint mit der Null? |
Delphi-Quelltext
1:
| pFrom := Pchar(cmd + #0#0); |
bspw.
Motzi - Di 28.10.03 14:31
Es reicht im Prinzip schon
Delphi-Quelltext
1:
| pFrom := Pchar(cmd + #0); |
da Delphi ja intern sowieso immer ein Nullzeichen mitführt...!
Jan_ - Mi 29.10.03 09:49
Naja, das Prob kommt bei
Win 98 und Win 200,
bei 98 ist nich nicht viel mit Benutzerrechten los,
Ich habe dem Befehl 2 mal hintereinander ausgefürt und da kam es schon -> Prog könnte auf jeden Rechner nur einmal benutzt werden.
Naja, ich habe jetzt ne Methode gefunden um das hinzukriegen,
Thanks 2 All
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!