Autor | Nachricht | |
---|---|---|
Junior Name: Voller Name als Anagramm: Fitje Weshoms Geschlecht: ![]() Fahrzeug: Yamaha YZF R6 Thundercat Anmeldedatum: 15.07.2012 Beiträge: 92 Wohnort: Amberg, Oberpfalz | zitieren Hallo Leute, heute brauche ich eure Hilfe und komme einfach nicht weiter. Ich bin dabei meine Programme von 16-Bit nach 32 Bit zu portieren. Eines meiner Programme, DATCNG kann die Creationtime Accesstime und die Modificationtime direkt manipulieren, Auch die Dateiattribute wie Versteckt, System, Archiv, Schreibgeschützt. Ohne grosse Arbeit. Per Mausklick. Läuft auf meinem XP Sp3 Problemlos. Nur die Portierung ins 32Bit, und damit ins 64 Bit Zeitalter klappt nicht. Hier mal mein Problem wegen SystemTimeToTzSpecificLocalTime. Mein Compiler MSVC 2.0 besitzt noch nicht die Funktion TzSpecificLocalTimeToSystemTime. Gibt es irgendwo einen Source-Code, wo man sich diese Funktion selber basteln kann? Hier ein Versuchscode für eine Konsolenanwendung. Den Orginalcode gibts im Netz irgendwo und wurde von mir leicht modifiziert: //Dateizeiten.cpp verdeutlicht die Dateizeit-Funktionen in 32 Bit. #include <windows.h> #include <stdio.h> #include <conio.h> // wegen getch() // 0ter Monat ist Januar extern int monlen[14] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; //Für spätere Anwendungsimplementierungen gedacht int Schaltjahr(int jhr) { /* * Wenn Jahreszahl ohne Rest durch Vier teilbar ist, * ist die Jahreszahl ein Schaltjahr. * Ausnahme1: * Wenn die Jahreszahl ausserdem durch 100 teilbar ist, dann * liegt kein Schaltjahr vor(sp=0). * Ausnahme von der Ausnahme1: * Wenn die Jahreszahl durch 400 teilbar ist, liegt doch * ein Schaltjahr vor(sp=1). * Beispiel: Das Jahr 1900 ist zwar durch 100, aber nicht durch * 400 teilbar, also kein Schaltjahr) */ int dsp, s1, s2, s3; dsp = 0; s1 = jhr % 4; s2 = jhr % 400; s3 = jhr % 100; if ((s1 == 0) || (s2 == 0)) { dsp = 1; monlen[1] = 29; } if ((s2 != 0) && (s3 == 0)) { dsp = 0; monlen[1] = 28; } return (dsp); } void Zeige_ZeitzonenInformationen(struct _TIME_ZONE_INFORMATION *Zeitinfo) { printf("\nBias: %d", Zeitinfo->Bias); //Unterschied zu UTC in Minuten printf("\nStandardName %s", Zeitinfo->StandardName); //Name der Sommerzeit-Zeitzone //StandardDate: Beginn der Winterzeit printf("\nStandardDate %d.%d.%d", Zeitinfo->StandardDate.wMonth, Zeitinfo->StandardDate.wDayOfWeek, Zeitinfo->StandardDate.wDay); printf("\nStandardBias %ld", Zeitinfo->StandardBias); //Zusätzliche Zeitverschiebung der Standardzeit printf("\nDaylightName %s", Zeitinfo->DaylightName); //Name der Sommerzeit-Zeitzone //DaylightDate: Beginn der Sommerzeit printf("\nDaylightDate %d.%d.%d", Zeitinfo->DaylightDate.wMonth, Zeitinfo->DaylightDate.wDayOfWeek, Zeitinfo->StandardDate.wDay); printf("\nDaylightBias %ld", Zeitinfo->DaylightBias); //Unterschied Zu UTC in Minuten bei Sommerzeit //Für die Parameter StandardDate und und DaylightDate: //wMonth liefert ungleich Null wenn die Zeitzine die Sommerzeit unterscheidet. //wMonth bei3=März //wDay ein Wert zwischen1 und 5 der die Woche im Monat definiert, wo die Zeit umgestellt wird //wDayOfWeek die Angabe des betroffenen Wochentages, beginnend bei 0(Null) für einen Sonntag } unsigned long Attributfrage(char fname1[]) { DWORD Attribute, arc, rwp, sysi, vers; unsigned long erfolg = 0; char frage, arf; erfolg = Attribute = GetFileAttributes(fname1); if(erfolg == 0xFFFFFFFF) { printf("Fehler beim ermitteln der Dateittribute: %d\n", GetLastError()); goto finito; } arc = Attribute & FILE_ATTRIBUTE_ARCHIVE; rwp = Attribute & FILE_ATTRIBUTE_READONLY; sysi = Attribute & FILE_ATTRIBUTE_SYSTEM; vers = Attribute & FILE_ATTRIBUTE_HIDDEN; printf("\nArchiv: %d", arc); // Wenn gesetzt dann 32 dezimal printf("\nSchreibgeschuetzt: %d", rwp); // Wenn gesetzt dann 1 dezimal printf("\nSystem: %d", sysi); // Wenn gesetzt dann 4 dezimal printf("\nVersteckt: %d", vers); // Wenn gesetzt damm 2 dezimal printf("\nAttribute neu setzen(j/n) : "); frage = getch(); printf("\nAntwort: %c", frage); if (frage == 'j') { printf("\nArchiv(j/n) :"); arc = 0; arf = getch(); if(arf == 'j') arc = 32; printf("\nSchreibgeschuetzt(j/n) :"); rwp = 0; arf = getch(); if(arf == 'j') rwp = 1; printf("\nSystem(j/n) :"); sysi = 0; arf = getch(); if(arf == 'j') sysi = 4; printf("\nVersteckt(j/n) :"); vers = 0; arf = getch(); if(arf == 'j') vers = 2; printf("\nNeue Dateiattribute nun setzen(j/n): "); arf = getch(); if (arf == 'n') goto finito; Attribute = 0; Attribute = arc | rwp | sysi | vers; erfolg = SetFileAttributes(fname1, Attribute); if(erfolg == 0xFFFFFFFF) printf("Fehler beim setzen der Dateittribute: %d\n", GetLastError()); else { arc = Attribute & FILE_ATTRIBUTE_ARCHIVE; rwp = Attribute & FILE_ATTRIBUTE_READONLY; sysi = Attribute & FILE_ATTRIBUTE_SYSTEM; vers = Attribute & FILE_ATTRIBUTE_HIDDEN; erfolg = Attribute = GetFileAttributes(fname1); if(erfolg == 0xFFFFFFFF) { printf("Fehler beim ermitteln der Dateittribute: %d\n", GetLastError()); goto finito; } printf("\nNeue Attribute:\nArchiv: %d", arc); // Wenn gesetzt dann 32 dezimal printf("\nSchreibgeschuetzt: %d", rwp); // Wenn gesetzt dann 1 dezimal printf("\nSystem: %d", sysi); // Wenn gesetzt dann 4 dezimal printf("\nVersteckt: %d", vers); // Wenn gesetzt damm 2 dezimal } } finito: return(erfolg); } //Ende der Funktion int main(void) { // a file handle HANDLE hFile1; FILETIME ftCreate, ftAccess, ftWrite; SYSTEMTIME stUTC, stLocal, stUTC1, stLocal1, stUTC2, stLocal2; TIME_ZONE_INFORMATION Zeitinfo; // a filename, change accordingly char fname1[200]; printf("\nErmittlung der Dateizeiten"); printf("\nDateiname: "); scanf("%s", fname1); // temporary storage for file sizes DWORD dwFileSize; DWORD dwFileType; // Öffnet eine existierende Datei hFile1 = CreateFile(fname1, // zu öffnende Datei GENERIC_READ, // Zugriffsmodus: open for reading FILE_SHARE_READ, // share-mode: share for reading NULL, // adress of security descriptor: default security OPEN_EXISTING, // how to create: existing file only FILE_ATTRIBUTE_NORMAL, // file attributes: normal file NULL); // handle of file with attributes to copy: no attribute template if(hFile1 == INVALID_HANDLE_VALUE) { printf("Fehler bei oeffnen der Datei %s, Fehlernummer: %d\n", fname1, GetLastError()); return 4; } dwFileType = GetFileType(hFile1); dwFileSize = GetFileSize(hFile1, NULL); printf("\n%s\nDateigroesse: %d Bytes\nDateityp: %d\n", fname1, dwFileSize, dwFileType); // retrieve the file times for the file. if(!GetFileTime(hFile1, &ftCreate, &ftAccess, &ftWrite)) { printf("Fehler bei Abfrage der Dateizeiten. Fehlernummer %d\n", GetLastError()); return FALSE; } // convert the created time to local time. FileTimeToSystemTime(&ftCreate, &stUTC); SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal); // convert the last-access time to local time. FileTimeToSystemTime(&ftAccess, &stUTC1); SystemTimeToTzSpecificLocalTime(NULL, &stUTC1, &stLocal1); // convert the last-write time to local time. // Parameter 1 ist die Filetime, Parameter 2 die Systemtime FileTimeToSystemTime(&ftWrite, &stUTC2); SystemTimeToTzSpecificLocalTime(NULL, &stUTC2, &stLocal2); // build a string showing the date and time. printf("Erstellt am: %02d/%02d/%d %02d:%02d\n", stLocal.wDay, stLocal.wMonth, stLocal.wYear, stLocal.wHour, stLocal.wMinute); printf("Letzter Zugriff: %02d/%02d/%d %02d:%02d\n", stLocal1.wDay, stLocal1.wMonth, stLocal1.wYear, stLocal1.wHour, stLocal1.wMinute); printf("Letzte Aenderung: %02d/%02d/%d %02d:%02d\n", stLocal2.wDay, stLocal2.wMonth, stLocal2.wYear, stLocal2.wHour, stLocal2.wMinute); GetTimeZoneInformation(&Zeitinfo); Zeige_ZeitzonenInformationen(&Zeitinfo); printf("\nSystem-Time-Ergebnisse der Writetime: "); printf("\nJahr : %d.%02d.%02d %02d:%02d:%02d:%d\n", stUTC2.wYear, stUTC2.wMonth, stUTC2.wDay, stUTC2.wHour, stUTC2.wMinute, stUTC2.wSecond, stUTC2.wMilliseconds ); //TzSpecificTimeToSystemTime //GetTimeFormat( LOCALE_USER_DEFAULT, 0, &st, NULL, szLocalTime, 255 ); //printf( "%s %s\n", szLocalDate, szLocalTime ); // Schliesst die Dateien und Programmende, close the file's handle and itself CloseHandle(hFile1); Attributfrage(fname1); getch(); return 0; } // Ende des Versuchs-Source-Codes für ein Konsolenprogramm. Das Programm DATCNG.EXE funktioniert auf meinen XP-SP3-Rechner mit 32 Bit problemlos. Trotzdem: Nur mit Kopien arbeiten, zur Sicherheit. Es gilt: No Warranty. Wer hat übrigens Erfahrung damit, ob 16-Bit Programme überhaupt noch auf 64 Bit laufen? Vielleicht kann ich mir die ganze Schufterei ja sparen, man ist ja auch a bisserl faul. Den Quelltext stelle ich als GNU-Freeware zum "basteln" zur Verfügung und ist in unterer ZIP-Datei mit vorhanden, wie die fertige EXE-Datei. Viel Spass wünscht Guiseppe
| |
▲ | pn | |
Gast | zitieren Mach mit!Wenn Dir die Beiträge zum Thread "Ersatz für _dos_getfileattr Umstieg auf 32 Bit" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:Registrierte Mitglieder genießen die folgenden Vorteile: ✔ kostenlose Mitgliedschaft ✔ keine Werbung ✔ direkter Austausch mit Gleichgesinnten ✔ neue Fragen stellen oder Diskussionen starten ✔ schnelle Hilfe bei Problemen ✔ Bilder und Videos hochladen ✔ und vieles mehr... | |
▲ | ||
Ähnliche Beiträge | Re: √ | Letzter Beitrag | |
---|---|---|---|
Umstieg von GD1 auf FN1 :-) Hallo Leute!
Habe mir gedacht ich stell mal ein paar bilder rein und danke nochmal an alle, die mich daran gehindert haben so einen hässlichen vw scirocco zu kaufen, hätte es ewig bereut ... von littlegreenjazz | 2 332 | 14.10.2009, 10:33 littlegreenjazz | |
DB-Umstieg Hi
gibt es Erfahrungswerte mit einem DB-Umstieg?
von PostgreSQL zu My_SQL??
Mich würde interessieren, wie aufwendig ein Umstieg sein... von Hennesder8e | 0 96 | 16.09.2011, 08:10 Hennesder8e | |
Umstieg FN2 auf Civic Sport 1.4 (Bj. 08/05) Hallo Zusammen.
Mich plagt schon seit Tagen die tiefe Traurigkeit,
weil ich einfach nicht weiß was ich machen soll.
Ich fahre, wie oben zu erlesen, den FN2 (Bj 08 / 45000KM). Bin absolut zufrieden und
froh zu Honda gefunden zu haben!
Beginne... von Hayate01 | 15 906 | 19.09.2011, 19:24 Shadowrunner | |
Umstieg von 60er auf 55er Reifenquerschnitt Moin, ich brauch mal ein paar Meinungen. Bin am überlegen von 185/60/15 auf 185/55/15 umzusteigen. Meint ihr, dass man den Unterschied sieht oder eher nicht? Wir reden hier von einer Differenz von lediglich 0,9cm in der Flankenhöhe.... von Gerred | 8 2.399 | 15.06.2020, 19:46 Gerred | |
Umstieg auf Multimedia-Radio, aber welches? Guten Tag liebe Forengemeinde,
ich habe vor auf ein neues Multimedia-Autoradio umzusteigen.
Bisher hatte ich Sony, Kennwood sowie seit nun einigen Jahren das Alpine CDE-178BT in Gebrauch. Vom Alpine bin ich sehr überzeugt, ich war damals verwundert was... von DarkSlide | 4 525 | 14.05.2020, 13:42 DarkSlide | |
Umstieg von Alpine CDE-178BT auf Pioneer SPH-DA120 - schlechtere Tonqualität? Hallo, dies ist mein erster Beitrag hier.
Also zuerst mal zu meinem Auto/ zur restlichen Musikanlage:
Bei meinem Auto handelt es sich um eine 96' Toyota Celica T20. Meine derzeitige Musikanlage:
Headunit: Pioneer SPH-DA120
Treiber: Front: Eton POW... von astonmarkus | 3 246 | 29.12.2019, 10:57 Ralf | |
Umstieg von MediaWiki Version alt auf Version 1.16 (inkl. Um Hallo Leute,
ich habe derzeit folgende Server in Betrieb:
Wiki001 - Version - 1.14.0 - php 5.2.6 und MySQL 5.0.45 mit 3 versch. Wiki's
Wiki002 - Version - 1.11.0 - php 5.2.6 und MySQL 5.0.45 mit 2 versch. Wiki's
alte Mediawiki auf Win2003 - Version... von FamLederer | 2 426 | 31.01.2011, 13:54 BL_Forum | |
ESD-Ersatz für EP2 Hallo zusammen,
meinem geliebten EP2 hat es den ESD hinter dem Flansch praktisch abgerostet.
Ich brauche also einen neuen ESD mit Zuluftrohr, den ich einfach an den Flansch zum MSD anschrauben kann.
Ich habe ein Werkstattangebot über 450 EUR für einen... von Thulem | 5 640 | 28.08.2017, 11:36 Mario_EP2 | |
Kat Ersatz hab ne frage stimmt das wenn man einen Kat Ersatz dran macht das man leistungs verlust hat weil ich möcht mir bei meinen Honda Civic ED7 einen Kat Ersatz dran machen und habe einen Mohr 130 dran und ein freund sagt wenn ich den Kat Ersatz drauf gebe hab... von BlackHondaDevil | 2 605 | 09.03.2006, 17:13 BlackHondaDevil | |
Kat ersatz ??? wollte mal anfragen ob irgend einer von euch den kat bei seinem luden draussen ? oder kat ersatz ??? irgend welche erfahrungen... von LuderDriver | 5 822 | 03.01.2007, 20:19 Vtec-Power |