Jvcl TJvSearchFiles

Rund um die LCL und andere Komponenten
Antworten
charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Jvcl TJvSearchFiles

Beitrag von charlytango »

Hi,

in den JVCL-Komponenten wurde TJvSearchFiles (unit: JvSearchFiles.pas) wohl nicht portiert.
"looks like a big overkill to me. A lot of source for a small function"

kann man sehen wie man mag.

Jedenfalls würde ich diese Komponente für einen Projekt-Port brauchen in dem sie recht intensiv benutzt wurde.

Frage1: Wie gehe ich das rechtlich korrekt an wenn ich die Komponente selber portieren möchte (bevor ich mich wieder in die Nesseln setze ;))

Frage2: gibt es evtl ein Lazarus-Äquivalent zur Komponente (gerne auch nicht-visuell)

Klar kann ich Dateien mit unterschiedlichen Methoden suchen und durchackern.
Dazu hab ich ja hier schon mal einen Test gemacht.

Nur wäre auch fein eine umfangreiche Such und Ergebnisfunktion zur Verfügung zu haben die nicht nur unter WIN funktioniert.

THX

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Jvcl TJvSearchFiles

Beitrag von Soner »

In englischen Forum wurde vor Monaten nach "Scanning files" Frage gestellt und einige Leute haben Komponenten/Beispiele gepostet.
Vielleicht kannst du eins davon für deine Bedürfnisse zurechtbiegen.

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Jvcl TJvSearchFiles

Beitrag von wp_xyz »

Hab mir die TJvSearchFiles-Komponente etwas angesehen, und als erstes ist mir das {$I WindowsOnly.inc} aufgefallen, das macht sie für Lazarus eigentlich ziemlich uninteressant...

Weiter unten steht als Kommentar "Maybe TJvSearchFiles should be implemented with FindFirst, FindNext. There isn't a good reason to use FindFirstFile, FindNextFile instead of FindFirst, FindNext; except to prevent a little overhead perhaps." Also vielleicht ist doch nicht alles verloren...

Wenn du die Komponente cross-platform portieren kannst, werden ich sie gerne in JVCLLaz aufnehmen.

Generell erscheint sie mir aber sehr ähnlich zu sein wie die Funktion/Prozedur FindAllFiles bzw. FindAllDirectories in Unit FileUtil.

Zur rechtlichen Frage: Keine Ahnung, ich bin kein Rechtsanwalt. Aber JVCL steht unter der MPL, und die ist ziemlich tolerant. Ich denke, da kannst du alles machen, außer vielleicht die Komponente als dein eigenes geistiges Eigentum zu verkaufen.

charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: Jvcl TJvSearchFiles

Beitrag von charlytango »

wp_xyz hat geschrieben:
Di 31. Aug 2021, 17:00
Hab mir die TJvSearchFiles-Komponente etwas angesehen, und als erstes ist mir das {$I WindowsOnly.inc} aufgefallen, das macht sie für Lazarus eigentlich ziemlich uninteressant...
Hab mich ausgehend von FileUtil.FindAllFiles ausgehend etwas in FileUtils eingelesen. Da scheint auf den zweiten Blick alles drin zu sein um eine ähnliche Komponente zu bauen die auf allen cross-platform Lazarus-Kompatibel ist.
wp_xyz hat geschrieben:
Di 31. Aug 2021, 17:00
Wenn du die Komponente cross-platform portieren kannst, werden ich sie gerne in JVCLLaz aufnehmen.
Ich denke das macht wenig Sinn eine Komponente zu portieren die im wesentlichen Windows Only ist.
Meine Idee wäre eine Komponente aus verfügbaren Teilen zu bauen.
Nachdem das meine erste Komponente wäre bräuchte es da sicher Hilfestellung in Syntax und Funktionsumfang und Strategie.

Was besonders WinOnly war, war die Verwendung von FindData, eines Records in dem Dateiinformationen stehen. Das scheint es für verschiedene Zwecke auch in Lazarus zugeben. (FileUtil line 111: FFileInfo: TSearchRec)

Vielleicht ist es naiv aber ich wäre da guter Dinge dass es machbar ist, hab aber vom Komponentrenbau keine Ahnung und von einigem was in JVSearchFiles steht auch nicht ggg.

Würdest du assistieren (wollen)?

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: Jvcl TJvSearchFiles

Beitrag von wp_xyz »

charlytango hat geschrieben:
Di 7. Sep 2021, 12:51
Meine Idee wäre eine Komponente aus verfügbaren Teilen zu bauen.
Weiß nicht. Die Funktionalität der Komponente gibt es schon in FindAllFiles, und wenn man dort in den Code schaut sieht man einen TListFileSearcher, der in etwas dasselbe macht, was TJvSearchFiles macht. Stammt halt nicht von TComponent ab und kann somit nicht aufs Formular geklatscht werden, sondern muss im Code zur Laufzeit erzeugt werden. Und hat anders benannte Properties.

Der einzige Grund, die Komponente TJvSearchFiles zu haben, wäre, dass sich ehemalige Delphi-User, die die Komponente früher verwendet haben, etwas Zeit beim Portieren auf Lazarus sparen können, wenn es die Komponente auch für Lazarus gibt. Dafür müsste die Komponente ziemlich 1:1 genauso funktionieren wie TJvSearchFiles. Ob man das basierend auf TSearchRec statt TWin32FindData plattformübergreifend hinkriegt, erscheint mir zweifelhaft.
charlytango hat geschrieben:
Di 7. Sep 2021, 12:51
Würdest du assistieren (wollen)?
Wenn ich ehrlich bin, sehe ich den Sinn dieses Projekts nicht. Ich kann deine Posts lesen und, wenn mir etwas dazu einfällt, ein paar Kommentare dazu schreiben. Aber groß reinknien werden ich mich nicht.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Jvcl TJvSearchFiles

Beitrag von Winni »

Hi!

Ein Bug von FindAllFiles sei aber noch erwähnt:

Die Funktion reisst alles an sich.
Wenn man einen großen Baum durchsucht, so nervt das.
Und Newbies haben auch schon gefragt, ob da was defekt ist.
Man kann das Program erst wieder bedienen, wenn er fertig ist.
Hier fehlt ein Application.processMessages im loop.
Wo auch immer.
Bei jedem neuen Unterverzeichnis oder alle Sekunde.

Winni

Antworten