Zeitstempel von Ordnern ändern

Dieses Thema im Forum "Programmieren" wurde erstellt von gert12349, 27. September 2002.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. gert12349

    gert12349 Halbes Megabyte

    Registriert seit:
    21. Oktober 2001
    Beiträge:
    651
    Der Zugriff wurde verweigert\' und SetFileTime kommt nicht ohne ein gültiges Handle mit Schreibzugriff aus.

    Gruß Gert
     
  2. gert12349

    gert12349 Halbes Megabyte

    Registriert seit:
    21. Oktober 2001
    Beiträge:
    651
    Sorry - Kommando zurück.

    Ich sollte mein Gehirn einschalten bevor ich poste :-)
    Geht ja nicht. Dazu gibts ja CreateDirectory. Schade.
    [Diese Nachricht wurde von gert12349 am 03.10.2002 | 12:31 geändert.]
     
  3. gert12349

    gert12349 Halbes Megabyte

    Registriert seit:
    21. Oktober 2001
    Beiträge:
    651
    Hallo KazHar,

    das ist auch eine Möglichkeit und sehr wahrscheinlich die bessere, wenn man den 49,7 Tage-Überlauf berücksichtigt. Soll ja schon vorgekommen sein ;-) Ich hätte jetzt die Systemzeit ins FILETIME-Format gewandelt und damit gerechnet.

    Vielleicht funktioniert auch folgendes:

    Mit CreateFile einen neuen Ordner erzeugen, mit SetFileTime die gewünschten Zeiten setzen und anschließend den Inhalt verschieben. Wenn klappt, erspare ich mir den Wirbel um die Systemzeit. Mal sehen.

    Gruß Gert
     
  4. kazhar

    kazhar Viertel Gigabyte

    Registriert seit:
    21. Juni 2001
    Beiträge:
    4.420
    Hallo Gert!

    Das mit der Systemzeit lässt sich kompensieren! Dafür hat der gute Billy GetTickCount erfunden. Diese praktische Funktion zählt die Millisekunden seit dem letzten Systemstart mit und lässt sich von der System-Uhr nicht beinflussen.

    KazHar
     
  5. gert12349

    gert12349 Halbes Megabyte

    Registriert seit:
    21. Oktober 2001
    Beiträge:
    651
    Hey KazHar,

    gut, dass du mich daran erinnerst. Vor ein paar Tagen hatte ich die Idee auch schon. Sie erschien mir nicht sehr verlockend und hatte sie inzwischen wieder vergessen. Super! Das werde ich probieren und bin gespannt, inwiefern sich bei häufigem Gebrauch trotz Berücksichtigung der entstehenden Zeitdifferenz die Systemzeit verschiebt. Heute komme ich nicht mehr dazu.

    Nochmals vielen Dank!

    Gruß Gert
     
  6. kazhar

    kazhar Viertel Gigabyte

    Registriert seit:
    21. Juni 2001
    Beiträge:
    4.420
    Hallo Gert!

    Also das sich-durch-die-Fat-wurschteln ist nicht unbedingt meine Vorstellung von angenehmer Freizeitbeschäftigung....

    Eine andere Idee: Stelle die Systemzeit auf das gewünschte Datum/Uhrzeit, erstelle einen neuen Ordner, verschiebe den Inhalt des alten Ordners in den neuen, lösche den Alten, benenne den Neuen um und stelle die Systemzeit zurück. --- OK, alles andere als elegant aber immernoch besser als an der Fat zu drehen.

    Grüße KazHar
     
  7. gert12349

    gert12349 Halbes Megabyte

    Registriert seit:
    21. Oktober 2001
    Beiträge:
    651
    Guten Morgen KazHar,

    danke dir, ich fühle mich schon viel besser ;-)

    Ich habe mich mal durch die Quelltexte von TFileStream gewurstelt. Du wirst lachen, die sind beim C++Builder in astreinem Delphi Pascal geschrieben. Der Konstruktor von TFileStream verwendet die Funktion FileOpen und die wiederum CreateFile.

    Pech. Vielleicht bleibt nur die Möglichkeit, die Änderungen direkt im Dateisystem zu machen. Werde mich mal genauer mit FAT32 befassen müssen oder warten, bis ME/9x ausstirbt und sich das Problem von selbst erledigt :-) Vorerst werde ich mit den Einschränkungen leben müssen *heul*

    Einen schönen Feiertag
    Gert
     
  8. kazhar

    kazhar Viertel Gigabyte

    Registriert seit:
    21. Juni 2001
    Beiträge:
    4.420
    s die auch unter C(++), gibt ich schreibe eher in Pascal/Delphi). Diese Klasse enthält natürlich auch das Datei-Handle - allerdings als private; Da müsstest Du drann drehen und eine class MyFileStream weitervererben, die eine Methode beinhaltet, die das Handle zurückgibt. Dann heißt\'s nur noch hoffen, dass der Stream nicht dann doch auf die CreateFile-Methode zugreift...

    viel Erfolg KazHar
     
  9. gert12349

    gert12349 Halbes Megabyte

    Registriert seit:
    21. Oktober 2001
    Beiträge:
    651
    Hallo KazHar,

    danke für den Tipp. Ich kann keinen inhaltlichen Unterschied zwischen dem Delphi-Beispiel und meinem Programmcode feststellen. Das scheint eine vom Betriebsystem abhängige Macke zu sein.

    Dein Beispiel bezieht sich auf NT und ich programmiere für ME/98. Laut WinAPI-Hilfe sind die Funktionen CreateFile und SetFileTime für Win95 verfügbar und von irgendwelchen Einschränkungen steht dort nichts. Vermutlich sind die Funktionen unter ME/9x fehlerhaft oder unvollständig implementiert.

    Kennst du eine andere Möglichkeit, an ein Handle für SetFileTime zu kommen?

    Gruß Gert
     
  10. kazhar

    kazhar Viertel Gigabyte

    Registriert seit:
    21. Juni 2001
    Beiträge:
    4.420
    s garnicht klappen will kompiler\' ich dir eine DLL, die das kann...

    mfg KazHar
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen