Einzelnen Beitrag anzeigen

Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#1

Nach String suchen und mit anchließenden Zeichen ausgeben

  Alt 15. Jul 2005, 08:15
Hallo!
Ich bin gerade am verzweifeln. Also: Ich habe ein Programm geschrieben, was in einem Verzeichnis alle .pas Und .dfm Dateien nachnach einem bestimmten String durchsucht. Wenn dieser gefunden wird wird der Name der Datei ausgegeben. Der String nach dem gesucht wird ist überings "{$IFDEF". Jetzt möchte ich gerne, das er mir alles ausgibt, was in dieser IFDEF anweisung steht und zwar bis zur abschließenden Klammer "}".
Hier der Code:
Delphi-Quellcode:
function Tform1.Str1IstInStr2(const a,b: string): boolean;
begin
result := pos(AnsiLowercase(a),AnsiLowercase(b)) > 0;
end;

function tform1.istInderDatei(const s: string; const pfad: string): boolean;
var pu : TSTringlist;
begin
  result := false;
  try
    pu := Tstringlist.Create;
    try
      pu.LoadFromFile(pfad);
      if Str1IstInStr2(s,pu.text) then result := true;

         finally pu.free End;
  except showmessage(pfad + ' | konnte nicht durchsucht werden') End;
end;

procedure tform1.ZuMemoFallsKiterienerfuellt(const pfad, BestimmteDatei,SuchTextInDerDatei: string);
begin
  if Str1IstInStr2(BestimmteDatei,pfad) and istInderDatei(SuchTextInDerDatei,pfad) then
  begin
         memo1.lines.add('"'+pfad + '" enthält den Text "' +s1);
  end;
end;

procedure tform1.VerzeichnisDurchsuchen(dir: string; const BestimmteDatei,
  SuchTextInDerDatei: string);
  var SR: TSearchRec;
          dirtemp : string;
Begin
    dir := IncludeTrailingBackslash(dir);
    if FindFirst(dir+'*.*',faAnyFile,SR)=0 then Begin
    repeat
        If ((sr.attr And faDirectory) = 0) and (SR.Name[1]<>'.') then
        ZuMemoFallsKiterienerfuellt(dir + sr.name, BestimmteDatei,
                                    SuchTextInDerDatei);
       if (SR.Attr and faDirectory = faDirectory)
        and (SR.Name[1] <> '.') then Begin
            dirTemp := dir + sr.name;
            VerzeichnisDurchsuchen(dirtemp,BestimmteDatei, SuchTextInDerDatei);
            End;
    until FindNext(SR)<>0;
    FindClose(SR);
  End;
End;



procedure TForm1.Button2Click(Sender: TObject);
var dir, datei, suchtext: string;
begin
 memo1.Lines.Clear;
 dir := edit1.text;
 datei := 'pas';
 suchtext := '{$IFDEF';
 VerzeichnisDurchsuchen(dir, datei, suchtext);
 dir := edit1.text;
 datei := 'dfm';
suchtext := '{$IFDEF';
 VerzeichnisDurchsuchen(dir, datei, suchtext);
end;
Werde jetzt weiter probieren. Wäre nett wenn ihr euch das mal anschauen könntet.

Mit freundlichen Grüßen,
Strefan Voesch
  Mit Zitat antworten Zitat