Announcement

Collapse
No announcement yet.

Problem mit FindFirst/FindNext und der ZIP-Integration unter XP

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

  • Problem mit FindFirst/FindNext und der ZIP-Integration unter XP

    Hallo allerseits,

    ich schlage mich zur Zeit mit einem interessanten Bug herum, weiß aber nicht, was ich diesbezüglich tun soll. Vielleicht hat hier jemand einen Anhaltspunkt.

    Liest man mittels FindFirst/FindNext eine Verzeichnisstruktur auf der Platte aus, bekommt man unter XP bei ZIP-Archiven das Ergebnis, dass es sich hierbei um einen Ordner und keine Datei handeln würde.

    Anscheinend ist die ZIP-Integration in XP hier ein bischen zu weit gegangen. Jedenfalls wird dies dann natürlich vom Programm falsch behandelt und resultiert in allen möglichen Fehlermeldungen.
    Unter anderen Windows-Versionen tritt dieser Fehler nicht auf!

    Weiß darüber jemand was?
    Danke!

    Ciao

    Benjamin Heil

  • #2
    Hallo,

    hier gilt doch wohl der Satz "It's not a bug, it's a feature" :-)

    Wenn das eigene Programm damit nicht klarkommt, muss es <br>
    a) die Dateiendung .ZIP auswerten, und <br>
    b) die aktuelle Windows-Version abfragen, <br>
    um den Anwender nicht mit Fehlermeldungen zu belästigen und einen Bogen um diese "Ordner" zu machen.

    &gt;..hier ein bischen zu weit gegangen..

    Der Windows XP-Nachfolger (<I>Longhorn</i>) geht noch viel weiter, da der gesamte Verzeichnisbaum <i>C:\Dokumente und Einstellungen</i> in einer Datenbank landet (und nicht mehr in Dateiform auf der Festplatte). Die "alten Trampelpfade" führen also nur bei den alten Windows-Versionen zum richtigen Ziel

    Comment


    • #3
      Na, das hört sich nicht sehr berauschend an. Hat da MS nicht irgendeinen Workaround vorgesehen. Immerhin müssten damit auch viele älteren Programme Ärger haben, oder?

      Nun, bei dieser Sachlage werde ich wohl auf XP prüfen und dann nach der Endung ".zip" suchen, in der Hoffnung, dass niemand einen Ordner "irgendwas.zip" nennt...

      Vielen Dank für die Hilfe, Herr Kosch!

      Ciao

      Benjamin Hei

      Comment


      • #4
        Hallo Benni,<p>
        Du könntest mal prüfen, ob MS da nicht noch ein weiteres Flag eingeführt hat. Sprich lass Dir mal die Dateitypen als Zahl ausgeben, ob sich die Zahl nicht in einem nicht ausgewertetem Bit unterscheidet.<p>
        Schöne Grüße, Mario Noac
        Schöne Grüße, Mario

        Comment


        • #5
          Hallo Benni,

          da wir FinFirst/FindNext ebenfalls verwenden hab ich mal 'nen kleinen Test vollzogen (mit XP mit allen Patches + "jungfreuliches" XP, jeweils Pro-Version) und konnte keine Probleme mit unserer Implementierung feststellen.
          Die Zip-Dateien werden nicht als Verzeichnis erkannt und nicht durchlaufen. Hab den Test mit einem Zip und einem Verzeichnis mit Endung Zip durchgeführt.

          Evtl. postet Du mal deinen entsprechenden Code. Vermutlich mußt Du nur an 1, 2 Änderungen vornehmen damit es wieder funktioniert

          Comment


          • #6
            Hi Leute,

            ich kann diesen Effekt mit dem BCB 6 und Win XP Pro ebenfalls nicht nachvollziehen. Die ZIP-Datei wird als normale Datei erkannt. Die Dateiattribute der ZIP-Datei unterscheiden sich auch nicht von denen einer normalen Datei.

            Grüße Joche

            Comment


            • #7
              Wow. Danke für Euer reges Interesse.

              Hier mal der entsprechende Code

              <PRE>
              FindFirst(Dir + '\*.*', faAnyFile - faVolumeID, F);
              Try
              S.Clear;
              Repeat
              If (F.Name <> '.') And (F.Name <> '..') Then
              If (F.Attr And faDirectory) = faDirectory Then
              S.Add(Dir + '\' + F.Name)
              Else
              If FileExists(Dir + '\' + F.Name) Then Begin
              // hier wird was mit dem File gemacht
              End;
              Until (FindNext(F) <> 0);
              Finally
              SysUtils.FindClose(F);
              End;
              </PRE&gt

              Comment


              • #8
                Hab deinen Code unter XP mit allen SP's getestet und kein Problem festgestellt.

                Falls Du lust hast kann ich dir ja mal meine Test-Exe schicken.

                Falls diese auf dem entsprechenden XP-Rechner Probleme bereitet würde ich sagen das dieser Rechner 'ne Macke/Bug hat (Evtl. ZIP-Integration fehlerhaft bzw. durch eines der 100 Fixes fehlerhaft geflickt)

                Comment


                • #9
                  Ja, das wäre eine super Idee, Bernhard. Schick das File am besten mal an [email protected]!
                  Vielen Dank!

                  Das komische ist, dass dieser Fehler aber auf drei XP-Systemen auftritt, unter 2000 aber alles ganz normal läuft

                  Comment


                  • #10
                    Ist unterweg

                    Comment


                    • #11
                      Ich habe das Problem gefunden! Es hat nichts mit FindFirst/FindNext zu tun, das hat nur so den Anschein gemacht.

                      Ich habe intern zwei Listen, die entweder Verzeichnisse oder Dateien enthalten. Nun kann man per Drag'n'Drop Dateien aus einem TShellListView in ein anderes ziehen. Und eben dieses TShellListView zeigt einem an, es würde sich um ein Verzeichnis bei ZIP-Archiven handeln. Deshalb wurde das auch im weiteren Verlauf als solches behandelt.

                      Was ich nur nicht verstehe, ist die Sache, dass dadurch auch im Debugger von Delphi in der FindFirst/FindNext-Schleife etwas falsches angezeigt wurde.

                      Nun gut, wieder was daraus gelernt: Mit TShellListView sollte man doch eher vorsichtig sein.

                      Vielen Dank für Eure tatkräftige Unterstützung.

                      Ciao

                      Benn

                      Comment

                      Working...
                      X