Lazarus Strukturfragen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Benutzeravatar
ersteinmal
Beiträge: 5
Registriert: So 5. Mai 2024, 18:49

Lazarus Strukturfragen

Beitrag von ersteinmal »

Hallo!
Ich komme von "Warum zeigt die Liste der überwachten Ausdrücke nichts an?" was erfolgreich gelößt wurde. Mein Ziel war, daß ich meine Bilder auf den Rechnern und im Nas auf dublikate überprüfe, und dann über "exif" sie ordentlich sortiere und findbar machen will.

Jetzt habe ich also "FindAllFiles" gefunden, und versuchte mich durch zu hangeln, wo denn nun die Dateiabfragen statt finden. Ich komme von TP und hatte bei Delphi aufgehört, trotzdem meinte ich zu wissen was Klassen sind. Nur scheint Lazarus einige andere Änderungen durchgeführt zu haben, deshalb erlaube ich mir meine Verwunderungen zu schildern, die Ihr mir sicherlich umgehend mit einem "ist doch kar" beantwortet. :)
Also
Findallfiles.jpg
Findallfiles.jpg (42.66 KiB) 1129 mal betrachtet

Scheint nur eine Information über die Funktion und Prozedur zu sein, und
Findallfiles.jpg
Findallfiles.jpg (42.66 KiB) 1129 mal betrachtet
Gibt es ja auch.
Dabei dachte ich zuerst, daß "Result :=" das Ergebnis an die Funktion zurück gibt,, aber dann ruft die Funktion die Prozedur auf und dort offenbar "TListFileSearcher = class(TFileSearcher)" was dann irgentetwas macht - oder macht Seacher etwas????

Ich bin jedenfalls schon wieder raus.

Könnt Ihr mir helfen?

Danke Carsten
Dateianhänge
Findallfiles in fileutil.jpg
Findallfiles in fileutil.jpg (76.95 KiB) 1129 mal betrachtet

wennerer
Beiträge: 609
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: Lazarus Strukturfragen

Beitrag von wennerer »

Hallo Carsten,
mit FindAllFiles schreibst du je nach Auswahl alles in eine Stringlist. Du musst dann die Stringlist durchlaufen und vergleichen.
Im Anhang ein kleines Beispiel wie du FindAllFiles verwenden kannst.
Auch hilfreich: https://wiki.freepascal.org/FindAllFiles

Viele Grüße
Bernd
Dateianhänge
project1.zip
(139.81 KiB) 54-mal heruntergeladen
Zuletzt geändert von wennerer am Di 27. Aug 2024, 20:25, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Lazarus Strukturfragen

Beitrag von af0815 »

Und nicht vergessen, du bekommst eine StringList und bist dann auch für die Lebensdauer = Zusammenräumen mit Free verantwortlich. Das geschieht NICHT automatisch. Beliebtes Speicherloch :-)

Der Unterschied zwischen den beiden proceduren ist nur der - wer erzeugt die StringList. Dort wo du die übergbst, bist du für die Erzeugung zuständig, im anderen Fall wird die zuerst erzeugt , übergeben und steht dir als Ergebnis zur Verfügung. Abräumen, siehe Anfang des Posts, ist in deiner Hand.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

paweld
Beiträge: 91
Registriert: So 11. Jun 2023, 16:01
OS, Lazarus, FPC: Lazarus trunk, FPC fixes

Re: Lazarus Strukturfragen

Beitrag von paweld »

Ich empfehle die Verwendung von TFileSearcher für die Suche nach filesc und FpExif zum Abrufen von Exif-Daten.

Hier können Sie ein Beispiel herunterladen, das ich einmal gemacht habe: https://forum.lazarus.freepascal.org/in ... #msg475499
Grüße / Pozdrawiam
paweld

Sieben
Beiträge: 292
Registriert: Mo 24. Aug 2020, 14:16
OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
CPU-Target: i386

Re: Lazarus Strukturfragen

Beitrag von Sieben »

Hallo Carsten,

die eigentliche Suche findet in der Klasse TFileSearcher, genauer in deren Prozedur Search statt. TListFileSearcher ist eine einfache Erweiterung von TFileSearcher, die die gefundenen Dateien in einer bereitgestellten TStringList ablegt. Die Prozedur sowie die Funktion FindAllFiles sind 'covenience-wrapper' zum Einsatz von TListFileSearcher, wobei du für den Einsatz der Prozedur die StringList vorher selbst erzeugen musst, während die Funktion dir auch noch diesen Schritt abnimmt - mit dem bereits von af0815 genannten caveat, dass du auch in diesem Fall selbst dafür verantwortlich bist, die StringList nach Gebrauch auch wieder freizugeben. Die Variable Searcher bezeichnet bzw speichert nur die Instanz von TListFileSearcher, die in der Prozedur verwendet wird.

Benutzeravatar
ersteinmal
Beiträge: 5
Registriert: So 5. Mai 2024, 18:49

Re: Lazarus Strukturfragen

Beitrag von ersteinmal »

Jo!
Ersteinmal toll wie Ihr Euch engagiert und mir helft.

Ich muß mir Eure Beiträge noch einmal genau durchlesen, damit ich sie richtig verstehe. In jedem Fall ist mir klar geworden, das die Welt nicht stehen geblieben ist..... Zumindestens, wenn ich die richtige gefunden habe :D

P.S.: wo werden Eigentlich mögliche Fehler abgefangen?


Carsten

Antworten