Autor Beitrag
ConditionZero
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Mi 14.03.07 20:31 
Nabend,

Folgendes: Es existiert ein Ordner voll mit .ini dateien. Die will ich per Knopfdruck durchsuchen nach einem Wort aber in allen der Dateien die in dem Verzeichnis sind.
Mein Problem: Die Anzahl der Dateien im dem Verzeichnis ist dynamisch, also da kommen von Zeit zu Zeit mehr Dateien dazu.

Gibt es ein Befehl der alle Dateien in einem Verzeichnis durchsucht?

lG
Calculon
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 676

Win XP Professional
Delphi 7 PE, Delphi 3 PRO
BeitragVerfasst: Mi 14.03.07 20:47 
ConditionZero hat folgendes geschrieben:
Die Anzahl der Dateien im dem Verzeichnis ist dynamisch, also da kommen von Zeit zu Zeit mehr Dateien dazu.

Du könntest die Filelistbox-Komponente benutzen und diese mit einem Timer in einem bestimmten Intervall updaten.

Gruß

Calculon
--
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Mi 14.03.07 21:15 
Würd ich lieber den Suche in: Delphi-Forum, Delphi-Library SHELLCHANGENOTIFIER mit Suche in: Delphi-Forum, Delphi-Library FINDFIRST und Suche in: Delphi-Forum, Delphi-Library FINDNEXT nehmen.
ConditionZero Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Mi 14.03.07 23:35 
Hm die Suche hat mir nicht weitergeholfen bei den 3 Begriffen und die Delphi-Hilfe.
Das war alles etwas anderes wie ich brauch. Mein genaues Vorhaben:
Eine Datenbank von Infos über Personen die über die Zeit angelegt werden.
Dann wird der neue Eintrag im Ordner als "Vorname Name.ini" gepseichert. In dieser Datei sind die näheren Informationen also der Wohnort etc. Und nun will ich eben eine Suche einbauen, wo man zum Beispiel den Ort eingeben kann und dann durchsucht es die Namen der Dateien und den Inhalt aller Dateien in diesem Ordner nach dem einem Wort.

lG
Billi Berserker
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 44



BeitragVerfasst: Mi 14.03.07 23:47 
Du muß einfach nur das Verzeichnisse nach .ini Dateien durchsuchen, diese öffnen und den Inhalt der Datei durchsuchen :)
Stichwort: TSearchRec, FindFirst, FindNext um alle .ini Dateien zu finden.
In TSearchRec.Name ist dann der Dateiname gespeichert den du durchsuchen kannst.
Für jede zutreffende Datei mußt du dann nur noch die Datie öffnen und durchsuchen...

Das ganze über ne Filelistbox-Komponente und nen Timer zu machen wäre ziemlich krank, allein der Gedanke daran tut schon weh ;)


[Edit]
Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  Dir        : String;
  sr         : TSearchRec;
begin
  Dir := 'C:\My Folder\';
  if FindFirst(Dir + '*.ini',FAAnyFile,sr) = 0 then
  repeat
    IniFileDurchSuchDings.LoadFromFile(Dir + sr.name);  
    IniFileDurchSuchDings.DurchSuchMich(nachIrgendwas);  
  until FindNext(sr) <> 0;
  FindClose(sr);
end;
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Mi 14.03.07 23:56 
Die Ini-Dateien sind dann wahrscheinlich nach folgendem Schema aufgebaut?

ausblenden Quelltext
1:
2:
3:
4:
[Karl Son]
Name=Karlson
Wohnort=Erde
...


Wenn ja, hab ich verstanden was du willst.

Dann gibt es zwei Möglichkeiten:

Möglichkeit...genau hier war ich als ich gesehen habe das Billi schon geantwortet hat ;)

Noch eine kleine Ergänzung: Wenn dein Programm die inidateien erstellt, dann kannst du auf das FindFirst usw. verzichten indem du eine globale Liste führst welche Dateien da sein müssten.

Irgendwo in deinem Programm wirst dann nämlich die Procedure NeueIniDateiAnlegen haben. Diese dann einfach um die Zeile ListeAllerIniDateien.add(Pfad + Name) erweitern. Auf dem gleichen Weg reagierst du dann auch in den Bearbeiten & Löschen-Routinen.

Bei der Suche genügt es dann, dass du mit for i:=0 to ListeAllerIniDateien.count-1 die Listen durchgehen kannst.

Hat den Vorteil das dein Code so a) sauberer, weil gut geplant ist und b) nur die relevanten Ini-Dateien durchsucht werden. Im Zielverzeichniss könnten dann also auch noch x-belibige andere Ini's liegen, die aber unangetastet bleiben.

Nachteil: Du musst innerhalb der Schleife darauf reagieren, ob der Benutzer die Datei manuell über den WinExplorer gelöscht hat. ( Suche in: Delphi-Forum, Delphi-Library FILEEXISTS ). Nachteil 2: Du musst die IniListe auch nach einem Programmneustart aktuell haben. Das bedeutet, dass du sie entweder immer abspeichern musst oder, was so gesehen wohl das beste wäre, sie einmal beim Programmstart via FindFirst erstellen.
ConditionZero Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 190

Win XP
Delphi 7 PE, C++ (Dev-C++), HTML+PHP (Dreamweaver MX), JavaScript(MS FrontPage)
BeitragVerfasst: Fr 16.03.07 22:27 
Ok, soweit so gut.

Was genau meinst du mit iniDurchsuchDings? ;)


lG
Billi Berserker
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 44



BeitragVerfasst: Fr 16.03.07 23:09 
Pseudo Code... irgendeine Klasse halt... kannst du implementieren wie du willst
Überleg einfach mal was mit jeder einzelnen ini Datei gemacht werden muß nachdem du sie gefunden hast... das muß an diese Stelle