Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Suchen IN Dateien (https://www.delphipraxis.net/22873-suchen-dateien.html)

fkerber 25. Mai 2004 14:43


Suchen IN Dateien
 
Hi!

Die Windows-Suche bekommt es bei mir irgendwie nicht hin in allen PHP-Dateien (*.php) nach enthaltenem Text (Suchwort hier: unix) zu suchen.
Es gibt definitv Dateien mit diesem Inhalt.

OS: WinXP Home

Kennt jemand eine (externe) Lösung?


Ciao fkerber

MathiasSimmack 25. Mai 2004 14:50

Re: Suchen IN Dateien
 
Das ist ein Problem der Suchfunktion von XP. Man musste irgendwo einen Eintrag in der Registry vornehmen, und zwar bei allen Dateitypen, die entsprechend berücksichtigt werden sollen. Aber frag mich jetzt mal wo ... :oops: ... Ich habe dazu mal was auf www.pcwelt.de gesehen (oder war´s in der PC WELT?).

Was ich sagen will: Das ist ein bekanntes Problem und nicht deine Schuld.

fkerber 25. Mai 2004 14:52

Re: Suchen IN Dateien
 
Hi!

Danke für deine Antwort.
Ich schau dann mal die Hefte durch, schlummern alle bei mir im Schrank.
Kannst du es zeitlich evtl. etwas eingrenzen?

Danke.

Ciao fkerber

Basic-Master 25. Mai 2004 15:07

Re: Suchen IN Dateien
 
Zitat:

Zitat von fkerber
Hi!

Danke für deine Antwort.
Ich schau dann mal die Hefte durch, schlummern alle bei mir im Schrank.
Kannst du es zeitlich evtl. etwas eingrenzen?

Danke.

Ciao fkerber

soweit ich weiss sind alle dateitypen inner registry in "HKEY_CLASSES_ROOT" registriert

MathiasSimmack 25. Mai 2004 15:39

Re: Suchen IN Dateien
 
Zitat:

Zitat von Basic-Master
soweit ich weiss sind alle dateitypen inner registry in "HKEY_CLASSES_ROOT" registriert

Wenn du allerdings nicht weißt, was du wo eintragen musst, dann ... ;)

@fkerber: Also, eingrenzen kann ich es leider nicht. Aber ich habe mal schnell Google benutzt und einen Tipp gefunden. So soll es helfen, den Wert "FilterFilesWithUnknownExtensions" im Schlüssel
Code:
HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex
auf Eins zu setzen. Falls er nicht da ist: es ist ein DWORD.

Aber (soviel weiß ich noch): Das war nicht der Tipp der PC WELT. Hm ... Muss ich selbst mal ausprobieren, aber ich bin gerade nicht im XP.

MathiasSimmack 25. Mai 2004 16:56

Re: Suchen IN Dateien
 
So, eben mal den Stapel Papier durchwühlt, der sich aus bewahrenswerten Resten diverser PC-Zeitschriften zusammensetzt, und da war´s: PC WELT 10/2002. Damit ich´s nicht wieder vergesse, habe ich ein VBSkript draus gemacht, das ein Array mit den von mir gewünschten Dateitypen enthält.

Der Tipp funktioniert wie folgt: Es wird der Filter von Textdateien (das ist die GUID in der Konstanten "strSearchVal") gesetzt. Damit bietet sich das aber auch wirklich nur für Textdatei-Typen wie HTML, PHP, XML und Co. an.
Hier mal der Skriptcode, der übrigens auch den Eintrag aktiviert, den ich in meinem letzten Posting ansprach:
Code:
On Error Resume Next

Const strSearchKey = "HKCR\%1\PersistentHandler\"
Const strSearchVal = "{5e941d80-bf96-11cd-b579-08002b30bfeb}"
Const strFilterPath = _
  "HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex\FilterFilesWithUnknownExtensions"


Dim strTypes
strTypes = Array(".xml", _
   ".xsl", _
   ".xsd", _
   ".dtd", _
   ".htm", _
   ".html", _
   ".shtml", _
   ".php")

' Der Unterstrich am Ende der obigen Zeilen ist eine Anweisung
' für den Interpreter, dass es in der jeweils nächsten Zeile
' weitergeht. Ansonsten wäre eine Fehlermeldung die Folge!


Dim Sh
Set Sh = CreateObject("WScript.Shell")


Dim strCurrentType
For Each strCurrentType in strTypes
   strCurrentType = Replace(strSearchKey, "%1", strCurrentType)
   Sh.RegWrite strCurrentType, strSearchVal
Next


Sh.RegWrite strFilterPath, "1", "REG_DWORD"
(Ich könnte langsam auch eine VBS-Sparte auf meiner Seite einrichten. ;))

Ausprobiert habe ich´s auch, indem ich in ~300 HTML-Seiten nach
Code:
"DocSet" Value="CommonC"
Im Gegensatz zu vorher findet die Suche nun auch tatsächlich etwas.

Ultimator 25. Mai 2004 17:04

Re: Suchen IN Dateien
 
:shock: VB! Steinigt ihn! :mrgreen:

MathiasSimmack 25. Mai 2004 17:10

Re: Suchen IN Dateien
 
VBS! Wenn schon, dann richtig! Und für so einen Pippifax würde ich mein Delphi nicht anschmeißen, und zum manuellen Anpassen der Registry bin ich auch zu faul.

