Seite 1 von 1

"im" PRG von einem ZIP File suchen

Verfasst: Di, 03. Jan 2017 20:57
von AUGE_OHR
ich habe es aus einem anderen Thread mal rausgenommen und stelle hier noch mal die Frage
HaPe hat geschrieben:
nun habe ich auch ZIP Dateien wo ich mit dem TC "inside" suchen kann.
Frage : wie kann man so was mit Xbase++ simulieren ?
Eine ZIP-DLL wie zb. ZLib.dll zum "Listen" des Zip-Inhaltes verwenden 8)
mit dem Total Commander "suche" ich mit ALT-F7 nach *.PRG "in" ZIP Files nach einem Begriff. das geht schnell =D>

wenn ich das nun unter Xbase++ "simulieren" will muss ich zunächst die *.PRG temporär entpacken und kann dann nach dem Begriff suchen.

Code: Alles auswählen

// Dummy Code

   aList := XbUnzipList(cFile, "*.PRG")
   iMax := LEN(aList)
   FOR i := 1 TO iMax
      cDatei := XbUnZipFile(aList[i])
      IF Begriff $ cDatei
          AADD(aTreffer,cDatei)
      ENDIF
   NEXT
geht das irgendwie "schneller" ?

Re: "im" PRG von einem ZIP File suchen

Verfasst: Mi, 04. Jan 2017 8:20
von Tom
Mal ins Blaue gedacht: Was ist, wenn man den Suchbegriff komprimiert und danach sucht? ZIP ist ja linear und nichtprogressiv, aber ob das bis auf die Datenebene herabreicht, weiß ich nicht.

Re: "im" PRG von einem ZIP File suchen

Verfasst: Mi, 04. Jan 2017 8:24
von Herbert
Systemsteuerung, Explorer-Optionen, Tab "Suchen". Die Option "Komprimierte Dateien (.ZIP, .CAB usw.) einbeziehen" wählen...

Re: "im" PRG von einem ZIP File suchen

Verfasst: Mi, 04. Jan 2017 8:48
von Wolfgang Ciriack
Hallo Herbert,
das ist aber nicht unter XBase++ :roll:

Re: "im" PRG von einem ZIP File suchen

Verfasst: Mi, 04. Jan 2017 12:30
von Werner_Bayern

Code: Alles auswählen

aeval(aList, {|x|cDatei := XbUnZipFile(x), if(cBegriff $ cDatei, aadd(aTreffer, cDatei), )})

Re: "im" PRG von einem ZIP File suchen

Verfasst: Mi, 04. Jan 2017 13:03
von Koverhage
Nachdem dies ja ab Windows 7 als fast normaler Ordner behandelt wird, muss das doch auch mit ganz normalen Systemaufrufen funktionieren, notfalls per DLL-Call.
Jimmy war wohl schon ein wenig müde, sonst hätte er die Lösung hier präsentiert ;-)

Re: "im" PRG von einem ZIP File suchen

Verfasst: Mi, 04. Jan 2017 13:25
von Tom
Auch Windows (bzw. der Explorer) entpackt temporär, wenn man an die Inhalte will. So, wie das der Total Commander und andere Tools machen. Bereits entpackte Inhalte (erste Suche) werden gespeichert, weshalb Folgesuchen meistens drastisch schneller sind.

Das Zippen erzeugt komprimierte Inhalte und eine Art Dateverzeichnis im Header und Footer der Datei. Der Inhalt dazwischen ist nichtlinear komprimiert. "Max Mustermann" und "Max Meier" erzeugen im Datenbereich zunächst relativ ähnliche Inhalte, aber diesen ähnlichen Bereich findet man in "Hans-Max Meier" schon nicht mehr wieder. Deshalb dürfte die Idee ins Leere laufen, z.B. "Max" zu zippen (also aus einer gezippten Datei, in der nur "Max" steht, den Bereich zwischen Header und Footer zu extrahieren) und nach dem gezippten Text zu suchen, um in gezippten Dateien "Max" zu finden.

Re: "im" PRG von einem ZIP File suchen

Verfasst: Mi, 04. Jan 2017 16:59
von Herbert
Lieber Wolfgang, genau das wollte ich indirekt andeuten, was Tom ausgedeutscht hat...

Re: "im" PRG von einem ZIP File suchen

Verfasst: Do, 05. Jan 2017 7:50
von Koverhage
Wenn man hier im Forum nach Zip komprimierter Ordner sucht, findet man auch was.

Re: "im" PRG von einem ZIP File suchen

Verfasst: Do, 05. Jan 2017 8:12
von AUGE_OHR
das Thema ist wohl nicht neu ...

hier Open Source Projecte
https://sourceforge.net/projects/search ... =directory
http://dngrep.github.io/

oder solche Freeware
https://www.fileseek.ca/Compare/

@Herbert : der Windows Index ist schon interessant aber normal auf "Benutzer" Verzeichnisse sowie Outlook begrenzt.
Indizierungsoptionen.jpg
Indizierungsoptionen.jpg (60.22 KiB) 4858 mal betrachtet
wenn man allerdings eine (kleine) SSD hat wird man sich schon überlegen ob man den Suchindex überhaupt aktiviert.

ich müsste zumindest mein \ALASKA Verzeichnis in den Windows Index mit aufnehmen und "alles indizieren" um zu suchen.
alles_Indizieren.jpg
alles_Indizieren.jpg (78.7 KiB) 4858 mal betrachtet
@Wolfgang : klar Xbase++ hat (bislang) leider keinen Zugriff auf den Windows-Index ... aber was wäre wenn ...

angenommen man möchte den Suchindex bzw. die "EDB"*** Datenbanken wie

Code: Alles auswählen

c:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb
*** http://www.edbsearch.com/windows_edb.html
nutzen dann müsste man sich zunächst die API zu "esent.dll" ansehen um Zugriff auf die "Extensible Storage Engine (ESE)" zu bekommen
http://www.edbsearch.com/ese.html

eine EDB Viever habe ic hier gefunden
http://www.nirsoft.net/utils/ese_database_view.html

damit er auch "in" Word / Excel etc sucht benötigt man wohl ein "Microsoft Office xxxx Filter Packs"
hier für 2010 und ältere Version (97-2003, 2007)
https://www.microsoft.com/de-DE/downloa ... x?id=17062