![]() |
Findfirst findet Ordner wie System Volume Information nicht?
Moin!
Warum findet Delphi Findfirst/Findnext keine Ordner wie z.B. "System Volume Information" ect. ? Kann dazu jemand einen Hinweis geben? mfG Richard |
Re: Findfirst findet Ordner wie System Volume Information ni
Welche Attribut-Konstanten setzt du denn?
|
Re: Findfirst findet Ordner wie System Volume Information ni
momentan so
Delphi-Quellcode:
mfG Richard
(SR.Name<>'.') and (SR.Name<>'..') AND ((SR.attr And fadirectory)<>0)
|
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
Nicht mal ein Administrator darf das öffnen. Was willst Du auch mit diesem Ordner? Da steht nix interessantes drin. |
Re: Findfirst findet Ordner wie System Volume Information ni
Ungeachtet der Fragestellung, was du damit möchtest:
Wenn FindFirst die Parameter faDirectory+faSysFile+faHidden übergeben werden, dann werden diese Verzeichnisse auch gefunden :stupid: |
Re: Findfirst findet Ordner wie System Volume Information ni
@RavenIV
Zitat:
Zitat:
Zitat:
mfg Richard |
Re: Findfirst findet Ordner wie System Volume Information ni
Dann wirst du aber erstmal mit administrativen Rechten, die Zugriffsberechtigungen anpassen müssen, damit du auch als Administrator den Ordner öffnen kannst.
|
Re: Findfirst findet Ordner wie System Volume Information ni
@taaktaak
Zitat:
Logisch verknüpfen wurde hier mal gesagt. mfG Richard |
Re: Findfirst findet Ordner wie System Volume Information ni
@Luckie
Du meinst also es liegt definitiv an den Zugriffsrechten ? Kein Findfirst Attribut-Fehler ? Kann deine ADS Klasse vielleicht sowas? mfG Richard |
Re: Findfirst findet Ordner wie System Volume Information ni
Hmmm, das Additionszeichen war nur eine textliche Darstellung. Obwohl, im Test habe ich's auch so gemacht!?
JA, bei mir werden die Verzeichnisse angezeigt. Die darin enthaltenen Dateien habe ich allerdings nicht heraussuchen lassen (und jetzt ist schon alles wieder perduto) // edit: Im Beispiel der Delphi-Hilfe wird übrigens auch addiert :-D |
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
|
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
|
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
Addier doch einfach mal ein Wert zweifach oder faAnyFile dazu, dann haste deine Begründung warum das falsch ist und man definitiv OR verwenden sollte. Was mich mal interessiert: Wodrauf beruht deine Aussage das die Addition richtig ist? Die Hilfe hat genügend Fehler und ist keine sichere Basis. |
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
Mal davon abgesehen, daß z.B. ein faSysFile or faHidden or faDirectory das Selbe ist wie ein faSysFile + faHidden + faDirectory. |
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
siehe: http://msdn2.microsoft.com/en-us/library/aa365740(VS.85).aspx (Hinweis: link kopieren, direkt anklicken geht nicht) Bit 0 - read only Bit 1 - Hidden .... Wenn man bestimmte Bits aktivieren möchte muss man OR benützen. Wenn man bestimmte Bits ausblenden möchte muss man AND NO benützen. Das sind Grundlagen der Informatik. Wenn man z.B. alle Dateien ohne Verzeichnisse finden möchte dann schreibt man: faAnyFile AND NOT faDirectory Zitat:
|
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
Zitat:
Zitat:
Zitat:
|
Re: Findfirst findet Ordner wie System Volume Information ni
Es ist schon erstaunlich. Da macht man jahrelang etwas nicht richtig. Es führt nie zu einem Fehler oder unkorrekten Ergebnis. Trotzdem ist es, nüchtern betrachtet, falsch. Die Diskussion hat mich überzeugt. Künftig wird's nur noch mit OR Verknüpft!
Bemerkenswert dabei, das man auch im Falle solcher (scheinbaren) Nebensächlichkeiten häufig noch etwas dazu lernen kann! Vielen Dank allen Beteiligten! |
Re: Findfirst findet Ordner wie System Volume Information ni
Schauts, wir brauchen darüber eigentlich nicht zu diskutieren.
CodeGear möchte, daß man die Werte addiert. Es ist so von ihnen dokumentiert und sie selbst handhaben es innerhalb des VCL Codes ebenfalls so. Das man es bitcodieren kann, hab ich nie bestritten. Wie gesagt, sollte das Bit bzw. die Bits nicht gesetzt sein, erhält man bei der Addition mit der Konstante den selben Wert wie bei nem OR. Allerdings bevorzuge ich im Zweifelsfall dann doch eher die dokumentierte Methode alleine schon deshalb um eine gewisse Zukunftssicherheit für meinen Code zu gewährleisten. |
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
Zitat:
Zitat:
FileIsReadOnly, FileSetReadOnly, etc machen dies so. Das beste Beispiel ist sogar die erste Zeile der FindFirst Implementation von Codegear:
Delphi-Quellcode:
(Copyright (c) 1995-2002 Borland Softwrare Corporation) Der Schreibfehler ist Original!
faSpecial = faHidden or faSysFile or faVolumeID or faDirectory;
Ich kann diese sture Haltung bezüglich überzeugender Argumente wirklich nicht verstehen - und ich finde über sowas muss man diskutieren. Schon grundlegend weil wir hier Informationen anbieten und damit verbreiten von denen viele andere lernen - oftmals still und leise durch die SuFu, google, etc. Von daher kann ich es nicht mit mir vereinbaren etwas gut zu heissen was definitiv und "bewiesener Maßen" falsch ist. Als das größte deutschsprachige Delphi-Forum und zusätzlich zu Delphi als Lehrsprache in den Schulen haben wir eine gewisse Verantwortung und somit muss man darüber diskutieren. |
Re: Findfirst findet Ordner wie System Volume Information ni
Ok, da das Signal, das ich mit dem letzten Posting setzen wollte, offensichtlich nicht deutlich genug war:
E.O.D. Du kannst Deine Zeit aber gerne noch weiter damit vertreiben mich davon zu überzeugen, daß ich Unrecht habe und Du nicht. Mein Standpunkt, daß ich bei 2 möglichen Methoden stets die nutze, die dokumentiert ist, wird sich dadurch nicht ändern: Zitat:
|
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
PS: Du bist nicht zufälligerweise Projektleiter oder CEO einer Firma? |
Re: Findfirst findet Ordner wie System Volume Information ni
@Muetze1
Kannst du dir mal folgenden Aufruf anschauen? Mein Findfirst...
Delphi-Quellcode:
und meine Auswertung zur Rekursion...
if (FindFirst(ADirectory+AMask, faAnyFile,SR)=0) then´
Delphi-Quellcode:
faAnyfile sucht nach allem Files + Directorys. In der Rekursionsbedingung Werte ich ja mit
if (SR.Name<>'.') and (SR.Name<>'..') AND ((SR.attr And fadirectory)<>0)
Delphi-Quellcode:
aus ob das Attribut faDirectory ist. Meine Frage wäre, ob diese Abfrage auch funktioniert, wenn ich ein Verzeichnis habe, was z.B.
((SR.attr And fadirectory)<>0)
versteckt ist. Also die Attribute faDirectory und faHidden besitzt oder z.B. faDirectory und faHidden und faSysfile. Wenn nicht kannst du mir sagen wie ich darauf prüfen könnte? mfG Richard |
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
|
Re: Findfirst findet Ordner wie System Volume Information ni
Zitat:
Diese Bitmasken kannst du mit einer Menge übersetzen (wobei Delphi dies bei Sets andersherum sogar macht). Du prüfst nun damit nur ab, ob das Attribut "Directory" in dieser Menge ist. Ob andere Elemente in der Menge sind, fragst du ja nicht. Somit werden auch versteckte, als System etc. gekennzeichnete Einträge auch mit durchgelassen - Hauptsache das Bit für ein Verzeichnis ist gesetzt. Wenn du dir die Konstanten anschaust (also faDirectory, faReadOnly, faSystem, etc), dann stellt man leicht fest, dass es immer nur einzelne Bits sind. Mit der AND Operation führst du ein binäres UND durch und maskierst damit alle anderen Bits, bis auf die gesetzten des 2. Parameters, aus. Da dein zweiter Parameter nur ein Bit gesetzt hat, ist nach der UND Verknüpfung entweder genau das Bit gesetzt oder gar keins. Wir hatten gerade ein paar ![]() |
Re: Findfirst findet Ordner wie System Volume Information ni
besten Dank :)
mfG Richard |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz