» Ersatz für _dos_getfileattr Umstieg auf 32 Bit

Hilfe zu ZeigernNeuen Thread eröffnenNeue Antwort erstellenErledigt - Brauche bitte etwas Hilfe
AutorNachricht
Junior 
Name: Voller Name als Anagramm: Fitje Weshoms
Geschlecht:
Fahrzeug: Yamaha YZF R6 Thundercat
Anmeldedatum: 15.07.2012
Beiträge: 92
Wohnort: Amberg, Oberpfalz
19.10.2012, 17:27
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

datcng.ZIP


zip

 Download

Dateigröße: 67,17KB
Heruntergeladen: 60 mal


pn
Gast 
19.10.2012, 17:27
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...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
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
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |