AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Letzten Ordner aus Pfad ermitteln

Offene Frage von "sexmagic"
Ein Thema von sexmagic · begonnen am 12. Okt 2008 · letzter Beitrag vom 12. Okt 2008
Antwort Antwort
sexmagic

Registriert seit: 16. Sep 2006
56 Beiträge
 
Delphi 2006 Professional
 
#1

Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 15:28
Hallo Jungs,

ich steck fest, ich hab es nun geschafft eine XML Datei auszulesen und den gewünschten Tag in eine Listbox zu schreiben, auch hab ich es geschaft das ganze rekursiv zu gestalten das ein Ordner und alle Unterordner durchsucht weren.

Das Klappt eigentlich ganz gut, mein Problem ist das ich jetzt noch eine Prüfung einbauen muss die nur gewisse xml dateien für das durchsuchen zulässt da nicht jede xml das gewünschte tag enthält und somit nicht brauchbar ist.

Ich benötige eine Prüfmethode die den Ordner indem sich die gefundene Datei befindet mit dem Dateinamen vergleicht und wenn dieser ohne Extension übereinstimmt dann soll sie ausgelesen werden.

Ein Ordner heisst zb: \34_44459\ und die Datei im Ordner die ausgelesen werden soll heist dann 34_44459.xml, die restlichen xml Datein die da drin sind sind uninteressant.

Es gibt keine Funktion die mir den letzten Ordner aus einem Pfad ausgiebt, wie könnte ich das nun machen, oder gibts vielleicht sogar ne möglichkeit dies in die FindFirst funktion einzubauen damit das direkt schon beim suchen der Datei geprüft wird?

Hier mal mein Quellcode:

Delphi-Quellcode:
var
  Form1: TForm1;
  count: integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  directory: string;
  mask: string;
begin

Count := 0;
  Listbox1.Items.Clear;
  directory := Edit1.Text;
  mask := '*.xml';
  Screen.Cursor := crHourGlass;
  try
    GetAllFiles(directory + mask);
// ShowMessage(directory+mask);
  finally
    Screen.Cursor := crDefault;
  end;
  Label2.Caption := (IntToStr(Count) + ' Files found');

end;


procedure TForm1.Button2Click(Sender: TObject);
var
  root: string;
begin
if SelectDirectory('Select a directory', ' ', root)
  then edit1.Text:= IncludeTrailingPathDelimiter(root)
  else Edit1.Text:='c:\';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  ListBox1.Clear;
end;

procedure TForm1.GetAllFiles(mask: string);
var
  search: TSearchRec;
  directory: string;
  aktualDir: string;
begin
  directory := ExtractFilePath(mask);

  // find all files
  if FindFirst(mask, $23, search) = 0 then
  begin
    repeat

// ShowMessage(aktualDir);

