![]() |
Re: Pfad ermitteln einer Datei
Wie's direkt geht, weiß ich nicht. :angle2:
Aber du könntest diese Procedure in einer Schleife durchlaufen. Die Partitionen findest du so heraus: ![]() Die Patitionen allein bekommst du, indem du nur die
Delphi-Quellcode:
beachtest.
DRIVE_FIXED
|
Re: Pfad ermitteln einer Datei
Und noch mal, mit Matzes Vorschlag drin:
Delphi-Quellcode:
Var i: Integer;
S: String; S := 'Hallo.txt'; For i := 67 {C} to 90 {Z} do If GetDriveType(PChar(Chr(i) + ':\')) = DRIVE_FIXED Then FindAllFiles(Chr(i) + ':', S, True); |
Re: Pfad ermitteln einer Datei
danke für die ganzen vorschläge erstmal
das mit den partitionen habe ich schon hinbekommen, danke @luckie das mit den objekten habe ich mir auch schon so überlegt das es da was geben muss werde das mal probieren danke habe jetzt mal das beispiel für euch und er hängt sich in der FindAllFiles procedure fest:
Delphi-Quellcode:
//Aufruf
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);
var SR: TSearchRec; begin if AnsiLastChar(RootFolder)^ <> '\' then RootFolder := RootFolder + '\'; if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then // --> ein Verzeichnis wurde gefunden // der Verzeichnisname steht in SR.Name // der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist // RootFolder + SR.Name if (SR.Name <> '.') and (SR.Name <> '..') then FindAllFiles(RootFolder + SR.Name, Mask, Recurse); until FindNext(SR) <> 0; finally FindClose(SR); end; if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory <> faDirectory then begin // --> eine Datei wurde gefunden // der Dateiname steht in SR.Name // der vollständige Dateiname (inkl. Pfadangabe) ist // RootFolder + SR.Name // folgende Zeile schreibt den vollständigen Namen in eine Memo Feld des // Formulars Form1 //Form1.Memo1.Lines.Add(RootFolder + SR.Name); end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; DateiInfo.Name := '04 - Within Temptation - Caged.mp3'; FindAllFiles('C:',DateiInfo.Name,true); //Aufruf tja er kommt aus der procedure nie wieder raus das das komische und ich habe nur C: hier auf arbeit hoffentlich kann mir es jemand sagen mfg alex |
Re: Pfad ermitteln einer Datei
Okay sorry war mein Fehler denn er kommt wieder raus nur es dauert ewig, kann man das nicht beschleunigen?
mal trotzdem ne frage: wenn ich jetzt in einem String den Pfad zuweisen will wo die Datei liegt, wie mache ich das denn ich kann ja nicht sagen p := FindAllFiles('C:',DateiInfo.Name,true); und auf RootFolder + SR.Name kann ich außerhalb der procedure nicht zugreifen.ist bestimmt nur ein denkfehler von mir wäre aber gut wenn ihr es mir sagt mfg alex |
Re: Pfad ermitteln einer Datei
Er such unter umständer schon eine ganze Weile (na gut, bei mir geht es mit N)
Bei mir ist es durchgelaufen. Du kannst ja mal nach einer Weile an der markierten Stelle einen Haltepunkt legen (z.B. mit F5) und schauen wo dein Programm im Moment ist (z.B. die Maus über RootFolder halten und ins Hint schauen) - danach Haltepunkt weg (F5) und witerlaufen lassen (F9)
Code:
oder einfach die aktuelle Position anzeigenlassen, dadurch dauert es aber noch mal etwas länger
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);
var SR: TSearchRec; begin [color=red] if AnsiLastChar(RootFolder)^ <> '\' then [/color] RootFolder := RootFolder + '\'; if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then (das aktielle Verzeichnis wird in der Fensterüberschrift von Form1 angezeigt)
Code:
[add]
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);
var SR: TSearchRec; begin [color=red]Form1.Caption := RootFolder; Application.ProcessMessages;[/color] if AnsiLastChar(RootFolder)^ <> '\' then RootFolder := RootFolder + '\'; if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then Menno, bin heute wohl ständig zu langsam :wall: |
Re: Pfad ermitteln einer Datei
hallo erstmal
ich muss nochmal stören :-) hab mich gestern abend nochmal hingesetzt und mal ein wenig im debugger durchgegangen um den quelltext zu verstehen und alles drum herum und nun ist mir ja aufgefallen, ich suche ja eine datei, muss ich da nicht FindAllFiles('C:', DateiInfo.Name, FALSE); (wichtig das false), nehmen?
Delphi-Quellcode:
so rein vom theoretischen müsste doch in Code jetzt der Pfad liegen von der Datei (DateiInfo.Name) die ich suche oder? Also in DateiInfo.Name steht der Dateiname vollständig mit endung drinne.nur ich bekomme kein Pfad zurück,wo liegt das Problem?
procedure FindAllFiles(RootFolder: string; Mask: string = '*.*'; Recurse: Boolean = True);
var SR: TSearchRec; begin if AnsiLastChar(RootFolder)^ <> '\' then RootFolder := RootFolder + '\'; if Recurse then if FindFirst(RootFolder + '*.*', faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory = faDirectory then // --> ein Verzeichnis wurde gefunden // der Verzeichnisname steht in SR.Name // der vollständige Verzeichnisname (inkl. darüberliegender Pfade) ist // RootFolder + SR.Name if (SR.Name <> '.') and (SR.Name <> '..') then FindAllFiles(RootFolder + SR.Name, Mask, Recurse); until FindNext(SR) <> 0; finally FindClose(SR); end; if FindFirst(RootFolder + Mask, faAnyFile, SR) = 0 then try repeat if SR.Attr and faDirectory <> faDirectory then begin // --> eine Datei wurde gefunden // der Dateiname steht in SR.Name // der vollständige Dateiname (inkl. Pfadangabe) ist // RootFolder + SR.Name // folgende Zeile schreibt den vollständigen Namen in eine Memo Feld des // Formulars Form1 //Form1.Memo1.Lines.Add(RootFolder + SR.Name); [b]Code := RootFolder + SR.Name; [/b]<----habe das so gemacht end; until FindNext(SR) <> 0; finally FindClose(SR); end; end; MFG Alex |
Re: Pfad ermitteln einer Datei
Also an dem TRUE liegt's nicht.
Kann es sein, das du die function falsch aufrufst? [/Edit]Ach ja, da, wo du
Delphi-Quellcode:
stehen hast, kannst du den Pfad + Dateinamen herbekommen, das stimmt auf jeden Fall.
[b]Code := RootFolder + SR.Name; [/b]<----habe das so gemacht
Anstatt deinem Code, kannst du testweise auch mal
Delphi-Quellcode:
schreiben, dann siehst du, ob das wenigstens stimmt.
Edit1.Text := RootFolder + SR.Name
|
Re: Pfad ermitteln einer Datei
die function wird schon richtig aufgerufen, er springt ja rein und macht da drinne sein zeug.
ich habe jetzt mal probiert Code := RootFolder; Code wird vorher auf '' gesetzt also da steht nix drinne, ich brauch ja nur den Pfad nicht nochmal den Dateiname, (also ohne Sr.Name) ich raffs einfach nicht... :-) |
Re: Pfad ermitteln einer Datei
kaum zu glauben es geht.war ein denkfehler von mir sorry
nur leider braucht das programm sehr sehr lange um zwei mp3's zu vertauschen.das echt heftig.es muss doch ne möglichkeit geben das es schneller geht oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 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 by Thomas Breitkreuz