AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Textdatei nach bestimmten Begriff durchsuchen
Thema durchsuchen
Ansicht
Themen-Optionen

Textdatei nach bestimmten Begriff durchsuchen

Ein Thema von N30N · begonnen am 31. Mär 2008 · letzter Beitrag vom 2. Apr 2008
Antwort Antwort
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#1

Textdatei nach bestimmten Begriff durchsuchen

  Alt 31. Mär 2008, 12:40
Update weiter unten!



Hi,

Ich versuche 100 Textdateien nach einem bestimmten Begriff zu durchsuchen. Ich hab dann mal die Forensuche bedient und folgenden Code gefunden und angepasst.Die Dateien liegen im Format 1.txt, 2.txt, 3.txt usw vor. Allerdings funktioniert das nicht so wie ich will.

Delphi-Quellcode:
procedure TForm5.SuchestartenClick(Sender: TObject);
var
    StringList : TStringList;
    posi : integer;
    s : string;
    i : byte;
begin
  for i := 0 to 100 do
    begin
      StringList := TStringList.Create;
      try
        StringList.LoadFromFile('\\Server\Datenbank\' + inttostr(i) + '.txt); [b]// [Fehler] Unit5.pas(45): Nicht abgeschlossener String[/b]
s := StringList.Text; [b]// [Fehler] Unit5.pas(46):
')' erwartet, aber Bezeichner 's' gefunden[/b]
delete(s, 1, pos(edit1.text, s) + length(edit1.text) - 1);
memo1.lines.add (copy(s, 1, pos(
'<Endewort>', s) - 1));
finally
StringList.free;
end;
end;
end;
Die Fehlermeldungen sagen mir nicht viel, was mach ich falsch? Und wozu brauche ich Endewort?

Originalthread ist übrigens der hier

Ach ich sehe gerade, der Ersteller des anderen Threads sucht eine Möglichkeit um den Inhalt zwischen zwei Wörter herauszusuchen. Naja, viel Unterschied wird in den Verfahren nicht sein. Ich will eigentlich nur den Namen der Textdatei in der Memobox ausgeben, wenn ein bestimmter Begriff in dieser Datei gefunden wurde.
Ich bin ein Delphi-Anfänger.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Textdatei nach bestimmten Begriff durchsuchen

  Alt 31. Mär 2008, 12:46
StringList.LoadFromFile('\\Server\Datenbank\' + inttostr(i) + '.txt); Hinter '.txt fehlt das abschließende '. Genau das sagt auch die Fehlermeldung, und die "kaputte" Formatierung des Quelltextes hier im Forum lässt das doch prima erkennen. Der 2. Fehler ist lediglich eine Folge des ersten.

\\Edit: Und für dein Vorhaben reicht eine einfach Suche mittles Delphi-Referenz durchsuchenPos in der Stringliste.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#3

Re: Textdatei nach bestimmten Begriff durchsuchen

  Alt 31. Mär 2008, 12:51
LoL ... der is ma geil ...

Ausserdem durchläufst du die Schleife 101 mal ... "for i := 0 to 100 do" ... "for i := 1 to 100 do" oder "for i := 0 to 99 do" würde 100x die Schleife durchlaufen
  Mit Zitat antworten Zitat
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#4

Re: Textdatei nach bestimmten Begriff durchsuchen

  Alt 1. Apr 2008, 10:35
Okay, der erste Teil war vielleicht etwas verwirrend oder sogar komplett falsch ^^

Also nochmal:

Ich habe 100 Text-Dateien, es geht von 1 los und endet bei Datei Nr 100. Ich möchte jede dieser Dateien nach einem bestimmten Begriff durchsuchen und anschliesend den Dateinamen in einem Memofeld ausgeben.

Das klappt jetzt sogar, allerdings unterscheidet die Funktion pos zwischen Groß und Kleinschreibung wie mir scheint.

Delphi-Quellcode:
procedure TForm5.SuchestartenClick(Sender: TObject);
var
    StringList : TStringList;
    s : string;
    i : byte;
begin
  memo1.clear;
  for i := 1 to 100 do
    begin
      StringList := TStringList.Create;
      try
        StringList.LoadFromFile('\\Server\Datenbank\' + inttostr(i) + '.txt');
        s := StringList.Text;
        if pos(edit1.text, s) > 0 then
        memo1.lines.add (inttostr(i));
      finally
        StringList.free;
      end;
    end;
end;

Könnte mir noch einer verraten wie ich die Unterscheidung ausschalte? ^^
Ich bin ein Delphi-Anfänger.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Textdatei nach bestimmten Begriff durchsuchen

  Alt 1. Apr 2008, 10:42
Ja, pos ist case sensitiv.

Du kannst mit upperCase oder lowerCase den Text in Groß- oder Kleinbuchstaben
wandeln und dann mit pos abfragen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#6

Re: Textdatei nach bestimmten Begriff durchsuchen

  Alt 1. Apr 2008, 11:31
Hm, also mit lower und uppercase könnte ich zwar Den Text in groß und klein wandeln, aber was ist denn wenn es gemisch ist? cg, CG oder Cg.

Gibts nicht noch ne andere Lösung bzw Suchmethode?
Ich bin ein Delphi-Anfänger.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#7

Re: Textdatei nach bestimmten Begriff durchsuchen

  Alt 1. Apr 2008, 11:37
SameText() oder CompareText()
Ralph
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Textdatei nach bestimmten Begriff durchsuchen

  Alt 1. Apr 2008, 11:40
Hallo,

vielleicht solltest Du Dir einmal klar werden
was Du willst.

Eine case sensitive Behandlung des Textes, also mit Unterscheidung von cg, CG oder Cg.
Das mach pos von Hause aus.

Eine case insensitive Behandlung des Textes, keine Unterscheidung von cg, CG odewr Cg.
Dann heißt es vor der Prüfung mit pos alles gleichzumachen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
N30N

Registriert seit: 7. Aug 2007
78 Beiträge
 
#9

Re: Textdatei nach bestimmten Begriff durchsuchen

  Alt 2. Apr 2008, 08:13
Ahhh tschuldigung Klaus01, ich glaub ich hab nur die Hälfte von deinem Vorschlag erkannt. Jetzt gleiche ich Text und Suchbegriff vor dem Vergleich auf lowercase an und es funktioniert!

Danke ncohmal an alle

Richtiger Quellcode ist also:

Delphi-Quellcode:
procedure TForm5.SuchestartenClick(Sender: TObject);
var
    StringList : TStringList;
    s : string;
    i : byte;
begin
  memo1.clear;
  for i := 1 to 100 do
    begin
      StringList := TStringList.Create;
      try
        StringList.LoadFromFile('\\Server\Datenbank\' + inttostr(i) + '.txt');
        s := lowercase(StringList.Text);
        if pos(lowercase(edit1.text), s) > 0 then
        memo1.lines.add (inttostr(i));
      finally
        StringList.free;
      end;
    end;
end;
Ich bin ein Delphi-Anfänger.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.
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