| Autor |
Beitrag |
Akut-Programming
      
Beiträge: 69
WinXP, Win2000
Delphi 7 Enterprise, Delphi 5 Prof.
|
Verfasst: Fr 22.08.03 09:40
Moin!
Ich habe hier aus dem forum Source gefunden, mit dem man nach Dateien suchen kann.
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: 35: 36:
| Procedure FindFiles (aPath, aFindMask: String; aWithSub: Boolean; aResult: tStrings); Var FindRec: tSearchRec; Begin If (aPath = '') or (aFindMask = '') or Not Assigned (aResult) Then Exit; If aPath[Length (aPath)] <> '\' Then aPath := aPath + '\'; If FindFirst (aPath + aFindMask, faAnyFile, FindRec) = 0 Then Repeat If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then aResult.Add (aPath + FindRec.Name); Until FindNext (FindRec) <> 0; FindClose (FindRec); If Not aWithSub Then Exit;
If FindFirst (aPath + '*.*', faAnyFile, FindRec) = 0 Then Repeat If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then If Boolean (FindRec.Attr and faDirectory) Then FindFiles (aPath + FindRec.Name, aFindMask, aWithSub, aResult); Until FindNext (FindRec) <> 0; FindClose (FindRec); End;
FindFiles (OrtusShellTreeView2.SelectedItems.DisplayNames.Text, Edit1.Text, True, ListBox1.Items);
OrtusShellTreeView2.SelectedItems.DisplayNames.Text Edit1.Text ListBox1.Items |
Mit Hilfe dieser Prozedur kann man sich das Suchergebnis dann in einer ListBox anzeigen lassen. Nur wollte ich es so machen, das man nich nur einen festen Wert für den Ordner in den gesucht werden soll hat. Sondern wollt es so haben, das ich den Ordner mit Hilfe einer Komponente auswählen kann. Nur wenn ich den Text des Selected Item der Komponente verwenden will, bekomme ich immer nur z.B. "lokaler Datenträger C". Damit kann die Funktion aber nichts anfangen, da die denk, das es ein Ordner sei. Da es diesen aber nicht gibt, bekomme ich kein Ergebnis.
Was ich jetzt wissen will, kann ich irgendwie an die "wirkliche" Bezeichnung kommen??(Bsp. für Lokaler Datenträger C dann eben richtig C:\, oder der Arbeitsplatz, hat ja eigentlich auch ne ganz andere Bezeichnung)Das müsste doch gehen, oder?
Moderiert von Tino: Delphi-Tags hinzugefügt.
_________________ Gruß,
Akut - Programming
Zuletzt bearbeitet von Akut-Programming am So 24.08.03 16:19, insgesamt 2-mal bearbeitet
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 22.08.03 12:38
| Akut-Programming hat folgendes geschrieben: | | Nur wollte ich es so machen, das man nich nur einen festen Wert für den Ordner in den gesucht werden soll hat. Sondern wollt es so haben, das ich den Ordner mit Hilfe einer Komponente auswählen kann. |
Was glaubst du, was da momentan passiert? Du hast es doch sogar gepostet:
Delphi-Quelltext 1: 2: 3: 4:
| FindFiles (OrtusShellTreeView2.SelectedItems.DisplayNames.Text, Edit1.Text, True, ListBox1.Items); |
Damit wählst du doch auch einem ShellTreeView einen Ordner aus, der dann entsprechend durchsucht wird. Das ist doch dann auch kein fester Wert, sondern es liegt beim Anwender, was er da aussucht.
| Zitat: | | Was ich jetzt wissen will, kann ich irgendwie an die "wirkliche" Bezeichnung kommen??(Bsp. für Lokaler Datenträger C dann eben richtig C:\, |
Ich kenne mich mit dem ShellTreeView nicht aus, aber neben dem Displaynamen sollte es auch einen echten Namen ("C:\" in dem Fall) geben.
| Zitat: | | oder der Arbeitsplatz, hat ja eigentlich auch ne ganz andere Bezeichnung)Das müsste doch gehen, oder? |
Nicht für den Arbeitsplatz, weil das ein virtueller Ordner ist, den´s auf der Platte nicht gibt.
|
|
Akut-Programming 
      
Beiträge: 69
WinXP, Win2000
Delphi 7 Enterprise, Delphi 5 Prof.
|
Verfasst: Fr 22.08.03 12:52
| MathiasSimmack hat folgendes geschrieben: |
...Was glaubst du, was da momentan passiert? Du hast es doch sogar gepostet... |
Is mir klar, hab ich auch nur zur besseren Verständnis gepostet!!
| Akut-Programming hat folgendes geschrieben: | | Was ich jetzt wissen will, kann ich irgendwie an die "wirkliche" Bezeichnung kommen??(Bsp. für Lokaler Datenträger C dann eben richtig C:\) |
| MathiasSimmack hat folgendes geschrieben: |
Ich kenne mich mit dem ShellTreeView nicht aus, aber neben dem Displaynamen sollte es auch einen echten Namen ("C:\" in dem Fall) geben. |
Und wie bekomm ich den echten Namen aus der ShellTreeView?? Wie wärs mal mit genauer lesen. Das was du mir hier geschrieben hast, hilft überhaupt nicht!!
| MathiasSimmack hat folgendes geschrieben: | | Nicht für den Arbeitsplatz, weil das ein virtueller Ordner ist, den´s auf der Platte nicht gibt. |
Na achne, der wär ich nie drauf gekommen, das es den Ordner nich gibt. Deshalb will ich wissen, wie der "virtuelle Ornder" heißt. In der Registry stehen doch alle momentan definierten Laufwerke, mit ihre Anzeige-Bezeichnung. Nur muss es doch auch ne Funktion geben, die dann Anhand eines ausgewählten Items (z.B. in der ShellTreeView "Arbeitsplatz") die Bezeichnung zurück gibt.
@Matthias: Wenn du die ortusCompos hast!? Würdest du merken was ich meine. Die geben nämlich bei jeder Eigenschaft in der man sich den Text des selected Item ausgeben lassen will immer nur die virtuelle Bezeichnung wieder zurück und nicht die, mit denen Windows arbeitet, daher kann ich auch keine Suche durchführen!!
jetzt verständlicher???
_________________ Gruß,
Akut - Programming
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 22.08.03 13:35
| Akut-Programming hat folgendes geschrieben: | Und wie bekomm ich den echten Namen aus der ShellTreeView?? Wie wärs mal mit genauer lesen. Das was du mir hier geschrieben hast, hilft überhaupt nicht!!
| MathiasSimmack hat folgendes geschrieben: | | Nicht für den Arbeitsplatz, weil das ein virtueller Ordner ist, den´s auf der Platte nicht gibt. |
Na achne, der wär ich nie drauf gekommen, das es den Ordner nich gibt. Deshalb will ich wissen, wie der "virtuelle Ornder" heißt. |
Und wozu? Willst du Dateien in einem virtuellen Ordner suchen, der überhaupt keine Dateien enthält? Der Arbeitsplatz fasst verschiedene Elemente zusammen. Aber das muss ich dir ja wohl nicht erklären. Am Ende zählt nur, dass dir speziell in diesem Fall FindFirst und Co. nicht helfen werden.
Wenn du eine Delphi-Version >= 6 hast, dann probier doch mal die dort enthaltenen Komponenten ShellListView und ShellTreeView aus. Die entsprechen dem Windows-Explorer, und mit der ShellListView sparst du dir das Suchen, weil du beides (SLV und STV) miteinander verbinden kannst.
|
|
Akut-Programming 
      
Beiträge: 69
WinXP, Win2000
Delphi 7 Enterprise, Delphi 5 Prof.
|
Verfasst: Fr 22.08.03 13:39
habs jetzt zum Teil hinbekommen! nur das er irgendwie nicht in Ordnern wie "Eigene Dateien" sucht. Die Suche lässt sich nur mit phsyikalischen Laufwerken durchführen. Habs jetzt erstma mit ner Combo gemacht. Mal gucken, den Rest werdsch auch noch rausfinden.  Danke erstmal!!
_________________ Gruß,
Akut - Programming
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 22.08.03 21:22
Du hast doch D7 Enterprise. Probier doch mal deren Shell-Komponenten. Da gibt´s IMHO eine Möglichkeit, an die echten Namen der Ordner ranzukommen. Da ich nur D5 habe kann ich dir da leider nicht weiterhelfen.
Vielleicht liest das ja jemand, der schon mal mit Shell-TreeView und -ListView gearbeitet hat. Der/die könnte dir genaueres sagen.
Übrigens: Könntest du mir den Gefallen tun und in deinem ersten Beitrag die Zeile
Delphi-Quelltext 1:
| If Boolean (FindRec.Attr and faDirectory) Then FindFiles ( ... |
mal mit einem Zeilenumbruch versehen. Das wäre prima, dann wird der Thread im Fenster nicht so breit. Ich habe schon 1024x768, aber es soll noch Leute mit 800x600 geben. 
|
|
|