AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TPathfinderFrame und TFilesearcher

Ein Thema von Delbor · begonnen am 22. Jan 2018 · letzter Beitrag vom 23. Jan 2018
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

TPathfinderFrame und TFilesearcher

  Alt 22. Jan 2018, 12:16
Delphi-Version: XE8
Hi zusammen

Seit längerem verwende ich die von DeddyH entwickelte Komponente TFileSearcher.

Mit der Komponente mitgeliefert werden auch einige Demos, unter anderem auch eine solche, die die gefundenen Dateien und deren kompletten Pfade in einer Listview anzeigt. Mit der Anwendung lassen sich sämtliche Komponenteneinstellungen verändern, mit denen festgelegt werden kann, welche Dateien gefunden werden sollen. So lässt sich auch das Property Filemask zur Laufzeit verändern. Defaultmässig ist dabei '*.*' angegeben - damit werden sämtliche Dateien beliebiger Endung gefunden.
Wenn ich diese Einstellung zur Laufzeit der Demo durch '*.pdf*' ersetze, findet mir die Komponente sämtliche Dateien mit dieser Endung, die sich im Startverzeichnis (Rootdir) befinden.
Soweit, so gut.

Wenn ich nun aber in meinem PathfinderFrame die Komponente einsetze, 'verhält sie sich richtig mies' - mit der Defaulteinstellung '*.*' findet sie alles. Wenn ich allerdings diese Einstellung ändere, geschieht nichts.
Um es genauer zu sagen:

Delphi-Quellcode:
procedure TPathFinderFrame.FileMaskInit;
  var i: integer;
begin
  for i := Low(VALID_EXTENSIONS) to High(VALID_EXTENSIONS) do
  begin
    if i = 5 then
      CmbxFileType.Text := VALID_EXTENSIONS[i]; //IntToStr(FDefaultType);
    CmbxFileType.AddItem(VALID_EXTENSIONS[i], nil);
  end;
  PathFinder1.FileMask := '*.pdf*'; //VALID_EXTENSIONS[5];
end;

Mit dieser bei Programmstart aufgerufenen Prozedur stelle ich den Defaultwert von PathFinder1.FileMask auf '*.pdf*' ein. TPathFinder ist die selbe Komponente (keine Nachkomme) wie TFilesearcher. Letztere habe ich erst vor einiggen Tagen von Deddh's Webseite heruntergeladen und in TPathfinder umbenannt. Hintergrund ist: Ich hatte damals, zur Entwicklungszeit, einige Tests mit der Komponente durchgeführt und war mir jetzt nicht mehr sicher, dass ich auch wirklich die finale Version der Komponente installiert habe. TPathFinder entspricht also genau der TFileSeacher-Komponente, wie sie bei DeddyH heruntergeladen werden kann.

Trotzdem liegt genau hier der Haken - rufe ich obige Prozedur aus dem Constructor meines TPathfinderFrames auf, wird zur Laufzeit die Suche gestartete und gleich wieder beendet. Im Treeview verschwindet das Chevron desjenigen Ordners, den ich erweitern wollte, und Dateien und Unterordner werden nicht angezeigt.

Dasselbe geschieht, wenn ich zur Designzeit den Wert des Filemask-Propertys im OI auf '*.pdf*' ändere (natürlich ohne die Hochkommas) und obige Prozedure nicht aufrufe.

Leider habe ich die entscheidende Stelle trotz mehrmaligem Durchsteppen nicht gefunden. Wobei ich allerdings zugeben muss: sobald ich beim Durchsteppen in den Delphi-Unit lande, beende ich, indem ich nun F9 drücke und damit wieder bei einem in meiner Anwendung gesetzten Haltepunkt lande, da ich in diesen Units keinen Hinweis auf den Fehler erwarte.

Im Verlauf meiner Suche nach einer Lösung des Problems habe ich allerdings noch etwas anderes entdeckt. Ich hatte mir einen Frame gebaut, der die in der ListviewDemo enthaltenen Masken zur Einstellung der Suchparameter enthält.
Dieser Frame enthält folgende Prozedur:

Delphi-Quellcode:
procedure TSearchOptionsFrame.CmbxSearchTypeCloseUp(Sender: TObject);
begin
  FSearchType := CmbxSearchType.Text;
// FSearchType := TSearchType(CmbxSearchType.ItemIndex);;
end;
Hier erfahre ich per Hint, dass TSearchType in der Unit Vcl.ComCtrls definiert ist und da nur 2 Elemente enthält. Allerdings enthält der Uses-Abschnitt noch keinerlei Hinweis auf die Komponenten-Unit oder die DDFileUtils.
Auf den oben beschriebenen Fehler hat dies allerdings keinen Einfluss, da der Frame zwar Teil des Projektes, aber noch nicht in Betrieb ist. Allerdings stellt sich mir die Frage, wie ich hier Konflikte vermeiden kann.

