Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SHFileOperations nur eine Datei verschieben

Empfohlene Antworten

Veröffentlicht

Hallo habe folgendes Problem mit SHFileOptions:

Ich übergebe mehrere Dateien an mein Programm, die der Reihe nach abgearbeitet werden sollen. Nach der Bearbeitung sollen diese dann zwecks Archivierung abgelegt werden. Das ganze sieht so aus:

int main(int argc, const char* argv[])

{

for (f = 1; f < argc; f++)

{

// Unterscheidung der Feldtests anhand der Dateierweiterung

const char* find = strrchr(argv[f], '.'); //letztes "." finden

strncpy(endung,find+1, 3); //alles ab "." kopieren und endung zuweisen

if ( strcmp ( endung , "MVD" ) == 0 ) //MVV Datenfile

feldtest = 1;

else if (.......)

feldtest = 2;

.......

//Aufruf der unterprozeduren für die Bearbeitung und Umwandlung der einzelnen Messfiles

switch (feldtest)

{

case 1 : cout << "\nMVV Datendatei\n";

if (mvv_dfile(argv[f]) == true) //Aufruf der Funktion bool mvv_dfile (Überprüfung auf Vorhandensein der Datei)

{

mvv_dat (argv[f]); //Aufruf der Unterfunktion mvv_dat (eigentliche Datenumwandlung)

}; //if

mkdir(rohdaten); // Erstellen des Ordners 'Rohdaten'

chdir(rohdaten); // Wechsel in den Ordner Rohdaten

getcwd(verzeichnis,sizeof(verzeichnis)); // ermitteln des aktuellen Verzeichnisses

//Aus C++ Referenz Kopieren der Rohdatendatei in den entsprechenden

//Ordner (SPF\Jahr\KW_WW\Meldung\Rohdaten) und anschließendes Löschen aus Tempverzeichniß)

memset(&fos, 0, sizeof(fos)); // SHFILEOPSTRUCT mit nullen füllen

fos.wFunc = FO_MOVE; // Kopieroperation auswählen

fos.pFrom = argv[f]; // Ausgangsparameter (Welche Datei soll kopiert werden?)

fos.pTo = verzeichnis; // Zielparameter (Wohin soll die Datei kopiert werden?)

fos.fFlags = FOF_ALLOWUNDO; // Flags für Rückgängigmachen

SHFileOperation(&fos); // Operation ausführen

cout << "\nDie Datei " << argv[f] << " wurde in das Verzeichnis " << verzeichnis << " verschoben.";

break;

case 2 : .......

break;

default : cout << "\nEs handelt sich nicht um ein Messfile!\n"; break;

} // switch

} // for

cout << "\nAlle uebergebenen Messfiles wurden verarbeitet.\a";

cout << "\nBeendigung mit Tastendruck.";

getch();

} // end main

Das Problem Dabei ist, daß nicht nur die Datei argv[f] verschoben wird, sondern alle Dateien, die sich im selben Ordner befinden.

  • Autor
pFrom und pTo brauchen eine doppelte Nullterminierung.

Also über eine Temporäre Übergabe?

CString tempfrom = argv[f];

path.Format("%s%c", tempfrom, 0);

CString tempto = verzeichnis;

path.Format("%s%c", tempto, 0);

und dann weiter:

memset(&fos, 0, sizeof(fos));

fos.wFunc = FO_MOVE;

fos.pFrom = tempf;

fos.pTo = tempto;

fos.fFlags = FOF_ALLOWUNDO | FOF_FILESONLY;

SHFileOperation(&fos);

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.