Autor Beitrag
Jan_
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 27.10.03 13:17 
Ich habe das gemacht:
ausblenden 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+'\');

       //fAnyOperationsAborted := true;
  end;
  //showmessage(cmd+'  '+Str2+'\Prod\');
  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 user profile iconTino: Code- durch Delphi-Tags ersetzt.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 27.10.03 14:31 
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:
ausblenden Delphi-Quelltext
1:
2:
fFlags := FOF_NOCONFIRMATION or FOF_NOERRORUI or
    FOF_ALLOWUNDO;

Was die Flags bewirken, kannst du im PSDK oder MSDN 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:
ausblenden 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_ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: Mo 27.10.03 15:24 
Thx

Ich probiere gleich mal!
Jan_ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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?
ausblenden Quelltext
1:
+'0'					

oder
ausblenden Quelltext
1:
+nil					

?????
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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?

ausblenden Delphi-Quelltext
1:
pFrom     := Pchar(cmd + #0#0);					

bspw.
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 28.10.03 14:31 
Es reicht im Prinzip schon
ausblenden Delphi-Quelltext
1:
pFrom     := Pchar(cmd + #0);					

da Delphi ja intern sowieso immer ein Nullzeichen mitführt...!

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
Jan_ Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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