Datei Attribute !
-
Wholesaler schrieb:
Jetzt wird datei_1 zwischenzeitlich geladen, angepackt ....
ich glaube dieser fall ist sehr sehr unwahrscheinlch. das dieser fall in einer riesigen schleife (oder rekursion) ausarten würde.
ich würde es so machen:
- alle dateien in eine liste laden (std::list, array oder irgendwiesowas)
- sortieren nach datum
- letzter eintrag ist das file das gelöscht werden soll
-
Hi ja genau das tue ich ja!
Ich lade alle Dateien in ein array und habe mir ein Sortiertemplat gebastelt!
Das Problem ist nur wie änder ich die Zeit!
DCString strSuch = m_strZielPfad+ "\" + strFilename + "." + m_strPCDateiErweiterung;
hSearch = ::FindFirstFile(strSuch , &fileData );
if (hSearch != INVALID_HANDLE_VALUE)
{
GetSystemTime(&st); // Aktuelle Zeit holen
SystemTimeToFileTime(&st, &ft);
// Konvertieren von Systemzeit nach FilezeitbOK = SetFileTime(hSearch,&ft,&ft ,&ft);
bOK = GetFileTime(hSearch, &ftCreate, &ftAccess, &ftWrite);
FileTimeToSystemTime(&ftCreate, &stlocalcr);
FileTimeToSystemTime(&ftAccess, &stlocalac);
FileTimeToSystemTime(&ftWrite, &stlocalwr);
}::FindClose(hSearch);
so geht es jedenfalls nicht!
/////////////////////////////////////////////
Hast du viellicht ein komplettes Beispiel!
Wie ich das Handle richtig aufbaue?Das Handle um FILETIME ftCreate, ftAccess, ftWrite;
(Create;Access und write Time zu ändern!!!)
/////////////////////////////////////
-
wie unzi schon gesagt hat, du brauchst einen filehandle. mit dem searchhandle geht das nicht.
if (hSearch != INVALID_HANDLE_VALUE) { GetSystemTime(&st); // Aktuelle Zeit holen SystemTimeToFileTime(&st, &ft); // Konvertieren von Systemzeit nach Filezeit // datei öffnen wie unzi vorgeschlagen hat // hFile = CreateFile(... bOK = SetFileTime(hFile,&ft,&ft ,&ft); CloseHandle(hFile); // und weiter gehts
-
Also zuerst suchen dann neues Öffnen Handle Time ändern und schliessen!
Ich versuch das einfach mal!
Danke!
-
Aus deien Beschreibungen geht irgendwie nicht hervor, warum du die Zugriffszeit jetzt überhaupt ändern willst

BTW: Die "File-Zeiten" sind eigentlich keine Attribute
-
flenders schrieb:
Aus deien Beschreibungen geht irgendwie nicht hervor, warum du die Zugriffszeit jetzt überhaupt ändern willst
er wird schon seine gründe haben

-
so habe es mal so versucht!
Ging in die Hose!if (hSearch != INVALID_HANDLE_VALUE)
{
GetSystemTime(&st); // Aktuelle Zeit holen
SystemTimeToFileTime(&st, &ft); FilezeitHANDLE hFile;
DCString strFilekpl = m_strZielPfad + fileData.cFileName;
hFile=CreateFile(strFilekpl,GENERIC_WRITE,0,NULL,OPEN_EXISTING,NULL,NULL);bOK = SetFileTime(hFile,&ft,&ft ,&ft);
bOK = GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite);FileTimeToSystemTime(&ftCreate, &stlocalcr);
FileTimeToSystemTime(&ftAccess, &stlocalac);
FileTimeToSystemTime(&ftWrite, &stlocalwr);CloseHandle(hFile);
}::FindClose(hSearch);
return bOK;
bOK ist jedesmal FALSE! (SetFileTime(hFile,&ft,&ft ,&ft);)
Kannst du helfen?
-
1.) Was ist ein DCString?
2.) Was steht in strFilekpl - ist der Pfad richtig?
3.) Was liefert CreateFile zurück und was sagt ggf. GetLastError?
-
flenders schrieb:
1.) Was ist ein DCString?
2.) Was steht in strFilekpl - ist der Pfad richtig?
3.) Was liefert CreateFile zurück und was sagt ggf. GetLastError?zu 1 CSTring
zu 2 strFilekpl = Zielpfad(\Program Files\Test\) + Dateiname + jpg
zu 3 CreateFile liefert Handle hfile zurück! GetLastError muss ich debuggen!Woran könnte es liegen? Oder hast du eine Idee wie ich das besser machen kann?
Gruss
-
Wholesaler schrieb:
flenders schrieb:
1.) Was ist ein DCString?
2.) Was steht in strFilekpl - ist der Pfad richtig?
3.) Was liefert CreateFile zurück und was sagt ggf. GetLastError?zu 1 CSTring
zu 2 strFilekpl = Zielpfad(\Program Files\Test\) + Dateiname + jpg
zu 3 CreateFile liefert Handle hfile zurück! GetLastError muss ich debuggen!Woran könnte es liegen? Oder hast du eine Idee wie ich das besser machen kann?
Gruss
GetLastError liefert mir 2 zurück!!!
-
Wholesaler schrieb:
flenders schrieb:
1.) Was ist ein DCString?
2.) Was steht in strFilekpl - ist der Pfad richtig?
3.) Was liefert CreateFile zurück und was sagt ggf. GetLastError?zu 1 CSTring
zu 2 strFilekpl = Zielpfad(\Program Files\Test\) + Dateiname + jpg
zu 3 CreateFile liefert Handle hfile zurück! GetLastError muss ich debuggen!Woran könnte es liegen? Oder hast du eine Idee wie ich das besser machen kann?
Gruss
Es scheint an createFile zu liegen! Stimmt etwas mit den Parametern nicht?
-
Was _genau_ steht denn jetzt in strFilekpl drin - hast du dir das mal direkt ausgeben lassen?
Bzw. hast du mal ausprobiert, ob es klappt, wenn du den Pfad entsprechen direkt angibst?!
-
So habe den Fehler gefunden!
Beim zusammen bau des Pfades habe ich \\ ein backslash vergessen! ;-)))