// ExtractFileName(datei)


      //XML Datei laden
      XMLDocument1.LoadFromFile(directory + search.Name);
      XMLDocument1.Active;

      // add the files to the listbox
      Form1.ListBox1.Items.Add(XMLDocument1.DocumentElement.childNodes[0].childNodes[0].Text + ' -- ' + directory + search.Name);

      Inc(Count);
    until FindNext(search) <> 0;
  end;

  //Unterverzeichnisse durchsuchen
  if FindFirst(directory + '*.*', faDirectory, search) = 0 then
  begin
    repeat
      if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then
        GetAllFiles(directory + search.Name + '\' + ExtractFileName(mask));
    until FindNext(search) <> 0;
    FindClose(search);
  end;
end;
Vielleicht könnte mir da einer einen Tip geben wie ich vorgehen muss oder wie ich an den letzten Ordner einem Pfad komme.

Vielen Dank

-sm
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 15:32
Versuch es mal mitExtractFileName(ExcludeTrailingPathDelimiter(Pfad));
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
sexmagic

Registriert seit: 16. Sep 2006
56 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 15:41
Danke Deddy!

Leider gibt mir das nur den Dateinamen aus, den hab ich ja, ich müsste aber überprüfen ob der Ordner indem die Datei liegt gleich heisst wie die Datei und wenn Ordner == Dateiname (ohne Extension)soll sie eingelesen werden.

Das Problem ist wie komm ich an den Ordnernamen von diesem Verzeichnis.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 15:44
Also möchtest Du wissen, ob die Datei "ABC.txt" im Ordner "C:\Programme\ABC" liegt (als Beispiel)?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 15:47
Du hast einen String der so aussieht:
Zitat:
C:\Ordner1\Ordner2\Datei1.bla
dann kommst du an den Ordner über
ExtractFilename(ExcludeTrailingPathDelimiter(ExtractFilePath(Path)))
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
sexmagic

Registriert seit: 16. Sep 2006
56 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 15:51


Ja genau, also ich mach mal ein Beispiel.

Es gibt viele Ordner und jeder Ordner hat einen Namen aus einer Zahlencombination.

34_5556/ indem die Datei 34_5556.xml liegt
34_5557/ indem die Datei 34_55567.xml liegt

Es liegen aber noch andere xml Files da drin die ich nicht brauche und darum muss ich genau diese Datei rausholen.
In den anderen xml Dateien kommt der Ordnername auch vor nur steht da auch noch anderes Zeug dabei zb. param-dep-34_5556.xml, diese sollen nicht gefunden werden.

Ich dachte nun ich vergleiche den Dateinamen mit dem Letzten Ordner im Pfad und wenn der genau übereinstimmt dann soll sie ausgelesen werden.

Ich hoffe das war verständlich erklärt?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 15:54
Versuch es mal hiermit:
Delphi-Quellcode:
function DirHasSameName(const Filename: TFileName): Boolean;
begin
  Result := AnsiSameText(ChangeFileExt(ExtractFileName(Filename),''),
                         ExtractFileName(ExcludeTrailingPathDelimiter(ExtractFilePath(Filename))));
end;
Müsste eigentlich klappen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
sexmagic

Registriert seit: 16. Sep 2006
56 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 15:56
Super das haut schonmal klasse hin!!!!


Danke dir vielmals Daddy!, ich werde es jetzt mal so versuchen, danke für die schnelle Hilfe.



EDIT:
Hast du noch ne Idee wie ich die Dateiendung vom Dateinamen entfernen kann?

EDIT2:

Hab erst jetzt die Funktion gesehen, die muss ich mir jetzt erstmal durch den Kopf gehen lassen, mal sehen wo ich die wie anwenden muss.

Danke dir, habs zwar noch nicht ganz verstanden aber ich versuch mal bischen rum.
  Mit Zitat antworten Zitat
sexmagic

Registriert seit: 16. Sep 2006
56 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 16:17
Habs zwar nicht mit der Funktion gemacht, eher auf die schmutzige weise aber es haut hin!!

Vielen Dank nochmal Deddy für deine freundliche Unterstützung.

Hier noch wie ichs gemacht hab:
Delphi-Quellcode:
// find all files
  if FindFirst(mask, $23, search) = 0 then
  begin
    repeat

        aktualDir:= ExtractFilename(ExcludeTrailingPathDelimiter(ExtractFilePath(directory + search.Name)));
        aktualFile:= ChangeFileExt(search.Name, '');
// ShowMessage(aktualFile);
        if (aktualDir = aktualFile) then
        begin
          //XML Datei laden
          XMLDocument1.LoadFromFile(directory + search.Name);
          XMLDocument1.Active;
          // add the files to the listbox
          Form1.ListBox1.Items.Add(XMLDocument1.DocumentElement.childNodes[0].childNodes[0].Text + ' -- ' + directory + search.Name);
          Inc(Count);
        end;
    until FindNext(search) <> 0;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Letzten Ordner aus Pfad ermitteln

  Alt 12. Okt 2008, 16:21
Das ist im Prinzip das, was meine Funktion auch macht mit einem kleinen Unterschied: ich unterscheide nicht zwischen Groß- und Kleinschreibung, was Dein
Zitat:
if (aktualDir = aktualFile) then
schon tut. Aber wenn die Dateinamen sowieso nur numerisch sind, sollte das keinen Unterschied machen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 05:41 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