![]() |
Mehrere Dateien nach String durchsuchen
servus Leute hab mal ne frage wenn ich einen Best. String habe kann ich dann alle .txt dateien in einem ordner nach diesem absuchen ... also ich meine den Inhalt der .txt dateien .....
Bitte um rückmeldung |
Moin Foxy,
sicher geht das. Jetzt stellt sich mir noch die Frage, wo genau Dein Problem liegt: Finden der Dateien? Lesen der Dateien? Wie nach einem String suchen? Alles zusammen? Irgendetwas anderes? |
Hi Foxy, in der Netikette sind crosspostings unerwünscht. Erst einmal in einem Forum fragen und nicht gleich in mehreren. Und dann sollte man auch mal selbst suchen. Jedes Forum hat eine Suchfunktion. Hier ist übrigens dein Crossposting:
![]() Gruß WW |
@wwerner :warn:
Zitat:
ich bin gerade noch einmal unsere Regeln alle durchgegangen und habe keinen Verweis darauf gefunden. Ich finde es auch nicht dramatisch, wenn jemand dringend Hilfe braucht, an mehreren Stellen nach einer möglichen Lösung zu suchen. Verschiedene Quellen bieten oft auch verschiedene Lösungsansätze. @foxy : Wenn Du eine Lösung in einem anderen Forum erhälst sei fair und präsentiere uns diese. Einerseits wissen wir, dass Du jetzt glücklich bist, andererseits kann diese auch uns weiterhelfen. ;) Oh, und hilf uns auf den Weg. Christians Fragen solltest Du beantworten, damit wir gezielt helfen können. |
@sakura
Hi, Ich habe nicht von den Richtlineien in diesem Forum geschreiben, sondern von der allgemeinen Netikette :D Gruß Wolfgang |
Trotzdem sehe auch ich keinen Grund eine Frage deshalb nicht zu beantworten.
|
Also Leute
es geht darum ich habe in einer Dir. mehrere txt-files ich will alle nacheinander öffnen um herauszufinden wo mein string der gesucht wird siche befindet .... den string suchen weis ich wie das geht in einer datei aber nich wie ich mehrere Dateien hintereinader öffne .... wenns das irgendmöglich ist was ich nich weis ;) weil ich erst seit 6 monate programmier also die dateien haben alle den namen xxxch.txt die ich eigentlich öffnen will xxx steht für ein datum es gibt aber auch noch dateien in der Dir. xxxdr.txt xxxma.txt die brauch ich eigentlich nicht zu öffnen aber .. ach ka =) ich hoffe ihr kommt damit klar ... danke im vorraus |
Also muss das Programm die Letzten 6 Zeichen Vergleichen. Wenn diese "ch.txt" sind soll es die Datei öffnen und nach einem vorher eingegebenen String durchsuchen?
|
Genau wenn er in dieser nicht gefunden dann die nächste xxxch.txt durchsuchen ... es gibt für jeden tag eine xxxch.txt
|
Hier also die Routine zum Durchsuchen eines Verzeichnisses. Diese Routine ruft dann die Routine Search mit dem gefundenen Dateinamen inkl. Pfad auf. Diese hast Du wohl schon
Delphi-Quellcode:
...:cat:...
procedure FindFiles(Pfad, Mask: String);
var SR: TSearchRec; begin // letzten backslash bei Bedarf anhängen. if AnsiLastChar(Pfad)^ <> '\' then Pfad := Pfad + '\'; if FindFirst(Pfad + Mask, faAnyFile, SR) = 0 then repeat if SR.Attributes and faDirectory = 0 then [color=#ff0044]Search(Pfad + SR.Name);[/color] until FindNext(SR) <> 0; FindClose(SR); end; [color=#0019ff] Aufruf mit: FindFiles('C:\Temp', '*.ch.txt'); [/color] |
hmmm thx ich versuch das glei mal ich habs bischer bissal anders gemacht
Code:
so hab ich das gemacht aber ich versuch das andere dann ma ... mein bsp ging bei eienr datei wunderbar ... ich versuchs einfach
s:=UpperCase(DrivecomboBox1.Drive);
EditDatei.Text:=s+':\*.txt'; If FindFirst(EditDatei.Text,faAnyfile,searchrec)=0 then begin Display; end else begin ShowMessage('Nichts gefunden'); EditCharge.Clear; exit; end; AssignFile(f,EditDatei.text); {$i-} Reset(f) ; {$i+} if IOResult <>0 then begin ShowMessage ('Fehler: Datei kann nicht geöffnet werden'); EditCharge.Clear; exit; end; end; |
Viel Erfolg.
Zur besseren Übersicht, solltest Du aber Dateisuche, Stringsucheund Ergebnissanzeige von einander trennen. <- Erfahrungssache. ...:cat:... |
ja das iss au noch so was ... ich habe fast alles in eine unit gepackt und die wird mir langsam bissal gros mit 1200 zeilen wie kann ich das ich z.b. wenn ich auf ein button drücke auf ne andere unit verweise ... also nur das diese im hintergrund arbeitet implementation einbinden iss klar aber der befehl
ich habe das versucht mit
Delphi-Quellcode:
aber das geht wohl nich so richtig ;)
Unit drucken;
|
Mal ein kurzes Bsp.
Delphi-Quellcode:
Für weitere Fragen sind wir natürlich jederzeit da :)// UNIT uHallo.pas [color=#ff0022]unit uHallo;[/color] interface procedure ShowHallo(Message: AnsiString); implementation procedure ShowHallo(Message: AnsiString); begin // message dlg ... end; end. // ENDE uHallo.pas .... .... // Dein Form unit Form1; interface type TForm1 = class(TForm) procedure Button1OnClick(Sender: TObject); private ... public end; implementation [color=#ff0019]uses uHallo;[/color] procedure TForm1.Button1OnClick(Sender: TObject); begin ShowHallo('Du hast Button1 gedrückt!'); end; end. |
Delphi-Quellcode:
EditDatei.Text:=s+':\*.txt';
If FindFirst(EditDatei.Text,faAnyfile,searchrec)=0 then begin Display; //Was ist das? end else begin ShowMessage('Nichts gefunden'); EditCharge.Clear; exit; end; AssignFile(f,EditDatei.text); // EditDatei.text ist z.B c:\*.txt das kann man nicht öffen |
Schön mal jemand zu finden der mal direkt antwortet :hello:
aber bei deinem quellcode geht soweit alles hab denke ich auch alles richtig eingefügt nur der findet an der stelle
Delphi-Quellcode:
das serach nicht wie muss ich das deklarieren??
repeat
if SR.Attributes and faDirectory = 0 then Search(Pfad + SR.Name); until FindNext(SR) <> 0; sorry ich hab wirklich noch null plan :oops: [/quote][/center] |
Der Name Search ist nur ein Beispiel.
Diese Routine ist dann Deine Lösung, um zu überprüfen, ob der gesuchte String in der Datei eigentlich vorkommt. |
hmm wenns keine umstände macht kannst du die einzelnen schritte erklären das ich das auch richtig in mein programm einbaue?ß
|
Mit FindFiles hast Du jetzt die Routine, welche nach allen Dateien in einem Verzeichnis sucht, welche Deiner Maske entsprechen.
FindFiles ruft jetzt die Routine Search auf, welche für eine bestimmte Datei überprüft, ob der gesuchte String darin vorkommt.
Delphi-Quellcode:
Das ist jetzt nur ein grobes Gerüst, sollte Dir aber weiterhelfen ;)
// unvollendetes Beispiel mit suche nach FText
procedure Search(aFileName: String); begin with TStringList.Create do try LoadFromFile(aFileName); if Pos(FText, Text) > 0 then ShowMessage('Der Text wurde in der Datei ' + aFileName + ' gefunden.'); finally Free; end; end; |
Hallo wwerner,
Zitat:
Grüsse, Daniel :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:28 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