Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Volltextsuche mit Delphi (https://www.delphipraxis.net/184786-volltextsuche-mit-delphi.html)

mkinzler 24. Apr 2015 13:48

AW: Volltextsuche mit Delphi
 
Jetzt noch

Delphi-Quellcode:
if MatchesMask( Rec.Name, FileName) then
          Listbox1.Items.Add(Path + Rec.Name);
Dann wird die Maske für dateien wieder beachtet.

Balosh 24. Apr 2015 14:36

AW: Volltextsuche mit Delphi
 
Zitat:

Zitat von mkinzler (Beitrag 1299142)
Jetzt noch

Delphi-Quellcode:
if MatchesMask( Rec.Name, FileName) then
          Listbox1.Items.Add(Path + Rec.Name);
Dann wird die Maske für dateien wieder beachtet.


Was meinst du damit, versteh ich nicht ganz? Was soll MatchesMask genau bringen? Kenne das nur flüchtig.

EDIT: Frage hat sich erledigt. :) Danke für den Hinweis.

mkinzler 24. Apr 2015 15:00

AW: Volltextsuche mit Delphi
 
Du hast ja im FindFirst angegeben, dass alle Dateien gefunden werden sollen. MatchesMask überprüft nun ob der Dateiname zur Suchmaske passt.

himitsu 24. Apr 2015 17:42

AW: Volltextsuche mit Delphi
 
Ich glaub du bist hier in dem Unterforum falsch?

Eine Volltextsuche, die es schon in der Delphi-IDE gibt, bzw. Eine, welche du dort einbauen willst, das wäre hier richtig,
aber wenn du nur ein Suchprogramm in Delphi/Pascal schreiben willst, also das hat mit der IDE nichts zu tun.



PS: DFMs durchsuchen, auch wenn es sie immer seltener gibt, da Delphi bereits seit längerem Diese standardmäßig im Textformat abspeichert, aber dennoch kann es vorkommen, daß du eventuell auf eine Binärversion stößt und Diese müsstest du somit zuerst binär einlesen (TStream) und kannst sie dann mit Delphi-Referenz durchsuchenObjectBinaryToText umwandeln, bevor du darin alles als Text durchsuchen kannst.

Balosh 27. Apr 2015 14:52

AW: Volltextsuche mit Delphi
 
Zitat:

Zitat von himitsu (Beitrag 1299183)
Ich glaub du bist hier in dem Unterforum falsch?

Wusste nicht ob ich hier richtig bin. Wenn die Aussage stimmt bitte ich einen der Mods den Thread zu verschieben.

Nun zu meiner Frage bzw. Problem

Habe das Programm jetzt soweit am laufen das es die Unterordner und Dateien anzeigt. Nun will ich aber noch dass das Programm in den Dateien nach Wörter (Strings) sucht. Dazu habe ich noch eine zusätzlich Combobo in das Formular "eingebaut". Nun meine Frage wie kombiniere ich die Zwei Aufgaben (Suche nach Dateien und Suche In Dateien). Habe schon etwas angefangen (auskommentiert) aber komme nun nicht weiter:

Code:
procedure TMainSuche.FileSearch(const PathName, FileName: string);
var Rec : TSearchRec;
    Path: string;
    { *sl: TStringList;* }
    { *i: Integer;* }
begin
  Path := IncludeTrailingBackSlash(PathName);
  try
    { *sl := TStringList.Create;* }
    { *sl.LoadFromFile(Path);*}
    if FindFirst (Path + '*', faAnyFile, Rec) = 0 then
    begin
      repeat
        if (Rec.attr in [faDirectory, (faDirectory+faArchive)]) then
        begin
          if Checkbox1.Checked then
          begin
            if (Rec.Name <> '.') and (Rec.Name <> '..') then
              FileSearch( Path+Rec.Name , FileName);
          end;
        end else
          if MatchesMask( Rec.Name, FileName) then
            Listbox1.Items.Add(Path + Rec.Name);
      until FindNext(Rec) <> 0;
    end;
  finally
     FindClose (Rec);
  end;
end;
Stimmt das was ich bisher eingeben habe (ich weiß ist nicht viel)?

DeddyH 27. Apr 2015 15:05

AW: Volltextsuche mit Delphi
 
Was soll denn
Zitat:

Delphi-Quellcode:
if (Rec.attr in [faDirectory, (faDirectory+faArchive)]) then

bezwecken?

himitsu 27. Apr 2015 15:16

AW: Volltextsuche mit Delphi
 
Es entspricht Folgendem
Delphi-Quellcode:
//if (Rec.attr = faDirectory) or (Rec.attr = (faDirectory + faArchive)) then
if (Rec.attr = faDirectory) or (Rec.attr = (faDirectory or faArchive)) then
aber gemeint ist bestimmt eigentlich Jenes
Delphi-Quellcode:
//if faDirectory in Rec.attr then
if Rec.attr and faDirectory <> 0 then

Attribute/Bits per Addition zu verbinden ist schonmal falsch, denn das macht man per OR, vorallem da einige der Konstanten mehrere Bits umfassen.





Dateinamen suchen (notfalls Alle), wenn Dateiname gefunden, dann jede Datei nacheinander in die StringListe laden und dort drinnen suchen.

DeddyH 27. Apr 2015 15:20

AW: Volltextsuche mit Delphi
 
Dachte ich mir auch schon, aber da vorherige Versionen den "üblichen" Binärvergleich mit faDirectory hatten und das nun geändert wurde, frage ich lieber mal nach.

Balosh 27. Apr 2015 15:35

AW: Volltextsuche mit Delphi
 
Zitat:

Zitat von himitsu (Beitrag 1299417)
Es entspricht Folgendem
Delphi-Quellcode:
//if (Rec.attr = faDirectory) or (Rec.attr = (faDirectory + faArchive)) then
if (Rec.attr = faDirectory) or (Rec.attr = (faDirectory or faArchive)) then
aber gemeint ist bestimmt eigentlich Jenes
Delphi-Quellcode:
//if faDirectory in Rec.attr then
if Rec.attr and faDirectory <> 0 then

Attribute/Bits per Addition zu verbinden ist schonmal falsch, denn das macht man per OR, vorallem da einige der Konstanten mehrere Bits umfassen.





Dateinamen suchen (notfalls Alle), wenn Dateiname gefunden, dann jede Datei nacheinander in die StringListe laden und dort drinnen suchen.

Ok so kann man es auch machen hast recht. So wie ich es gemacht habe funktioniert es zwar auch aber deine Variante ist die richtige im nachhinein.
Aber das ist keine Antwort auf meine Frage. :)

DeddyH 27. Apr 2015 15:41

AW: Volltextsuche mit Delphi
 
Statt einfach nur die Datei der ListBox hinzuzufügen, musst Du sie halt vorher öffnen und nach dem String durchsuchen. Das würde ich aber eher in eine eigene Funktion verfrachten, sonst wird das zu unübersichtlich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.
Seite 4 von 6   « Erste     234 56      

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