![]() |
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
Was übergibst Du denn als sList an die Prozedur? Und wieso als Var-Parameter?
|
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
Ich übergebe ihr ein nicht initialisiertes s:TSrings. Also "leer".
Stimmt, sList als var zu deklarieren war sinnlos. Aber daran haperts nicht.
Delphi-Quellcode:
Stimmt die Benutzung mit s nicht? Habe mit TStrings vorher noch nix gemacht. Allerdings scheint es keine Syntax Fehler zu geben...
ListSubDirs(TempDownloadDir, s);
|
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
Du kannst entweder z.B. ComboBox.Items übergeben oder Dir eine Stringlist erstellen.
Delphi-Quellcode:
var sl: TStringlist;
begin sl := TStringlist.Create; try ListSubDirs(TempDownloadDir,sl); ... finally sl.Free; end; end; |
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
Irgendwie traurig, ich schlag mich den ganzen Nachmittag mit so einem trivialen Problem rum. Warum gibt es nicht einfach eine Standard Funktion, womit man ein Verzeichnis in ein anderes verschieben kann?
Das ist echt zum Mäuse melken. Aufruf:
Delphi-Quellcode:
Das MoveDir funktioniert (getestet) zb. so MoveDir(h1, h2); einwandfrei...Nur nicht in der Schleife mit der StringListe...
var
i:integer; s:TStringList; h1, h2:string; begin //alles in TempDownloadDir nach DownloadDir kopieren, danach TempDownloadDir löschen s:=TStringList.Create; ListSubDirs(TempDownloadDir, s); h1:=TempDownloadDir; //letzten Backslash abschneiden Delete(h1, Length(h1), 1); h2:=DownloadDir; //letzten Backslash abschneiden Delete(h2, Length(h2), 1); try for i:=0 to s.Count-1 do MoveDir(h1+s[i], h2+s[i]); finally s.Free; end; DeleteFile(h1); end; Ich mache da morgen weiter und werd mal schaun, was überhaupt in der Liste drinne steht. Kein Bock jetzt mehr. Danke für die Hilfe DaddyH. |
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
Hättest Du mal früher gesagt, was Du machen möchtest, hätte ich noch
![]() |
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
Die Suche habe ich auch schon kräftig durchforstet.
Ich erklär vll mal kurz mein Anliegen: es gibt nen Download und nen TempDownload Ordner. TempDownload wird beim Programmstart erstellt und beim schließen wieder gelöscht. Das klappt. Jetzt will ich, das alle Ordner die sich in TempDownload befinden nach Download befördert werden (wenn dafür die Option vom Nutzer getroffen wurde). Das MoveDir funktioniert ja einwandfrei. Nur muss ich ja möglicherweise nicht nur einen Ordner im tempDownload verschieben, sondern auch mehrere, deswegen muss ich MoveDir nicht auf TempDownload, sondern auf die einzelnen Ordner anwenden. Dafür brauch ich wiederum deren Namen. Und da ist mein Problem. Die Funktion für die Ordnernamenbestimmung funktioniert nicht. Kommen zwar keine Fehler aber es wird auch garnichts in die String-Liste geschrieben...Hab das jetzt mal getestet. Naja und für meinen Fall gibts noch nix im Forum :) Wie gesagt, bis morgen. Trotzdem könnte vll nochmal jmd schaun, ob meine StringList-Item-Ansteuerung so richtig ist und funktioniert das überhaupt, das wenn die ListSubDirs einen TStrings erwartet aber eine TStringList bekommt? Wie gesagt kenn mich da leider garnicht aus. Grüße |
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
TStringlist ist ein Nachkomme von TStrings, somit automatisch auch vom Typ TStrings.
|
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
Es werden keine Elemente in die StringListe gepackt. Der Count ist 0.
|
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
Delphi-Quellcode:
Ohne Gewähr, da aus dem Kopf getippt.
procedure ListSubDirs(sDir: string; const sList: TStrings);
var Rec: TSearchRec; begin sList.BeginUpdate; try sList.Clear; if FindFirst(IncludeTrailingPathDelimiter(sDir) + '*.*', faDirectory or faReadOnly or faHidden or faArchive, Rec) = 0 then begin repeat if ((Rec.Attr and faDirectory) = faDirectory) and (Rec.Name <> '.') and (Rec.Name <> '..') then sList.Add(Rec.Name); until FindNext(Rec) <> 0; SysUtils.FindClose(Rec); end; finally sList.EndUpdate; end; end; |
Re: Verzechniss: alle beinhaltenden Ordner ermitteln?
Okay, die Prozedur funktioniert. 1a!
Ich glaube mit der Delphi Hilfe wäre ich auch von alleine auf die ganzen fehlenden Bedingungen gekommen :S. Aber so. Naja vielen Dank. Jetzt komm ich endlich mit meinem wirklichen Problem weiter :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:14 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-2025 by Thomas Breitkreuz