Announcement

Collapse
No announcement yet.

Datum der letzten Dateiänderung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datum der letzten Dateiänderung

    Hallo,<br>
    <br>
    ich suche einen Weg, um das Datum der letzten Dateiänderung zu bekommen.<br>
    Aber mit dem Parameter 'Time' von FindNext bekomme ich ja nur den<br> Zeitpunkt, als die Datei erstellt wurde.<br>
    <br>
    Gibt es da eine Möglichkeit?<br>
    Vielen Dank, Stefan Walter

  • #2
    Hallo Stefan!

    Schau mal nach FileAge(Dateiname). Vielleicht hilft das weiter.

    Gruß Andrea

    Comment


    • #3
      Hallo Stefan,
      ich hab da mal mit folgendem Typ gespielt, vielleicht hilft es Dir.

      <PRE><CODE>
      type TSF_FileInfo = record
      AlternateFileName : String[14];// 8.3 name
      FileSize : Integer; // Bytes
      FileDate : String;
      CreationTime : String;
      LastAccessTime : String;
      LastWriteTime : String;
      FileAttributes : String;
      Fileversion : String; // noch nicht verfügbar..
      Successfull : Boolean;// nur zum Testen ob die Datei geöffnet werden konnte
      end;
      </PRE></CODE>

      und so sieht die Funktion aus..
      <PRE><CODE>

      function SF_getFileInfo(Filename: String):TSF_FileInfo;
      var sr: TSearchRec;
      dt: TDateTime;
      fd: TWin32FindData;
      ft: _FileTime;
      st: TSystemTime;
      s: String;
      i: Integer;
      begin
      Result.Successfull := False;
      try
      if FindFirst(Filename, faAnyFile, sr) = 0 then
      begin
      result.Successfull := True;
      fd := sr.FindData;
      Result.AlternateFileName := fd.cAlternateFileName; // 8.3 name
      Result.FileSize := sr.Size; // Größe in Byte

      dt := FileDateToDateTime(sr.Time);
      Result.FileDate := DateTimeToStr(dt);

      FileTimeToLocalFileTime(fd.ftCreationTime,ft);
      FileTimeToSystemTime(ft, st);
      dt := SystemTimetoDateTime(st);
      Result.CreationTime := DateTimeToStr(dt);

      FileTimeToLocalFileTime(fd.ftLastAccessTime,ft);
      FileTimeToSystemTime(ft, st);
      dt := SystemTimetoDateTime(st);
      Result.LastAccessTime := DateTimeToStr(dt);

      FileTimeToLocalFileTime(fd.ftLastWriteTime,ft);
      FileTimeToSystemTime(ft, st);
      dt := SystemTimetoDateTime(st);
      Result.LastWriteTime := DateTimeToStr(dt);

      //** API Attribute
      s := '';
      i := GetFileAttributes(Pchar(Filename));
      if (i and FILE_ATTRIBUTE_READONLY)>0 then s:=s + 'R';
      if (i and FILE_ATTRIBUTE_HIDDEN)>0 then s:=s + 'H';
      if (i and FILE_ATTRIBUTE_SYSTEM)>0 then s:=s + 'S';
      if (i and FILE_ATTRIBUTE_ARCHIVE)>0 then s:=s + 'A';
      if (i and FILE_ATTRIBUTE_COMPRESSED)>0 then s:=s + 'C';
      if (i and FILE_ATTRIBUTE_TEMPORARY)>0 then s:=s + 'T';
      Result.FileAttributes := s;

      //** Dateiversion
      Result.Fileversion := 'in Arbeit..'; //********

      end;
      SysUtils.FindClose(sr);
      except
      Result.SuccessFull := False;
      end;
      end;
      </PRE></CODE>

      Gruß Andrea

      Comment


      • #4
        Hi

        such hier im Forum

        <a href="/webx?13@@.ee708dd/0">"Noch mal Probleme mit GetFileTime" 25.01.2001 11:25</a>

        http://www.entwickler-forum.de\webx?13@@.ee708dd/0

        Gruß Hage

        Comment


        • #5
          Vielen Dank Andreas und Hagen, ich schau mir gleich mal beide<br> Möglichkeiten an! Aber wie kommt man denn auf solche Lösungen?<br>
          Ich habe zwar ein paar tolle Bücher vom Hanser Verlag und hab auch<br> die Hilfe durchgesehen, aber uaf sowas wäre ich sicher nicht<br> alleine gekommen. Also Danke nochmal,<br>
          Stefa

          Comment


          • #6
            Hm, gute Frage. So richtig weis ich das auch nicht. Wird wohl Erfahrung und die daraus resultierende Intuition sein. Meinen Beispielcode habe ich jedenfalls auf die gestellte Frage hin geschrieben (ca. 15-30 min). Nach einer Zeit hat man schon mal von jeder wichtigen Funktion gehört, der Rest ist nur noch Kombinatorik

            Gruß Hage

            Comment


            • #7
              Das WIN32 API, sind zwar 5 Bände, aber sehr interessant. Der andere Weg: Wenn du mal richtig an einem Problem sitzt, und alles ausprobierst, bis es klappt, dann stellst du dir die erste Frage:
              Warum bin ich nicht früher drauf gekommen. Falls ein anderer dann fragt, kannst du dann helfen.
              Mir ging es mal so bei OnKeyPress und OnKeyDown. Die meisten wissen gar nicht, was dort eigentlich passiert. Da ich mal ein kleines Programm für flinke Finger und mal nicht für die Maus schreiben musste, habe ich mich mal eine Woche reingekniet. Hat sich gelohnt, doch wenn man das bei jedem Problem machen würde, käme man kaum zur eigentlichen Arbeit. Deswegen gibt es solche Foren wie hier, wo man sich einerseits Zeit sparen kann und andererseits mit seinem Wissen anderen helfen kann.

              mfg Klaus-Pete

              Comment

              Working...
              X