000
08.11.2007, 09:38 Uhr
Poe
|
Hallo, ich möchte Dateien aus einem Verzeichnis auslesen und konvertieren. Ich hab einen Codeabschnitt der die Dateien Konvertieren soll bekommen und suche die Dateien mit einer FindFirsFile-Funktion aus dem Verzeichnis. Allerdings schaffe ich es nicht die Funktionen zu verknüpfen.
C++: |
#include <windows.h> #include <cstdio> #include <io.h> #include <iostream> #include <fstream> #include <cstdlib> #include <cstring> #include <ctime> #include <tchar.h> #include <shlobj.h>
using namespace std;
void charOutput (ifstream& stream); void copyChar4Char (ifstream& stream, ofstream& stream);
#pragma pack(push,2)
typedef float FLOAT; typedef unsigned char UCHAR; typedef char CHAR; typedef short int SHORT; typedef time_t DATE_TIME;
typedef union _proz_wert_union { /* Union für den Prozeßwert */ FLOAT Wert; /* für Analogeingänge einen Float */ UCHAR Zustand; /* für Digitaleingänge einen UCHAR */ } PROZ_WERT_UNION; /* 4 Byte entsprechend dem größen Member */
typedef struct _dea_archiv_typ { /* Bytes Bedeutung */ DATE_TIME Startzeit; /* 4 Startzeit des Intervalls */ SHORT Millisec; /* 2 Millisec. bei Echtzeitverarb. sonst. -1 */ PROZ_WERT_UNION Wert; /* 4 union für den Prozeßwert */ UCHAR Kennung; /* 1 Kennung des archivierten Wertes */ CHAR Grund; /* 1 Archivierungsgrund */ } DEA_ARCHIV_TYP; /* 12 Byte pro Archiveintrag */ #pragma pack(pop)
int main ()
{
HANDLE fHandle; WIN32_FIND_DATA wfd;
fHandle=FindFirstFile("C:\\Osnabrueck\\DEA\\2007\\09\\*",&wfd);
do { // Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)
if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) )) { if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { MessageBox(0,wfd.cFileName,"Folgendes Verzeichnis wurde gefunden:",0); // Datei ist keine, sondern ein Verzeichnis... } else { cout << wfd.cFileName << endl; //Namen der Dateien ausgeben ifstream f1(wfd.cFileName); //charOutput( f1 ); } } } while (FindNextFile(fHandle,&wfd)); FindClose(fHandle);
cin.get(); }
int Konvert(int argc, _TCHAR* argv[]) {
_TCHAR filename[FILENAME_MAX + 1];
if (argc != 2) { printf("Unzulaessige Parameterzahl!\n"); printf("Aufruf:\n"); printf("DEAConverter <Dateiname>\n"); return 0; }
_tcsncpy(filename, argv[1], FILENAME_MAX); FILE *f = _tfopen(filename, _T("rb")); if (f) { DEA_ARCHIV_TYP DEARecord; while(!feof(f)) { fread(&DEARecord, sizeof(DEARecord), 1, f); struct tm stm = *localtime(&DEARecord.Startzeit); printf("%02d.%02d.%04d %02d:%02d.%02d,%03d : ", stm.tm_mday , stm.tm_mon , stm.tm_year , stm.tm_hour , stm.tm_min , stm.tm_sec , DEARecord.Millisec > 0 ? DEARecord.Millisec : 0);
printf("DEARecord: Zustand = %d, Kennung = %d, Grund = %c\n", DEARecord.Wert.Zustand , DEARecord.Kennung , DEARecord.Grund);
}
fclose(f); } cin.get(); return 0;
}
|
Ich bin für jede Hilfe dankbar!! Bin am verzweifeln, bitte helft mir!! |