AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein letzen Ordnernamen eines Pfades ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

letzen Ordnernamen eines Pfades ermitteln

Ein Thema von padavan · begonnen am 28. Okt 2005 · letzter Beitrag vom 28. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#1

letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 07:21
Moin,

wie komm ich eigentlich an den letzten Ordner eines Pfades dran?

z.B.
Pfad:
c:\test\Gruppierung1\dateinamen_n.txt
ich möchte haben:
"Gruppierung1"

Habe sowas schonmal gebraucht und auch hinbekommen, allerdings hatte der letzte Ordnername eine festdefinierte Länge, und somit war´s einfach. Aber was, wenn der letzte Ordnername keine feste Länge hat?

  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 07:31
Hai padavan,

nur mal so ins blaue gedacht:
  • Die Ordnerstruktur ist durch ein abschliessenden \ vom Dateinamen getrennt.
  • Jeder Ordner ist durch ein \ vom anderen getrennt
  • Das "root-laufwerk" ist durch ein :\ von den Ordnern getrennt

Du musst also nur den letzen Backslash suchen und vor dort(nach links) bis zum nächsten Backslash suchen.
Wenn in dem String nur ein \ vorkommt steht in ihm eine Datei des root.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 07:40
Stimmt!
werd mich nachher gleich mal dran machen.

Vielen Dank
Padavan

(Ergebnisse werd ich posten)
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 08:13
Hier ist schon mal meins:

Delphi-Quellcode:
function Folder(fileName: string): string;
begin
  Delete(fileName, 1, Length(ExtractFileDrive(fileName)));
  SetLength(fileName, Length(fileName) - Succ(Length(ExtractFileName(fileName))));
  Result := ExtractFileName(fileName);
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#5

Re: letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 08:22
Marabus Lösung ist kürzer als meine, aber ich will sie trotzdem nicht vorenthalten:

Delphi-Quellcode:
function GetLastDirFromPath(const Pfad: String): String;
var
  i : Integer;
  j : Integer;
  s : String;
begin
  i := 1;
  j := 1;
  s := ExtractFilePath(Pfad);
  Delete(s, Length(s), 1); // Abschliessendes \ entfernen

  // Und jetzt nach einem \ suchen, bis man das letzte hat
  // Dazu wird die Position des vorhergehenden gesichert
  while (i>0) do
  begin
    j := i;
    i := PosEx('\', s, i+1); // function PosEx(SubStr, S: String; Offset: Integer = 1): Integer;
                             // Sucht SubStr in S ab Position Offset
                             // Ergebnis: Wenn (SubStr nicht gefunden wurde)or(Offset>Length(s))or(Offset<1) dann 0 sonst (Position von SubStr)
                             // Für PosEx muss die Unit StrUtils eingebunden werden
  end;

  Result := Copy(s, j+1, Length(s));
end;
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 08:37
Danke euch,
da zeig ich meinen konfusen, noch nicht funktionierenden Quellcode lieber nicht.




Gruß
Padavan
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 08:42
Zitat von padavan:
... noch nicht funktionierenden Quellcode lieber nicht. ...
Hai padavan,

Du solltest aber trotzdem versuchen deinen Code zum laufen zu bekommen. Es hilft auf dauer ja nicht fertigen Code zu verwenden weil man in seinem eigenen Fehler hat

(Darum habe ich ja auch keinen fertigen Code gezeigt sondern nur einen Weg wie man es lösen kann)
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 09:03
das stimmt, nur nachdem ich angefangen hab und mittendrin eine Antwort erhielt, wäre ich jetzt beeinflusst.
Was um Himmels willen nicht heißen soll, dass ich keine Antworten mehr haben will.


das war meins (aber noch nicht fertig und verworfen, marabus´s gefällt mir einfach besser, egal ob ich meines zum Laufen bring)

Delphi-Quellcode:
function gibletztenOrdner(komplett: String): String; // es muss der ganze Pfad mit Dateiname übergeben werden
var //
    Teilstring: String;
    p1: integer;
    p2: integer;
    c: integer;
    i: integer;
    Ergebnis: String;
begin
{
  'c:\test\Gruppe1\Datei.txt'
                  p2-letzter Backslash
          p1-vorletzter Backslash
          |---c---|
}


  for i := 0 to length(komplett) - 1 do begin
    p1 := pos('\',komplett); // liefert vorletzten Backslash

//hier fehlt noch was...

  end;



  p2 := pos('\' + extractfilename(komplett),komplett); // liefert letzten Backslash
  c := p2 - P1;

  Ergebnis := copy(komplett,p1,c);
  result := Ergebnis;
end;
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#9

Re: letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 09:21
Siehe Kommentare im Code:

Delphi-Quellcode:
function gibletztenOrdner(komplett: String): String; // es muss der ganze Pfad mit Dateiname übergeben werden
var //
    Teilstring: String;
    p1: integer;
    p2: integer;
    c: integer;
    i: integer;
    Ergebnis: String;
begin
{
  'c:\test\Gruppe1\Datei.txt'
                  p_2-letzter Backslash
          p_1-vorletzter Backslash
          |---c---|
}


  for i := 0 to length(komplett) - 1 do begin
    p1 := pos('\',komplett); // liefert vorletzten Backslash


// Da du immer den gesamten String überprüfst, wirst du immer den ERSTEN Backslah finden (DevilsCamp)
// Kleiner Tip: Gehe die Schleife von Length(komplett) bis 1 runter und Prüfe, ob komplett[i]='\'. Sicher dann die Position des zweiten '\'



//hier fehlt noch was...

  end;



  p2 := pos('\' + extractfilename(komplett),komplett); // liefert letzten Backslash

// Das liefert tatsächlich die Position des letzten Backslashs (DevilsCamp)

  c := p2 - P1;

  Ergebnis := copy(komplett,p1,c);
// Hier würde das vorletzte \ mit im Ergebnis stehen. Wenn dies aber mit im Ergebnis sein soll, dann ist es richtig (DevilsCamp)
  result := Ergebnis;
end;
So wie der Code geschrieben wurde, bekommst du immer den String, der zwischen dem ersten und dem letzten Backslash steht (inkl. dem ersten Backslash)
  Mit Zitat antworten Zitat
padavan

Registriert seit: 12. Jan 2005
271 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: letzen Ordnernamen eines Pfades ermitteln

  Alt 28. Okt 2005, 09:38
Danke für den Tipp,
ich versuch´s dann nochmal.
Bin ja froh, dass du noch halbwegs den Ansatz im meinem Codefetzen erkannt hast...


Padavan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22: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