Announcement

Collapse
No announcement yet.

TSearchRec Erweiterung/Erneuerung

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

  • TSearchRec Erweiterung/Erneuerung

    Hallo Leute,

    ist Euch schon mal aufgefallen, daß der Typ TSearchRech nicht mehr zeitgemäß deklariert ist?

    <pre>
    TSearchRec = record
    Time: Integer;
    Size: Integer;
    Attr: Integer;
    Name: TFileName;
    ExcludeAttr: Integer;
    FindHandle: THandle;
    FindData: TWin32FindData; (* --> ... nFileSizeHigh: DWORD; und nFileSizeLow: DWORD; ... *)

    end;
    </pre>

    Das Problem ist "Size", hier wird mit Integern gearbeitet. Bei mir ist nun das erste Mal der Fall aufgetreten, daß ich eine knapp 4 GB (3.883.597.824 Bytes) große Datei habe. Nun gibt mir TSearchRec negative Zahlen zurück.

    Gibt es da ein Workaround dafür? Oder eine Alternative für FindFirst, FindNext, FindClose? <br>Ich benutze erstmal vorübergehend
    <pre> s.FindData.nFileSizeLow (DWORD) </pre>
    anstelle von
    <pre> s.Size </pre>

    Nun stellt sich mir die Frage, wie ich nFileSizeLow und nFileSizeHigh zusammenführen muss, damit ich einen Int64 bekomme. Kann mir da jemand helfen? Ausprobieren kann ich es noch nicht, da meine Dateigröße (noch) unterhalb 4 GB liegt.

    Gruß

  • #2
    Int64 = nSizeHigh shl 32 + nSizeLow<br>
    <br>
    Int64Rec(Int64).Hi := nSizeHigh;<br>
    Int64Rec(Int64).Lo := nSizeLow;<br>

    Gruß hage

    Comment


    • #3
      Hallo Hagen,

      Du scheinst ja mit Delphi 7 zu arbeiten. Gibt es was ähnliches für Delphi 5?

      mfg
      Michae

      Comment


      • #4
        Jo, gibt es

        Int64 = nSizeHigh shl 32 + nSizeLow<br>

        Int64Rec(Int64).Hi := nSizeHigh;<br>
        Int64Rec(Int64).Lo := nSizeLow

        Comment


        • #5
          Hallo,

          der <b>TSearchRec</b> ist meines Wissens nur noch aus Gründen der abwärtskompabilität (seit D3) vorhanden.

          An seiner Stelle kannst Du <b>TWin32FindData</b> benutzen. Die erforderlichen Funktionen sind dann <b>FindFirstFile</b>, <b>FindNextFile</b> und <b>(Windows.)FindClose</b>

          Comment


          • #6
            @Hagen

            Ich hatte wohl meine Brille nicht auf :-

            Comment


            • #7
              Hallo,

              noch eine kleine Ergänzung. <br>
              So klappt es nämlich bei mir unter D5 pro nicht.<br>
              Es fehlt noch ein kleine Typumwandlung.<br>
              Bei mir klappt:<br>
              BigSize:= Int64(dwFileSizeHigh) shl 32 + dwFileSizeLow;<br>

              Gruß<br>
              Matthia

              Comment

              Working...
              X