fkerber 25. Mai 2004 19:41

Re: Suchen IN Dateien
 
Hi!

Danke @Mathias.
Nur: Was mach ich mit dem VB-Code?
Kenne mich damit nicht aus, weiß nicht wie ich es kompilieren sollte etc.
Kannst du mir noch etwas helfen?

Ciao fkerber

mirage228 25. Mai 2004 20:00

Re: Suchen IN Dateien
 
Zitat:

Zitat von fkerber
Hi!

Danke @Mathias.
Nur: Was mach ich mit dem VB-Code?
Kenne mich damit nicht aus, weiß nicht wie ich es kompilieren sollte etc.
Kannst du mir noch etwas helfen?

Ciao fkerber

Ich glaube du kannst es als .VBS speichern und einfach ausführen, wenn ich mich nicht irre.

mfG
mirage228

fkerber 25. Mai 2004 20:12

Re: Suchen IN Dateien
 
HI!

:love: :dp: :love:

Iss das ein tolles Forum :thuimb:
Eure Tipss sind echt klasse.

Hat alles funktioniert, danke.

Kann mir evtl. auch noch jemand den Code erklären?
Wäre super.

Ciao fkerber

MathiasSimmack 25. Mai 2004 20:58

Re: Suchen IN Dateien
 
Du brauchst eine Erklärung dafür? :shock: Das ist doch fast wie Delphi.

Zitat:

Zitat von MathiasSimmack
Code:
Const strSearchKey = "HKCR\%1\PersistentHandler\"
Const strSearchVal = "{5e941d80-bf96-11cd-b579-08002b30bfeb}"
Const strFilterPath = _
  "HKLM\SYSTEM\CurrentControlSet\Control\ContentIndex\FilterFilesWithUnknownExtensions"

Die Konstanten, auf die zugegriffen wird.

Zitat:

Code:
Dim strTypes
strTypes = Array(".xml", _
   ".xsl", _
   ".xsd", _
   ".dtd", _
   ".htm", _
   ".html", _
   ".shtml", _
   ".php")

Das Array mit den Dateitypen. Kannst du gern erweitern.

Zitat:

Code:
' Der Unterstrich am Ende der obigen Zeilen ist eine Anweisung
' für den Interpreter, dass es in der jeweils nächsten Zeile
' weitergeht. Ansonsten wäre eine Fehlermeldung die Folge!

Das ist eine Anmerkung von mir direkt als Kommentar im Skriptcode. :mrgreen:

Zitat:

Code:
Dim Sh
Set Sh = CreateObject("WScript.Shell")

Hier wird das "WshShell"-Objekt erzeugt, damit auf die Registry zugegriffen werden kann. Dass es im Code "WScript.Shell" heißt, ist kein Fehler.

Zitat:

Code:
Dim strCurrentType
For Each strCurrentType in strTypes
   strCurrentType = Replace(strSearchKey, "%1", strCurrentType)
   Sh.RegWrite strCurrentType, strSearchVal
Next

In der Schleife wird jede der Dateiendungen aus dem o.g. Array ausgelesen. Die Konstante "strSearchKey" wird als Grundlage genommen, wobei das "%1" durch den aktuellen Dateityp (sprich: die aktuelle Endung aus dem Array) ersetzt wird.
btw: Der Backslash am Ende von
Code:
Const strSearchKey = "HKCR\%1\PersistentHandler\"
bedeutet, dass auf den Standardwert des Schlüssels zugegriffen wird. In dem Fall wird die Konstante "strSearchVal" (die GUID, s. Deklaration) eingetragen.

Zitat:

Code:
Sh.RegWrite strFilterPath, "1", "REG_DWORD"

Und hier wird der Wert in die Registry geschrieben, den ich in meinem Posting von ... tja, irgendwie sehe ich die Uhrzeit gerade nicht ... erwähnt habe ...

Im Prinzip nichts Außergewöhnliches. Kann man mit Delphi problemlos nachbilden. Aber wozu? Für solche Kleinigkeiten ist VBS ganz nützlich. ;)

fkerber 25. Mai 2004 21:04

Re: Suchen IN Dateien
 
Hi!

Danke, aber an sich hatte ich mehr die Funktionsweise gemeint.
Wie kommst du hierauf?

Zitat:

Code:
Const strSearchVal = "{5e941d80-bf96-11cd-b579-08002b30bfeb}"

Ciao fkerber

MathiasSimmack 25. Mai 2004 21:09

Re: Suchen IN Dateien
 
Das ist die GUID, die in der besagten PC WELT erwähnt wurde. Sie gilt für Textdateien und lässt sich daher IMHO auch für andere Textdateitypen (wie eben PHP, XML, usw.) verwenden. Wird auch so in der Zeitschrift gesagt.

Und die Funktionsweise ... na ja, ich wusste auch nicht, was du erklärt haben wolltest. Ich finde es eigentlich recht einfach und hätte kein Problem, diesen Code nach Delphi umzusetzen. Und dann hättest du wahrscheinlich nicht nach der Funktionsweise gefragt. ;)

fkerber 25. Mai 2004 21:22

Re: Suchen IN Dateien
 
Hi!

Jetzt ist klar.
Mit Funktionsweise meinte ich nicht, was der Code an sich macht, sondern was er bewirkt.
Also was die Einträge machen.

Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz