D
Also für die bisherige Hilfe vielen Dank!
Aber ich habe nun noch ein Problem ich habe zwar nun den gesamten Code umgebaut usw. Doch nun habe ich das Problem das in dem Code wohl irgendwo noch ein Fehler ist denn er vergleicht mir die Falschen Daten von den Dateien. Und ich weiss nicht wo er sich dieses Falsche Datum her holt. Hier mal der Code vielleicht kann mir ja einer sagen wo mein denkfehler liegt:
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
#include <windows.h>
#include <conio.h>
//using namespace std;
BOOL GetLastWriteTime(HANDLE hFile, SYSTEMTIME *stLocal);
BOOL vergleichen(SYSTEMTIME datei1, SYSTEMTIME datei2);
// Rueckgabe wnen alles funktioniert hat = 0
// Rueckgabe bei Fehler einer der beiden Dateien = 2
int main (int argc, char *argv[]) {
char *inhalt;
int Irueckgabe;
SYSTEMTIME datei1, datei2;
if (argc == 3) {
while (1) {
Sleep(60000);
ifstream file1(/*argv[1]*/"I:\\Ablage\\StandEisbunkerZS1.jpg",ios::binary);
ofstream file2(/*argv[2]*/"I:\\Ablage\\test.jpg",ios::binary);
Irueckgabe = GetLastWriteTime(file1, &datei1);
Irueckgabe = GetLastWriteTime(file2, &datei2);
if(vergleichen(datei1, datei2)/*Prüfen ob das Bild sich erneuert hat von der Quelle und dadruch neuer als das Alte ist*/) {
//Ermittlung der Dateigröße
file1.seekg(0,ios::end);
static long filesize=file1.tellg();
file1.seekg(0,ios::beg);
//Anlegen eines Puffers
inhalt=new char[filesize];
//Einlesen der Datei
file1.read(inhalt,filesize);
file1.close();
//Kopie erstellen
file2.write(inhalt,filesize);
file2.close();
}
}
}
return 0;
}
BOOL vergleichen(SYSTEMTIME datei1, SYSTEMTIME datei2) {
// Vergleichen von den Daten wenn datei1 <= datei 2 gib True aus sonst False
// Jahr vergleichen
if(datei1.wYear > datei2.wYear) {
return true;
}
if(datei1.wMonth > datei2.wMonth) {
return true;
}
if(datei1.wDay > datei2.wDay) {
return true;
}
if(datei1.wHour > datei2.wHour) {
return true;
}
if(datei1.wMinute > datei2.wMinute) {
return true;
}
return false;
}
BOOL GetLastWriteTime(HANDLE hFile, SYSTEMTIME *stLocal)
{
FILETIME ftCreate, ftAccess, ftWrite;
SYSTEMTIME stUTC;
// Gibt die Zeit von der Datei zurück
if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
return FALSE;
// Konvertiert die zuletzt geschriebene Zeit in eine Local Zeit
FileTimeToSystemTime(&ftWrite, &stUTC);
SystemTimeToTzSpecificLocalTime(NULL, &stUTC, stLocal);
return TRUE;
}
Also ich vermute ihn irgendwo in der GetLastWriteTime das der Fehler dort drin steckt da er einen Filepointer bekommt der Funkioniert aber sie mir dann das Falsche Datum des Files zurück gibt.
Mfg Manny
[EDIT]
Da fällt mir gerade auf das der Funktion ein HANDLE übergeben wird. Ist das gleich einem File oder was ist ein HANDLE? In der Hilfe steht das ein HANDLE ein Objekt ist. Und bekanntlicherweise ist ein Objekt = eines Files, oder? Naja falls jemand den fehler hat bitte sagt ihn mir.