| |
| In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.
Hinweis: Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden! | Fragen zu Tipps & Tricks und Workshops im vb@rchivTipp 207: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: gkwelz | Tipp anzeigenDatum: 17.04.08 12:05 |
| Hallo,
benutze die Funktion fCopy() mit dem Parameter TRUE für Ueberschreiben.
Leider wird dabei eine Kopie der zu kopierenden Datei (wenn vorhanden) angelegt, nicht jedoch überschrieben,
Was kann man tun?
Gruß
Gunter | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: gkwelz | Datum: 17.04.08 13:20 |
| Hallo Dieter,
bei FALSE kommt das Popup ob der File überschrieben werden soll. Das möchte ich jedoch nicht haben.
Gruß
Gunter | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: gkwelz | Datum: 17.04.08 15:12 |
| Hallo Dieter,
jetzt klappt es.
Vielen Dank.
Gruß
Gunter | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: wb_3001 | Datum: 28.10.08 00:13 |
| Hallo!
Die Struktur SHFILEOPSTRUCT hat sich geändert!
(Wahrscheinlich schon seit Win2K):
fAnyOperationsAborted as Long und nicht Boolean.
Das fällt dann höchst unangenehm auf, wenn lpszProgressTitle belegt wird.
Dann stürzt das Programm kommentarlos ab.
Unter http://support.microsoft.com/kb/151799/de wird beschrieben, wie der Aufruf zu erfolgen hat, wenn lpszProgressTitle belegt wird.
wb_3001 | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: minkey | Datum: 24.01.09 11:03 |
| Hallo,
habe ein Problem mit dem Aufruf und Parameterübergabe von fCopy
Habe schon Stunden herum experimitiert, finde aber leider keine Lösung.
ich möchte eien Ordner bzw, Dateien und Ordner zum kopieren übergeben.
Erhalte aber nur Fehlermeldungen.
Hier ein Beispielversuch:
Source = "G:\temp\test\"
Dest = "G:\test\"
result = fCopy(Source, Dest, True)
finde ich irgendwo ein Beispiel zur Parameterübergabe?
Freue mich über eine kleine Unterstützung
Minkey | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: minkey | Datum: 10.08.09 10:29 |
| Hallo,
wie übergebe ich eine Liste von Dateien an die Funktion fCopy
Soweit ich es verstanden habe muß ich die Datei-Liste erst über die Funktion:
FilesFromArray(liste() As String)
ertellen.
Als Erklärung steht im TIPP nur:
'Dateiname mit Wildcards (TEST.*,*.TMP,*.*)
'Ordner
'oder Liste (vorher aufrufen)
Leider kein Beispiel zur Parameterübergabe?
Meine Frage, gibt es ein kleines Beispiel zur Parameterübergabe der Dateiliste
Freue mich über jede kleine Unterstützung
Minkey | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: wb_3001 | Datum: 10.08.09 17:14 |
| Hallo Minkey!
Wenn Deine Frage noch aktuell ist:
1. fCopy muß wohl FileCopy heißen! So heißt es in VB-Classic, DotNet, VBA!
2. Mittels FileCopy kann nur eine Quelle und ein Ziel angegeben werden!
Unter der lokalen Hilfe von Visual Studio 2008 heißt es:
FileCopy-Funktion
Kopiert eine Datei
Das My.Computer.FileSystem-Objekt ermöglicht bei Datei-E/A-Vorgängen höhere Produktivität und Leistung als FileCopy. Weitere Informationen finden Sie unter My.Computer.FileSystem.CopyFile-Methode.
Public Sub FileCopy( _
ByVal Source As String, _
ByVal Destination As String _
)
Parameter:
Source
Erforderlich. String-Ausdruck, der den Namen der Datei angibt, die kopiert werden soll. Source kann das Verzeichnis bzw. den Ordner und das Laufwerk der Quelldatei enthalten.
Destination
Erforderlich. String-Ausdruck, der den Namen der Zieldatei angibt. Destination kann das Verzeichnis bzw. den Ordner und das Laufwerk der Zieldatei enthalten.
Wenn Du ein Array mit den Dateien hast, mußt Du die Tabellenzeilen einzeln an FileCopy übergeben. | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: minkey | Datum: 10.08.09 17:30 |
| Hallo wb_3001,
nein, FileCopy meinte ich nicht,
Sondern:
Den Tipp 207: Kopieren, Verschieben, Löschen wie im Explorer
im VB@Archiv.
In diesem Tip soll steht folgender Hinweis zur Übergabe eineer Datei-Liste:
' SOURCE: Dateiname
' Dateiname mit Wildcards (TEST.*,*.TMP,*.*)
' oder Liste (vorher aufrufen)
Leider gibt es aber kein Beispiel mit welchem Aufruf diese Liste an die Funktion fCopy (im benannten Tipp) übergen wird.
Der Hinweis "Liste vorher aufrufen" ist nicz weiter erläutert ????
Da probier ich schon eine ganze Zeit vergebens dran rum.
Habe die Frage schon einmal in diesem Forum gestellt, leider auch damals keine Hilfe.
Danke
Minkey
the Cat | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: wb_3001 | Datum: 10.08.09 18:59 |
| Hallo!
Jetzt mußt Du mir auf die Sprünge helfen, vielleicht gehts dann weiter:
Was ist das für eine Funktion fCopy. Welche Sprache?
VBA, VBNet, VBClassic kanns nicht sein. | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: wb_3001 | Datum: 12.08.09 17:03 |
| Hallo minkey!
Ich stand einfach auf dem Draht.
Mit fCopy ist die selbstgestrickte Funktion wie im Tip 207 beschrieben gemeint.
Da ich direkt in diese Diskussion eingestiegen bin, ist es mir irgendwie nicht mehr gelungen den ursprünglichen Tip 207 zu finden.
Sorry.
Aber ich schaue mir das an und sage Bescheid. | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: minkey | Datum: 12.08.09 17:24 |
| Hallo Hallo wb_3001,
danke!
Schön, dass Du es Dir mal ansehen willst.
Die Funktion ist eigentlich sehr gut.
Benutze fCopy schon lange um einzelne Dateien oder ganze Ordner zu kopieren.
Geht sehr schnell, viel schneller als CopyFile bzw. FileCopy
Jetzt wollte ich aber eine Liste von Dateien an die Funktion übergeben.
Das bekomme ich einfach nicht hin.
Minkey | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: wb_3001 | Datum: 13.08.09 01:38 |
| Hallo minkey!
Also es ist wie folgt:
Ich habe ein kleines Testprogramm geschrieben und die Kopierfunktion mittels zweier Tabelle getestet.
1. Die Tabellen der Source- und der Destination-Files müssen synchron sein, d.h. es müssen genau so viele Source-Files wie Destinationfiles vorhanden sein.
Wenn der Destinationfile anders lautet als der SourceFile wird der Sourcefile mit dem "neuen" Destinationnamen kopiert (also zusätzlich umbenannt).
2. Die Funktion
Public Function FilesFromArray(Liste() As String) As String
kannst Du nur für die Quellfiles verwenden, da die Existenz des je Tabellenzeile enthaltenen Files geprüft wird. Dieses Prüfen ist bei (zumeist ja noch) nicht existierenden Destination-Files oder Wildcards für Dest-Files natürlich nicht sinnvoll.
3. Es müssen in den Tabellenzeilen der Source- und Destination-Files die voll ausqualifizierten Filenamen angegeben sein. Ob UNC-Pfade (\\PC-Name\Freigabename\Verzeichnis\File) auch unterstützt werden, habe ich nicht getestet.
Die beste Lösung ist:
Jeweils einen String als Parameter für Source und Destination aus einer Tabelle synchron kreieren, in denen jeder File mit einem chr(0) und der gesamte String mit einem weiteren chr(0) abgeschlossen ist. Als Vorlage möge die Funktion FilesFromArray dienen.
Beim Testen habe ich die Schleife der Funktion FilesFromArray auf
For i = 0 To UBound(Liste)
'If FileExists(Liste(i)) Then
' Datei-Eintrag mit CHR(0) abschließen
temp = temp + Liste(i) + vbNullChar
'Else
'MsgBox (Liste(i) & "existiert hier nicht")
'End If
Next
reduziert!
So geht's:
Dim strTabSource() As String
Dim strTabDest() As String
.....die obigen Tabellen belegen und dann
strSource = FilesFromArray(strTabSource)
strDest = FilesFromArray(strTabDest)
lngResult = fCopy(strSource, strDest, False od. True)
Gutes Gelingen. | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: minkey | Datum: 13.08.09 08:33 |
| Hallo wb_3001,
da hast Du Dir ja sehr viel Mühe gegeben.
Muß ich mich wirklich sehr bei Dir bedanken!
Zum Teil hatte ich den Ablauf aber schon vorher kapiert.
Ich hatte nur ein Problem bei der Übergabe der Liste.
Übergebener String (Source)
C:\Temp\Datei01.dat C:\Temp\Datei02.dat ...........)
Für das Ziel hatte ich wie gefordert die selbe Anzahl von Dateien übergeben nur eben ein anderes Laufwerk.
String (Dest)
D:\Temp\Datei01.dat D:\Temp\Datei02.dat ...........)
Geht aber mit der Funktion fCopy einfach nicht???
Gebe ich als Ziel aber nur D:\Temp ein funktioniert es.
Damit habe ich dass Problem endlich gelöst.
Es ist aber in dem Beispiel irgendwie nicht richtig erklärt.
Nochmals Danke für Deine Unterstützung
Minkey | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: wb_3001 | Datum: 13.08.09 10:58 |
| Hallo minkey!
Also ich habe Deine Variante mit den voll ausqualifizierten Dateinamen
Übergebener String (Source)
C:\Temp\Datei01.dat C:\Temp\Datei02.dat ...........)
String (Dest)
D:\Temp\Datei01.dat D:\Temp\Datei02.dat ...........)
(zwar mit anderen Dateinamen aber ebenfalls nur unterschiedlicher Laufwerksangabe) probiert, bei mir funktioniert es!
Welche Fehlermeldung erhältst Du?
Bist Du ganz sicher, daß in String (Dest) gegenüber String Source wirklich nur das Laufwerk unterschiedlich ist?
Kannst Du den Code posten?
Wenn Du willst, kann ich Dir mein kleines Testprogramm zur Verfügung stellen! | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: minkey | Datum: 14.08.09 09:02 |
| Hallo,
Antwort kommt leider etwas Verspätet,war 2 Tage im KLinikum.
Bei mir kommt die Fehlermeldung:
Das Verzeichnis "C:\Temp\Datei1.dat" konnte nicht erstellt werden.
Obwohl es sich ja um eine Datei und kein Verzeichnis handelt.
Durch die Fehlermeldung kam ich auf die Idee, nur das Verzeichnis anzugeben.
Minkey | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: wb_3001 | Datum: 14.08.09 10:54 |
| Hallo minkey!
< Antwort kommt leider etwas Verspätet,war 2 Tage im KLinikum.
Hoffentlich nichts Ernstes!
Microsofts Fehlermeldung sind oftmals nicht treffend.
Aber:
Wenn das Dest-Verzeichnis existiert geht alles glatt.
Wenn das Dest-Verzeichnis nicht existiert öffnet sich ein Dialogfenster:
The H:\Temp Folder does not exist.
Do you want to ceate it? YES/No
Klicke ich auf Yes wird er angelegt und die Files werden anstandslos kopiert.
Irgendwas funktioniert mit Deinem Code anscheinend nicht.
Vielleicht sendest Du mir Deinen Code damit ich Dir weiterhelfen kann.
Oder willst nicht doch meine Variante der Nutzung von fCopy ausprobieren?
Übrigens: Fahre mit Windows XP Prof, SP3 engl. Sprachversion. | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: minkey | Datum: 14.08.09 12:57 |
| Hallo wb_3001,
eigentlich komme ich ja jetzt klar.
>>Du hast Dir ja schon genug Mühe gegeben.
Trotzdem anbei der Code.
Sind nur wenige Zeilen.
Ich kopiere quasi für eine Diashow alle Bilder und benötigten System-Dateien auf einenUSB-Stick.
Die DiaShow kann anschließend auf anderen PCs ohne Installation betrachtet werden.
Da aber nicht alle Dateien aus dem Programmverzeichnis benötigt werden, übergebe ich nur eine Liste der benötigten Dateien.
Private Sub CopyDaten()
Dim Source As String
Dim Dest As String
Quelle = "C:\Temp\Datei001.dat" & vbNullChar & "C:\Temp\Datei002.dat" & vbNullChar & "C:\Temp\Datei003.dat"
'funktioniert nicht
Dest = "D:\Temp\Datei001.dat" & vbNullChar & "D:\Temp\Datei002.dat" & vbNullChar & "D:\Temp\Datei003.dat"
'so funktioniert es
Dest = "C:\Temp"
fCopy Source, Dest, True
End Sub
'Die Funktion fCopy selbst und zugehörigen Routinen sind unverändert wie im Beispiel im VB-Archiv
Minkey | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: wb_3001 | Datum: 15.08.09 22:11 |
| Hallo minkey!
Soweit ich es sehen kann, fehlen am Ende der Strings Dest **u n d** Quelle jeweils 2x vbNullChar.
Egal ob Du nur eine Datei oder mehrere kopierst.
Als Beispiel:
Dest = "D:\Temp\Datei001.dat" & vbNullChar & "D:\Temp\Datei002.dat" & vbNullChar & "D:\Temp\Datei003.dat" & vbNullChar & vbNullChar
wb_3001 | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: minkey | Datum: 16.08.09 11:14 |
| Hallo wb_3001,
das war die Lösung!!!!!!!!
2x vbNullChar am Ende des Strings, dass wußte ich nicht
Jetzt funktioniert alles wie gewünscht!
Danke
Minkey | |
Re: Kopieren, Verschieben, Löschen wie im Explorer | | | Autor: wb_3001 | Datum: 16.08.09 15:53 |
| Hallo minkey!
Freut mich auch!
wb_3001 | |
| Sie sind nicht angemeldet! Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|