Packungsformat für Zeit in C < Softwaretechnik+Pro < Praktische Inform. < Hochschule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 20:39 So 16.10.2011 | Autor: | steftn |
Aufgabe | Folgendes Programm liegt vor:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
int fn2time(char pathname[], unsigned short *date, unsigned short *time)
{ HANDLE stream;
OFSTRUCT OpenBuf;
FILETIME cre={0,0}, acc={0,0}, wri={0,0};
int success;
if ((stream = (HANDLE)OpenFile(pathname, &OpenBuf, OF_READ)) == (HANDLE)HFILE_ERROR)
{ fprintf(stderr, "Ich kann die Datei leider nicht [mm] oeffnen.\n");
[/mm]
exit(-1);
}
success = GetFileTime(stream, &cre, &acc, &wri);
if(success != TRUE) {
printf("GetFileTime [mm] fehlgeschlagen\n");
[/mm]
exit(-1);
}
FileTimeToDosDateTime(&cre, date, time);
return 0;
}
int main()
{
unsigned short dat, time;//(0x254f & 0xfe1f) | 0x0180;
char buffer[128];
printf("Geben Sie den Pfad/Namen der datei [mm] an\n");
[/mm]
scanf("%s", buffer);
fn2time(buffer, &dat, &time);
[mm] printf("\n Zeit:\n");
[/mm]
printf("%d:", (time >> 11));
printf("%d:", ((time >> 5) & 0x003F));
printf("%d", ((time & 0x001F) * 2));
[mm] printf("\n");
[/mm]
system("PAUSE");
return 0;
} |
Hallo,
ich habe ein Word Dokument im Laufwerk C gespeichert, so:
[mm] C:\test.docx
[/mm]
Beim Ausführen des Programms wird mir der Erstellungs-Zeitpunkt von test.docx angezeigt, aber die Zeit stimmt nicht!!!!
Die richtige Erstellzeit ist: 18:47
Das Programm spuckt aber: 16:47:16 aus.
Was ist daher am obigen Programm falsch?
Ich benütze WIN 7 und CodeBlocks.
mfg
|
|
|
|
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Hallo steftn,
> Folgendes Programm liegt vor:
>
> #include <stdio.h>
> #include <stdlib.h>
> #include <math.h>
> #include <windows.h>
>
>
> int fn2time(char pathname[], unsigned short *date, unsigned
> short *time)
> { HANDLE stream;
> OFSTRUCT OpenBuf;
> FILETIME cre={0,0}, acc={0,0}, wri={0,0};
> int success;
>
> if ((stream = (HANDLE)OpenFile(pathname, &OpenBuf,
> OF_READ)) == (HANDLE)HFILE_ERROR)
> { fprintf(stderr, "Ich kann die Datei leider nicht
> [mm]oeffnen.\n");[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
> exit(-1);
> }
> success = GetFileTime(stream, &cre, &acc, &wri);
> if(success != TRUE) {
> printf("GetFileTime [mm]fehlgeschlagen\n");[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
> exit(-1);
> }
> FileTimeToDosDateTime(&cre, date, time);
> return 0;
> }
>
> int main()
> {
> unsigned short dat, time;//(0x254f & 0xfe1f) | 0x0180;
> char buffer[128];
>
> printf("Geben Sie den Pfad/Namen der datei [mm]an\n");[/mm]
> scanf("%s", buffer);
>
> fn2time(buffer, &dat, &time);
>
>
> [mm]printf("\n Zeit:\n");[/mm]
> printf("%d:", (time >> 11));
> printf("%d:", ((time >> 5) & 0x003F));
> printf("%d", ((time & 0x001F) * 2));
> [mm]printf("\n");[/mm]Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
>
> system("PAUSE");
> return 0;
> }
> Hallo,
>
> ich habe ein Word Dokument im Laufwerk C gespeichert, so:
>
> [mm]C:\test.docx[/mm]
>
> Beim Ausführen des Programms wird mir der
> Erstellungs-Zeitpunkt von test.docx angezeigt, aber die
> Zeit stimmt nicht!!!!
>
> Die richtige Erstellzeit ist: 18:47
> Das Programm spuckt aber: 16:47:16 aus.
>
Das liegt dann wohl an einer falsch eingestellten Zeitzone im Programm.
> Was ist daher am obigen Programm falsch?
>
> Ich benütze WIN 7 und CodeBlocks.
>
> mfg
Gruss
MathePower
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:56 So 16.10.2011 | Autor: | steftn |
jo, super danke!
Ich hab die Zeitzone jetzt auf (UTC) Casablanca gestellt, jetzt gehts! mercy
|
|
|
|
|
Hallo!
Na, ich denke, das ist nicht ganz das, was du möchtest.
Es macht schon Sinn, den Zeitstempel von Dateien in UTC abzulegen. Aber es macht keinen Sinn, die Zeitzone deines Windows umzustellen, damit du gleiche Ergebnisse hast.
Normalerweise gibt es Funktionen, die dir einerseits die Zeit etwas komfortabler als mit deinen Schiebeaktionen bereitstellen, und die außerdem die Zeitzone deines Rechners berücksichtigen können.
|
|
|
|