Einzelnen Beitrag anzeigen

Benutzerbild von juergen
juergen

Registriert seit: 10. Jan 2005
Ort: Bönen
1.164 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Datei-Änderungsdatum auslesen- NUR das Jahr neu setzen und in Datei zurückschreib

  Alt 1. Mai 2011, 13:28
Hallo zusammen,

kam leider erst heute zum weiteren Bearbeiten, schließlich sind wir auch noch neuer dt. Meister geworden!

Danke zuerst für die Antworten!
IncYear() von jfheins war dann genau das richtige für meinen Anwendungsfall.

Für alle nachfolgenden Interessenten zu diesem Thema, meine Umsetzung:
(Fehlerbehandlung für den MP3-Tag "Jahr" habe ich hier nicht mit aufgeführt)

Delphi-Quellcode:
var
...
  hFile: THandle;
  ls_Jahr_vom_DateiDatum, ls_MP3_Tag_Year : string;
  li_Korrektur_Jahr : Integer;
  lt_new_Time_Dummy : SystemTime;
  lt_new_Time : TFileTime;
...
...
  begin
    hFile := FileOpen(FCurFile, fmOpenWrite or fmShareDenyNone);
    li_Korrektur_Jahr := 0;
    try
      if not (hFile = INVALID_HANDLE_VALUE) then begin
        ls_Jahr_vom_DateiDatum := FormatDateTime('YYYY', GetFileDate(FCurFile));
        ls_MP3_Tag_Year := JS_MP3Tag.Year;
        li_Korrektur_Jahr := StrToInt(ls_MP3_Tag_Year) - StrToInt(ls_Jahr_vom_DateiDatum);
        if li_Korrektur_Jahr <> 0 then begin
          try
            DateTimeToSystemTime(IncYear(GetFileDate(FCurFile), li_Korrektur_Jahr), lt_new_Time_Dummy);
            SystemTimeToFileTime(lt_new_Time_Dummy, lt_new_Time);
            SetFileTime(hfile, nil, nil, @lt_new_Time);
          except
            on E: Exception do begin
              Main_Form.MemoLog.Lines.Add(E.ClassName + ':' + E.Message + ' ' + SysErrorMessage(GetLastError) + ' Datei, welche nicht geändert werden konnte => "' + FCurFile + '"');
              Main_Form.img3.Visible := True;
            end;
          end;
        end else if hFile = INVALID_HANDLE_VALUE then begin
          Main_Form.MemoLog.Lines.Add('Fehlercode für ungültiges Datei-Handle = ' + IntToStr(hFile) + '...bei Datei => "' + FCurFile + '"');
        end;
      end;
    finally
      FileClose(hFile);
      ls_Jahr_vom_DateiDatum := '';
      ls_MP3_Tag_Year := '';
      li_Korrektur_Jahr := 0;
    end;
  end;
...
Verbesserungsvorschläge sind natürlich gern gesehen.

Allen noch einen schönen Mai-Sonntag!
Jürgen
Indes sie forschten, röntgten, filmten, funkten, entstand von selbst die köstlichste Erfindung: der Umweg als die kürzeste Verbindung zwischen zwei Punkten. (Erich Kästner)
  Mit Zitat antworten Zitat