Announcement

Collapse
No announcement yet.

TFilestream.seek

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

  • TFilestream.seek

    Hi,

    beim TFilestream.seek-Befehl auf Positionen oberhalb der 2GByte-Grenze geschene Wunder. Die zurückgegebene Fileposition
    hat mit der übergebenen Seekposition nichts mehr zu tun.
    Laut Hilfe sind aber alle relevanten Werte int64

    function Seek(const Offset: Int64; Origin: TSeekOrigin): Int64; override;

    Schon mal gesehen?

    HWHK

  • #2
    Welches Delphi? Welches OS? Netzwerk/Lokal?
    Beispielcode?

    Comment


    • #3
      XE3, Win8Pro 64Bit , Lokal+NW

      alle Variablen int64

      seekposition_weiter:=headerlang
      +round(lese_ruck_anzahl_weiter*schirm.lese_ruck_pu nkte)*eegein_size*kanalzahl;

      F_EEGDaten.Seek(seekposition_weiter,soFromBeginnin g);
      neu_pos:=F_EEGDaten.Position;

      z.B.
      keine Systematik festzustellen (int32, dword oder ähnliche Fehler)
      >2G
      seekposition_weiter 2994740712
      neu_pos 20887800

      <2G
      seekposition_weiter 2142848512
      neu_pos 2142848512

      HWHK

      Comment


      • #4
        Hi,

        Lösung gefunden:
        soFromBegining durch soBegining ersetzt und alles läuft wie erwartet.
        Hilfe von Delphi war keine grosse Hilfe.

        HWHK

        Comment


        • #5
          Von Welchen Typ ist F_EEGDaten?

          Comment


          • #6
            Übrigens: Hier ist die Hilfe dazu welche auf evtl. eigene Implementierungsfehler erklärt.

            Comment


            • #7
              Hier die Online-Hilfe: http://docwiki.embarcadero.com/Libra...s.TStream.Seek

              Comment


              • #8
                Hi,

                Danke, hatte die Stelle über mehrere Umwege auch schon gefunden.
                An der Stelle

                http://docwiki.embarcadero.com/Libra...dleStream.Seek

                wird aber vor eventuellen Überladungsfehlern gewahrt.

                Warnung: Diese Konstanten können ungewollten/fehlerhaften Code erzeugen, weil eine überladene Such-Methode verwendet wird, die offest : longint verwendet, was den Suchbereich auf 2 GB beschränkt.
                HWHK

                Comment

                Working...
                X