Über einen Hilfreichen Hinweis zu meinem Problem würde ich mich sehr freuen.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (22. Jan 2018 um 12:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: TPathfinderFrame und TFilesearcher

  Alt 22. Jan 2018, 12:40
Hast Du die Komponente zur Designzeit aufs Formular bzw. den Frame gesetzt, oder erzeugst Du sie dynamisch?
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
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: TPathfinderFrame und TFilesearcher

  Alt 22. Jan 2018, 13:11
High DeddyH

Die Komponente wurde zur Designtime gesetzt.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: TPathfinderFrame und TFilesearcher

  Alt 22. Jan 2018, 13:19
Wenn es ein Problem mit dem gleich benannten Datentyp sein sollte, musst Du den richtigen voll qualifizieren:
FSearchType: FileSearch.TSearchType; oder Dir einen Alias dafür erstellen und den benutzen(auch wieder voll qualifiziert).
Delphi-Quellcode:
type
  TMySearchType = FileSearch.TSearchType;

  TWasWeissIchFrame = class(TFrame)
  ...
  private
    FSearchType: TMySearchType;
Dann zur Maske: *.pdf* findet alle Dateien und/oder Ordner (je Einstellung des Suchtyps), die irgendwo im Namen die Zeichenfolge ".pdf" enthalten, und nicht nur solche mit der Endung pdf. Ist das so gewollt?
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
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TPathfinderFrame und TFilesearcher

  Alt 22. Jan 2018, 13:57
Hi DeddyH

Zitat:
Dann zur Maske: *.pdf* findet alle Dateien und/oder Ordner (je Einstellung des Suchtyps), die irgendwo im Namen die Zeichenfolge ".pdf" enthalten, und nicht nur solche mit der Endung pdf. Ist das so gewollt?
Nein - bei der Angabe der Maske habe ich mich am Defaultwert (*.* ) orientiert und nach dem Punkt die Endung notiert. ***

Sag jetzt bloss nicht , ich hab da des guten zuviel getan
Zitat:
Wenn es ein Problem mit dem gleich benannten Datentyp sein sollte, musst Du den richtigen voll qualifizieren:

Ich habe bemerkt, dass da, wo du diesen Typ einsetzt, Comctrl am Anfang der Usesliste steht, die Komponentenunits aber ziemlich am Schluss.
Ist das zuverlässig?

Gruss
Delbor

*** ÄÄhm - der Defaultwert findet also alles, was irgendwo einen Punkt hat? Dan ist der 2. Stern zuviel?

PS: In der Demo habe ich allerdings auch *.pdf* angegeben
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor (22. Jan 2018 um 14:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: TPathfinderFrame und TFilesearcher

  Alt 22. Jan 2018, 14:05
Wenn mehrere Units Typen desselben Namens deklarieren, gewinnt diejenige, die als letzte eingebunden wird. Wirklich zuverlässig ist der gezeigte Weg mit dem voll qualifizierten Namen, dann weiß der Compiler exakt, welcher Typ denn tatsächlich gemeint ist. Und wenn Du nur PDF-Dateien suchst, wäre *.pdf die richtige Maske (ohne den abschließenden *).
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
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TPathfinderFrame und TFilesearcher

  Alt 22. Jan 2018, 14:22
Hi DeddyH

Zitat:
Wirklich zuverlässig ist der gezeigte Weg mit dem voll qualifizierten Namen

Ok, Danke!
Ich habe die Maske auch mal ohne alle Sterne und ohne Punkt definiert -da findet 'er' gerade mal den Ordner PDF...

Hab vielen Dank für die Hilfe!

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: TPathfinderFrame und TFilesearcher

  Alt 22. Jan 2018, 15:41
Kurze Maskenerklärungskundendingens:

Dateimasken sind im Prinzip genauso aufgebaut, wie ein vollständiger Dateiname. Dabei trennt der "." den Dateinamen von der Dateiendung (<Dateiname>.<Dateiendung>).

Der * steht für "eine Zeichenfolge beliebiger Länge oder keine".

Beispiele:

*.* beliebiger Dateiname, beliebige Dateiendung (findet alle Dateien und Verzeichnisse)
*.pdf beliebiger Dateiname, mit der Dateiendung pdf
wupti.* Dateiname "wupti" (Copyright siehe Unten), beliebige Dateiendung (also alle Dateien mit namen wupti)
wupti*.* Der Dateiname muss mit wupti beginnen, der Rest is egal
*wupti.* Der Dateiname muss mit wupti enden, der Rest is egal
*.p* beliebiger Dateiname, die Dateiendung muss mit p anfangen
*.*p beliebiger Dateiname, die Dateiendung muss mit p aufhören

Nur so um mal die Verwirrung etwas zu klären

"wupti" wurde von Daniel (aka Cheffe) erfunden. Somit liegt das Copyright bei ihm
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: TPathfinderFrame und TFilesearcher

  Alt 23. Jan 2018, 07:47
Hi Ghostwalker

Vielen Dank für diese ausführliche Beschreibung!

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.136 Beiträge
 
Delphi 12 Athens
 
#10

AW: TPathfinderFrame und TFilesearcher

  Alt 23. Jan 2018, 08:32
Zitat:
*.p* beliebiger Dateiname, die Dateiendung muss mit p anfangen
abc.Pef.xyz
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:23 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