AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pfad ermitteln einer Datei

Ein Thema von Alex_ITA01 · begonnen am 13. Jan 2004 · letzter Beitrag vom 14. Jan 2004
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Pfad ermitteln einer Datei

  Alt 13. Jan 2004, 12:46
Wie's direkt geht, weiß ich nicht.

Aber du könntest diese Procedure in einer Schleife durchlaufen.

Die Partitionen findest du so heraus:
http://www.delphipraxis.net/internal...ht=laufwerk%2A


Die Patitionen allein bekommst du, indem du nur die
DRIVE_FIXED beachtest.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#12

Re: Pfad ermitteln einer Datei

  Alt 13. Jan 2004, 13:09
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);
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#13

Re: Pfad ermitteln einer Datei

  Alt 13. Jan 2004, 14:29
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:
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;
//Aufruf
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
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#14

Re: Pfad ermitteln einer Datei

  Alt 13. Jan 2004, 14:50
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#15

Re: Pfad ermitteln einer Datei

  Alt 13. Jan 2004, 14:59
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:
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
oder einfach die aktuelle Position anzeigenlassen, dadurch dauert es aber noch mal etwas länger
(das aktielle Verzeichnis wird in der Fensterüberschrift von Form1 angezeigt)
Code:
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
[add]
Menno, bin heute wohl ständig zu langsam
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#16

Re: Pfad ermitteln einer Datei

  Alt 14. Jan 2004, 09:00
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:
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;
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?

MFG Alex
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Pfad ermitteln einer Datei

  Alt 14. Jan 2004, 09:03
Also an dem TRUE liegt's nicht.

Kann es sein, das du die function falsch aufrufst?


[/Edit]Ach ja, da, wo du
[b]Code := RootFolder + SR.Name; [/b]<----habe das so gemacht stehen hast, kannst du den Pfad + Dateinamen herbekommen, das stimmt auf jeden Fall.

Anstatt deinem Code, kannst du testweise auch mal
Edit1.Text := RootFolder + SR.Name schreiben, dann siehst du, ob das wenigstens stimmt.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#18

Re: Pfad ermitteln einer Datei

  Alt 14. Jan 2004, 09:17
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...
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#19

Re: Pfad ermitteln einer Datei

  Alt 14. Jan 2004, 09:32
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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz