Entwickler-Ecke
Dateizugriff - Hauptverzeichnis rausfinden
mimi - So 26.09.04 14:16
Titel: Hauptverzeichnis rausfinden
Hallo,
wie kann ich aus folgender dateiliste das hauptverzeichnis finden
| Zitat: |
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\00.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\01.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\02.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\03.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\04.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\05.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\06.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\01.txt');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\02.txt');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\03.txt');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\01.txt');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\02.txt');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\03.txt');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\01.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\02.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\03.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\04.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\05.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\06.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\07.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\08.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\09.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\10.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\11.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\12.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\13.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\14.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\15.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\16.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\17.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\18.mid');
|
es kann auch vorkommen, das "daten" nicht das hauptverzeichnis ist sondern evlt. auch eins drunter. ich dachte zuerst immer das lezte verzeichnis, aber das kommt ja auch nicht hin, also wie kann ich das hauptverzeichnis raußsuchen ohne das ich vohrer weiß welches das ist ?
Udontknow - Di 28.09.04 13:23
Per ExtractFilePath kriegst du schonmal das File weg. Anschliessend musst du nur alle Dateien einmal durchgehen und schauen, ob der Path-String ein Teilstring des aktuellen Pfades ist... :nut: Äh, irgendwie blöd beschrieben, besser mal Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| Function HauptPfad(FileList:TStrings):String; var i:integer; begin Result:=ExtractFilePath(FileList[i]); for i:=1 to FileList.Count-1 do if Pos(ExtractFilePath(FileList[i]),HauptPfad)=1 then Result:=ExtractFilePath(FileList[i]); end; |
Cu,
Udontknow
mimi - Sa 02.10.04 19:39
fast, nur: was ist wenn es mehre hauptverzeichnise gibt wie in meinem beispiel du hast z.b. so eine verzeichnis strucktur:
| Zitat: |
d:\eigene\daten\test1
d:\eigene\daten\test2
d:\eienge\daten\delphi\test1
d:\eienge\daten\delphi\test2
|
das ist z.b. meine verzeichnisliste
bei den ersten beiden ist ja daten das "hauptverzeichnis" und bei den lezten beiden "delphi"
.Chef - Sa 02.10.04 19:44
Das ist logisch nicht schlüssig, da die von dir benannten Hauptverzeichnisse sich durch kein Kriterium von ihren darüberliegenden Verzechnissen unterscheiden. Wieso z.B. sollte nicht "daten" das Hauptverzeichnis für alle Einträge sein?
Gausi - Mo 04.10.04 11:40
Du suchst also das Verzeichnis, in dem man alle aufgelisteten Dateien finden kann. Gewissermassen den "längsten gemeinsamen Verzeichnisnamen" oder so. Also den Teil der Dateinamen, der am Anfang von allen Dateinamen steht. Probiers doch so (ist evtl. nicht das schnellste)
Quelltext
1: 2: 3: 4:
| - Nimm vom ersten Eintrag den teilstring vom Anfang bis zum ersten "\" - Überprüfe, ob alle Dateinamen in der Liste mit diesem Teilstring anfangen - Wenn ja, mache weiter, und nehme den Teilstring bis zum nächsten "\" - Wenn nein, dann war das eine Verzeichnisebene zu tief, und das zuletzt gefundene war das Hauptverzeichnis |
Kann man natürlich auch von hinten aufziehen. Oder hab ich dich falsch verstanden?
mimi - Sa 09.10.04 23:38
@.Chef
daten ist doch das hauptverzeichnis *G*
@Gausi
ich verstehe dich nicht
.Chef - Sa 09.10.04 23:43
Ich markiere den entscheidenden Teil mal fett:
| mimi hat folgendes geschrieben: |
fast, nur: was ist wenn es mehre hauptverzeichnise gibt wie in meinem beispiel du hast z.b. so eine verzeichnis strucktur:
| Zitat: |
d:\eigene\daten\test1
d:\eigene\daten\test2
d:\eienge\daten\delphi\test1
d:\eienge\daten\delphi\test2
|
das ist z.b. meine verzeichnisliste
bei den ersten beiden ist ja daten das "hauptverzeichnis" und bei den lezten beiden "delphi" |
Oder doch so?
| mimi hat folgendes geschrieben: |
@.Chef
daten ist doch das hauptverzeichnis *G* |
So, mimi, nun musst du dich entscheiden ... (Stell dir diese Herzblatt-Susi-Stimme dazu vor)
mimi - So 10.10.04 08:19
ok, hast recht, aber wie machen das dann richtige packprogamme wie z.b. winACE ???
.Chef - So 10.10.04 08:53
| mimi hat folgendes geschrieben: |
| ok, hast recht, aber wie machen das dann richtige packprogamme wie z.b. winACE ??? |
Wie machen die
was? Worauf willst du überhaupt hinaus? Platzsparendes Speichern einer Verzeichnisstruktur ist was völlig anderes als nur das Hauptverzeichnis zu finden.
mimi - So 10.10.04 08:58
ja weiß ich auch. ich möchte nur ein hauptverzeichnis rausfinden aus einer verzeichnis liste die freiwählbar ist und die auch mehre hauptverzeichnise erhalten kann
GTA-Place - So 10.10.04 09:52
Kapier ich nicht ^^
Gausi - So 10.10.04 10:20
Das mit den mehreren Hauptverzeichnissen kapier ich auch nicht. Aber ich kann nochmal meine Idee erläutern.
Nehmen wir an, du hast folgende Verzeichnisliste
Quelltext
1: 2: 3: 4:
| d:\eienge\daten\delphi\test1 d:\eienge\daten\delphi\test2 d:\eigene\daten\test1 d:\eigene\daten\test2 |
Jetzt schauen wir uns zunächst das oberste verzeichnis an. "d:\". Ist dieses der Beginn jedes Dateinamen? ja. Also schauen wir uns den ersten Dateinamen weiter an. "d:\eienge\". Auch dies ist der Beginn jedes Dateinamen, wir können also noch weiter gehen. "d:\eienge\daten\". Alles klar, weiter. "d:\eienge\daten\delphi\". Die ersten beiden fangen so an, aber die letzten drei nicht. Also war das vorhergehende, nämlich "d:\eienge\daten\" das Hauptverzeichnis.
tommie-lie - So 10.10.04 10:47
Wie machen das Packprogramme:
Man packt normalerweise einen Ordner, mitsamt seinen Unterordnern. Wähle ich jetzt in Winzip den Ordner "d:\eigene\daten\" aus und sage "packen", dann weiß Winzip, daß "d:\eigene\daten\" mein Hauptverzeichnis ist. Würde ich jetzt einen Packer nachprogrammieren, würde ich alle Dateien aus diesem Ordner suchen und "d:\eigene\daten\" abschneiden, was ich erhalte sind relative Pfade zu dem Zielort, zu dem ich auch später wieder entpacken würde. Aus
| Zitat: |
d:\eigene\daten\test1
d:\eigene\daten\test2
d:\eienge\daten\delphi\test1
d:\eienge\daten\delphi\test2 |
würde
| Zitat: |
test1
test2
delphi\test1
delphi\test2 |
, ich habe nur den Pfad abgeschnitten, den der User mir gesagt hat, den ich packen soll, also brauche ich mich gar nicht um das "Finden" eines gemeinsamen Verzeichnisses kümmern, ich mach' einfach das, was man von mir will.
Jetzt, wo ich die relativen Pfade habe, habe ich zwei Möglichkeiten: Entweder ich speichere den relativen Pfad zu jeder Datei (einfach, größerer Platzbedarf), oder ich lege mein Archivformat so an, daß in diesem ein Baum mit allen Verzeichnissen und Unterverzeichnissen liegt (komplexer, dafür platzsparender).
mimi - So 10.10.04 11:20
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\00.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\01.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\02.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\03.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\04.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\05.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\06.mid');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\01.txt'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\02.txt'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\03.txt');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\01.txt'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\02.txt'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\03.txt');
TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\01.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\02.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\03.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\04.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\05.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\06.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\07.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\08.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\09.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\10.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\11.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\12.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\13.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\14.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\15.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\16.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\17.mid'); TA.AI.FileListe.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\18.mid'); |
ich habe so eine verzeichnis liste(kann z.b. auch vorkommen das sie nicht sotiert ist) aber ich glaube man müste einfach "nur" schauen (beim packen) ob verzeichnis gleich sind bzw. irgendwo unterscheiden sie sich ja immer und bis dahin ich werde das mal ausprobieren(gleich)
Moderiert von
Christian S.: Delphi-Tags hinzugefügt.
Delete - So 10.10.04 11:46
Ähm, ich sehe dein Prblem nicht ganz (wenn es überhaupt noch besteht).
Gausi hat einen erstklassigen Lösungsansatz geliefert, der genau dein beschriebenes Problem behandelt.
mimi - So 10.10.04 11:50
so ich glaube ich habs:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| for i:=0 to f.count-1 do begin for t:=NumToken(f.strings[i],'\') downto 1 do begin str1:=GetToken(f.strings[i],'\',t-1);
if i+1 <= f.count-1 then m:=+1 else m:=0;
str2:=GetToken(f.strings[i+m],'\',t-1);
if str1 = str2 then begin if ListBox1.items.IndexOf(str1) = -1 then ListBox1.Items.add(str1); break; end; end; end; |
mimi - So 10.10.04 12:03
so, ich habe die funktion noch etwas verbessert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| for i:=0 to f.count-1 do begin for t:=NumToken(f.strings[i],'\') downto 1 do begin str1:=GetToken(f.strings[i],'\',t-1);
if i+1 <= f.count-1 then m:=+1 else m:=0;
str2:=GetToken(f.strings[i+m],'\',t-1);
if str1 = str2 then begin lc:=0;
dir:=F.Strings[i]; for l:=pos(str1,dir) to StrLen(PChar(dir)) do begin if dir[l] = '\' then begin lc:=l; break; end; end; dir:=Copy(dir,lc,Length(f.strings[i])); if ListBox1.items.IndexOf(str1) = -1 then ListBox1.Items.add(dir); break; end;
end; end; |
nun pasiert genau das was ich wollte, evtl. kann man das noch optimieren, was meint ihr ???
mimi - So 10.10.04 12:08
@Elite
das problem war einfach das ich nicht wuste wie ich aus einer langen verzeichnise liste das hauptverzeichnis finde, aber das habe ich jetzt *G*
mimi - So 07.11.04 11:40
es geht leider immer noch nicht so recht, als ich letzten diese funtkion einsetzten wollte sind mir noch einige fehler aufgefallen z.b. solche:
ich habe z.b. so eine datei liste:
| Zitat: |
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\01.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\02.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\test1\03.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\00.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\01.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\02.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\03.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\04.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\05.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\06.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\01.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\02.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\03.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\01.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\02.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\03.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\04.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\05.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\06.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\07.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\08.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\09.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\10.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\11.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\12.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\13.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\14.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\15.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\16.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\17.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\18.mid');
|
meine funktion würde daraus folgendes machen:
| Zitat: |
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\01.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test1\02.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\test1\03.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\00.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\01.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\02.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\03.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\04.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\05.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\06.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\01.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\02.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test2\03.txt');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\01.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\02.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\03.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\04.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\05.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\06.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\07.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\08.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\09.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\10.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\11.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\12.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\13.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\14.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\15.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\16.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\17.mid');
f.Add('D:\Daten\eigene\delphi\Archiver\daten\test3\18.mid');
|
meine funktion war folgende:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| for i:=0 to f.count-1 do begin str1:=''; str2:=''; dir:=''; for t:=NumToken(f.strings[i],'\') downto 1 do begin str1:=GetToken(f.strings[i],'\',t-1);
if i+1 < f.count-1 then m:=+1 else m:=0;
if NumToken(f.strings[i+m],'\') <= NumToken(f.strings[i],'\') then m1:=NumToken(f.strings[i+m],'\')-1 else m1:=NumToken(f.strings[i],'\')-1;
str2:=GetToken(f.strings[i+m],'\',m1);
if str1 = str2 then begin dir:=F.Strings[i];
dir:=Copy(dir,pos(str2,dir),Length(f.strings[i]));
if ListBox1.items.IndexOf(str1) = -1 then ListBox1.Items.add(dir); break; end;
end; end; |
mimi - So 07.11.04 11:42
nachtrag(ich konnte meinen beitrag nicht mehr bearbeiten nach dem ich ihn gesendet hatt, keine anaung warum)
meine funktion würde daraus folgendes machen:
| Zitat: |
test1\01.txt
test1\02.txt
daten\00.mid
daten\01.mid
daten\02.mid
daten\03.mid
daten\04.mid
daten\05.mid
daten\06.mid
test2\01.txt
test2\02.txt
test3\01.mid
test3\02.mid
test3\03.mid
test3\04.mid
test3\05.mid
test3\06.mid
test3\07.mid
test3\08.mid
test3\09.mid
test3\10.mid
test3\11.mid
test3\12.mid
test3\13.mid
test3\14.mid
test3\15.mid
test3\16.mid
test3\17.mid
test3\18.mid
|
Delete - So 07.11.04 20:51
Sag mal, das was tommie-lie geschrieben hat, hast du irgendwie nicht begriffen oder? Denn das ist genau das, was du brauchst. :roll:
mimi - Mo 08.11.04 17:36
Ja wenn ich es verstanden hätte, hätte ich nicht nach gefragt *G*
das problem ist einfach, dass es nicht nur verzeichnise seinen können sondern auch eine Datei liste wie z.b. ich sie benutzt hatte !!!
Delete - Mo 08.11.04 17:59
Was ist daran so schwer? Wenn du den Ordnr c:\aaa\bbb mit all seinen Unterordnern packen willst dann schneidest du eben den Pfad bis dahin bei allen anderen Unterordnern ab. Aus c:\aaa\bbb\ccc\test.txt wird dann eben ccc\test.txt und schon hast du deine relativen Pfadangaben.
mimi - Fr 12.11.04 18:18
8) ich habe aber keine dirrkten verzeichnse sonden eine dateiliste wo ich dies herrausfinden möchte z.b.:
D:\test1\1.tsdt
D:\test2\2.txt
E:\Test1\Test2\Test3\Text1.txt
E:\Test1\Test2\Test3\Text2.txt
E:\Test1\Test2\Test3\Text3.txt
sowas habe ich z.b. !!!
wenn ich so ein verzeichnis hätte: d:\test1\text\... währe das auch kein problem
IngoD7 - Fr 12.11.04 18:59
| mimi hat folgendes geschrieben: |
8) ich habe aber keine dirrkten verzeichnse sonden eine dateiliste wo ich dies herrausfinden möchte z.b.:
D:\test1\1.tsdt
D:\test2\2.txt
E:\Test1\Test2\Test3\Text1.txt
E:\Test1\Test2\Test3\Text2.txt
E:\Test1\Test2\Test3\Text3.txt
|
Wenn ich nur annähernd verstanden habe, was du mit "Hauptverzeichnis" meinst, dann würde ich sagen:
Diese Liste hat kein Hauptverzeichnis.
Ausser vielleicht "Arbeitsplatz" ... :twisted:
mimi - Mo 15.11.04 17:35
doch hat sie und zwar test3 und die andren einträge haben keinen
Delete - Mo 15.11.04 17:40
Hä? "test3" kommt in den Pfaden von Laufwerk D nicht vor. Irgendwie verstehe ich dann nichts o ganz, was du als Hauptverzeichnis bezeichnest. Der kleinste gemeinsame Nenner ist hier der Arbeitsplatz.
IngoD7 - Mo 15.11.04 18:06
| Luckie hat folgendes geschrieben: |
| Der kleinste gemeinsame Nenner ist hier der Arbeitsplatz. |
Wenigstens wissen wir jetzt, dass mimi den gar nicht sucht.
Also mimi, definiere bitte mal (möglichst verständlich und ausführlich), was
du unter "Hauptverzeichnis" verstehst.
Besonders da du sagst - wie ich nach nochmaligen Lesen des Threads gefunden habe -, dass es auch
mehrere "Hauptverzeichnisse" in der zu untersuchenden Liste geben kann. :shock:
mimi - Sa 20.11.04 20:31
OK, also:
c:\windows\temp\tmp1.tmp
temp\ ist das hauptverzeihcnis
c:\test1\test0\txt.1
c:\test1\test0\txt.2
c:\test1\test0\txt.3
c:\test1\test0\txt.4
hier ist test0 das hauptverzeichnis
c:\test0\test0\test1\txt.1
c:\test0\test0\txt.2
c:\test0\test1\txt.3
hier ist test0 das hauptverzeichnis
ich hoffe ihr wisst jetzt was ich mit hauptverzeichnis meine !
.Chef - So 21.11.04 12:49
Getestet, aber nicht optimiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| function Hauptverzeichnis(lb : TListBox) : string; var a : Integer; s : string; begin Result:=''; if lb.Items.Count = 0 then Exit; s:=lb.Items[0]; while s[Length(s)] <> '\' do s:=Copy(s,1,Length(s)-1); Result:=s; if lb.Items.Count > 1 then for a:=1 to lb.Items.Count-1 do begin s:=lb.Items[a]; while Pos(s,Result) = 0 do begin s:=Copy(s,1,Length(s)-1); while s[Length(s)] <> '\' do s:=Copy(s,1,Length(s)-1); end; Result:=s; end; end; |
mimi - So 21.11.04 14:16
danke, werde ich testen *G*
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!