filetime

Nebuchadnezar

Erfahrenes Mitglied
hi ich hab da ne frage ..wie kann ich aus einer datei auslesen wann sie erstellt wurde oder letzter zugriff und so war .
ich hab das mit
Code:
WIN32_FIND_DATA FData;
cout<<FData.ftLastWriteTime.dwHighDateTime;

probiert nur damit bekomm ich die utc ...
wenn ich es mit FileTimeToLocalFileTime probier ..bekomm ich komischerweise dasselbe heraus->nicht lesbar
könnt mir jemand bitte den sourcecode dafür reinschreiben wie ich die zeit lesbar auslesen kann ..
 
Code:
HANDLE hFile;
FILETIME ftCt, ftLat, ftLwt;
SYSTEMTIME stCt, stLat, stLwt;

hFile = CreateFile("C:\\ddgirls.txt", GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE,
   			NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
GetFileTime(hFile, &ftCt, &ftLat, &ftLwt);
FileTimeToSystemTime(&ftCt, &stCt);
FileTimeToSystemTime(&ftLat, &stLat);
FileTimeToSystemTime(&ftLwt, &stLwt);

printf("Creation : %lu-%lu-%lu\n", stCt.wDay, stCt.wMonth, stCt.wYear);
printf("Last Access : %lu-%lu-%lu\n", stLat.wDay, stLat.wMonth, stLat.wYear);
printf("Last Write : %lu-%lu-%lu\n", stLwt.wDay, stLwt.wMonth, stLwt.wYear);
 
danke ...jetzt passts ..
aber noch 2 fragen
1.) was ist %lu ..das hab ich noch nie verwendet
2.)was macht dann FileTimeToLocalFileTime?

danke

------------

ps:
täusch ich mich oder verwendet jeder diese Präfixes
(intvariablen beginnen mit i --zb: icount usw)
 
Zuletzt bearbeitet:
1. %lu ist eine Formatierung für Ausgaben mit printf, heisst glaube ich long unsigned oder so, ich hätte auch %d für decimal schreiben können.
2. konvertiert eine UTC , also greenwich mean time zur lokalen zeit
3. die prefixes sind einfach dazu da, damit du schneller den Typ einer Variable erkennst , wenn du sie irgendwo im Code siehst.
 
fragen über fragen ^^
ich müsste noch wissen wie ich über send variablen vom typ FILETIME
oder WIN32_FIND_DATA senden kann bzw diese typen in char oder int casten,umwandeln oder sonstiges kann ..weis nicht wie ich das send-konform mache...
 
gut hat sich erübrigt
is natürlich ne struktur ..die teile kann ich dann senden nur wie kann ich aus einer struktur alles mitsenden?
alles mühsam einzeln mit send schicken oder gibts irgendwas wie
sende struct.all oder sowas oder muss ich jeden einzelnen wert über send senden?..
 
na steck die struktur in nen socket...
WIN32_FIND_DATA sFileData;
send(hSock, &sFileData, sizeof(sFileData), 0);

und beim empfangen genauso...

WIN32_FIND_DATA sFileData;
recv(hSock, &sFileData, sizeof(sFileData), 0);

damik kannst du ganze strukturen übermitteln egal wie groß die sind, aber pass auf #pragma pack auf! die müssen bei der definition der struktur gleich sein sonst gibts probleme (is im winapi überall schon passend gemacht)...

außérdem darfst du wenn in der struktur ein pointer enthalten ist diesen auf dem rechner der das recv macht AUF GAR KEINEN FALL BENUTZEN das gibt sonst 0xC0000005 - Access Violation.

achso, pass auf das du die maximal zulässige größe für UDP Datagramme nich überschreitest wenn du die daten per UDP überträgst....
 
1.) (komisch hat gefehlt) was heisst ich packs ganz einfach in nen socket?
2.) was is #pragma pack
was muss ich da machen ...ich verwend pragma nicht
3.)ich machs per tcp
 
Zuletzt bearbeitet:
1)das #pragma pack benutzt man um die ausrichtung einer struktur festzulegen...

man schreibt
#pragma pack(push, n) wobei n eine ganze zahl der potenz von 2 ist.. (1, 2, 4, 8, 16) und beenden tut man es mit
#pragma pack(pop)

jedenfalls sind die strukturelemente auf den bytegrenzen zu 1, 2, 4, 8 oder 16 ausgerichtet, und dann sind womöglich abstände dazwischen... darum muss das auf beiden seiten gleich sein,

2)nun macht das das winapi in seinen header dateien selbst, brauchst dich also bei strukturen die windows benutzt nich grum zu kümmern...

das musst du nur beachten wenn du selbst strukturen schreibst die du übertragen willst... (standart is btw. 8)

3.) wenn dus per TCP machst solltest du trotzdem darauf achten die größe eines packets nicht zu überschreiten sonst kann es passieren das du probleme beim empfang bekommst (muss man dann eine schleife machen um das zu korrigieren) das packet ist im normalfall 512 byte groß, also genug spielrauf auch für größere strukturen...
 

Neue Beiträge

Zurück