[TuT] Eigens Dateisuch System erstellen mit Delphi
Hi,
in meinem ersten Tutorial möchte ich euch erklären/zeigen wie ihr einen eigenen Suchdienst in Delphi proggen könnt. Dieser hat den mehrere Vor- und Nachteile
Pro:
- Ihr erlernt die Sprache und und deswegen machen wir das ja überhaupt erst
- Er geht meiner Meinung schneller als der Windows eigene Suchfunktion
- Sie sucht nur wirklich nur Dateien mit dem exakt angegebenen Namen (was vlt. Auch ein Nachteil sein könnte)
Contra
- Wie schon angesprochen sucht sie nur nach Dateiendungen oder dem exakten Namen
- Sonst fällt mir eigentlich gar nix ein.
Was brauchen wir?
- Delphi
- Menschenverstand ;)
Los geht’s…
Als erstes öffnet ihr nun Delphi. Ich benutze auf den Bildern Delphi 2010. Bitte nicht wundern. Es ist keine illegale Version. Bloß eine Demo, die ich über TimeShifter aufrecht erhalte.
Also, los geht’s, öffnet eine VCL Anwendung
[Only registered and activated users can see links. Click Here To Register...]
Wenn ihr das habt, bestückt euer Formular mit folgenden Komponenten:
- 2 Groupboxen
- 2 Buttons oder 2 BitBtn
- 1 Label
- Und 1 Edit Feld
Beschriftet die Komponenten anschließend wie auf dem bild
[Only registered and activated users can see links. Click Here To Register...]
Wechselt mit F12 in den Code Editor.
Schreibt nun unter folgenden Code die neue Prozedure:
[Only registered and activated users can see links. Click Here To Register...]
Puhh, sieht ja ziemlich kompiziert aus. Ich habe regelmäßig Kommentare eingefügt. Für alle die aber zu faul sind die sich raus zu suchen erkläre ich hier nochmal Grob. Die Prozedure fängt im Verzechnis C:\ an zu suchen, schreibt die gefunden Treffer/Datein in die ListBox und öffnet selber das nächste Verzeichnis. Dort wiederholt sie den Vorgang. Dieses Verfahren nennt sich „Rekursion“. Mehr dazu auf
[Only registered and activated users can see links. Click Here To Register...]
Wie gehts weiter?
So, den Code haben wir.. Nur er nützt uns noch nix. Um ihn aufzurufen doppelklicken wir auf den Button mit der Aufschrift "Datei(n) suchen".
Dort gehört folgender Code hinein:
(1): Als erstes müssen wir im Edit Feld die zu suchende Datei eingeben. Diese wird in einen String umgewandelt .
(2): Ist der eigentliche Aufruf der Funktion. Start ist im laufwerk C:\. Unser zu suchendes Objekt wird nun von einem String in ein PChar umgewandelt. Anschließend wird es in der ListBox angezeigt.
(3): Als nächstes werden die Einträge in der ListBox gezählt
Kommt noch was?
Als kleines Extra habe ich mir gedacht, das man die Datei direkt öffnen kann.
Dazu verwenden wir die "ShellAPI". Diese bitte unbedingt voher einbinden.
Dann gehts auch schon los mit dem öffnen. Einfach einen Doppelklick auf
"Datei oder Programm öffnen" und folgenden Code einfügen.
Jetzt könnt ihr eurer Programm mit F9 starten und euch über eurer Arbeit freuen.
Nachtrag
Ich hoffe euch hat mein erstes Tutorial gefallen. Wenn es gut ankommt, werde ich auch gerne weitere erstelln. ich hoffe auch das es sehr Anwenderfreundlich geschrieben wurde.
Hier nochmal der Komplette Code: :handsdown:
Außerdem kann alles nochmal gedownloaded werden.
Über ein Thanks würde ich mich auch sehr freuen :)
Hi,
in meinem ersten Tutorial möchte ich euch erklären/zeigen wie ihr einen eigenen Suchdienst in Delphi proggen könnt. Dieser hat den mehrere Vor- und Nachteile
Pro:
- Ihr erlernt die Sprache und und deswegen machen wir das ja überhaupt erst
- Er geht meiner Meinung schneller als der Windows eigene Suchfunktion
- Sie sucht nur wirklich nur Dateien mit dem exakt angegebenen Namen (was vlt. Auch ein Nachteil sein könnte)
Contra
- Wie schon angesprochen sucht sie nur nach Dateiendungen oder dem exakten Namen
- Sonst fällt mir eigentlich gar nix ein.
Was brauchen wir?
- Delphi
- Menschenverstand ;)
Los geht’s…
Als erstes öffnet ihr nun Delphi. Ich benutze auf den Bildern Delphi 2010. Bitte nicht wundern. Es ist keine illegale Version. Bloß eine Demo, die ich über TimeShifter aufrecht erhalte.
Also, los geht’s, öffnet eine VCL Anwendung
[Only registered and activated users can see links. Click Here To Register...]
Wenn ihr das habt, bestückt euer Formular mit folgenden Komponenten:
- 2 Groupboxen
- 2 Buttons oder 2 BitBtn
- 1 Label
- Und 1 Edit Feld
Beschriftet die Komponenten anschließend wie auf dem bild
[Only registered and activated users can see links. Click Here To Register...]
Wechselt mit F12 in den Code Editor.
Schreibt nun unter folgenden Code die neue Prozedure:
[Only registered and activated users can see links. Click Here To Register...]
Code:
Procedure FindFiles (aPath, aFindMask: String; aResult: tStrings);
Var
FindRec: tSearchRec;
Begin
// Wenn unser Edit Feld nicht ausgefüllt wurde dann abbrechen
If (aPath = '') or (aFindMask = '') or Not Assigned (aResult) Then
Exit;
// Wenn der Pfad unvollständig, ein "\" eibfügen
If aPath[Length (aPath)] <> '\' Then
aPath := aPath + '\';
// Im aktuellen Verzeichnis nach der Datei suchen
If FindFirst (aPath + aFindMask, faAnyFile, FindRec) = 0 Then
Repeat
If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then
// ...Ergebnis in die Stringlist einfügen
aResult.Add (aPath + FindRec.Name);
Until FindNext (FindRec) <> 0;
FindClose (FindRec);
// In Unterverzeichnissen weiter suchen
If FindFirst (aPath + '*.*', faAnyFile, FindRec) = 0 Then
Repeat
If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then
// Feststellen, ob es sich um ein Verzeichnis handelt
If Boolean (FindRec.Attr and faDirectory) Then
// Im nächstes verzeichnis suchen ;)
FindFiles (aPath + FindRec.Name, aFindMask, aResult);
Until FindNext (FindRec) <> 0;
FindClose (FindRec);
End;
[Only registered and activated users can see links. Click Here To Register...]
Wie gehts weiter?
So, den Code haben wir.. Nur er nützt uns noch nix. Um ihn aufzurufen doppelklicken wir auf den Button mit der Aufschrift "Datei(n) suchen".
Dort gehört folgender Code hinein:
Code:
procedure TForm1.BitBtn1Click(Sender: TObject);
var Eingabe: String;
Find: Integer;
begin
Eingabe := String(Edit1.Text); // (1)
FindFiles ('C:\', PWideChar(Eingabe), ListBox1.Items); // (2)
Find := listbox1.items.count; // (3)
GroupBox1.Caption := 'Es wurden ' + (IntToStr(Find))+ ' ' + Eingabe + ' Datein gefunden';
end;
(2): Ist der eigentliche Aufruf der Funktion. Start ist im laufwerk C:\. Unser zu suchendes Objekt wird nun von einem String in ein PChar umgewandelt. Anschließend wird es in der ListBox angezeigt.
(3): Als nächstes werden die Einträge in der ListBox gezählt
Kommt noch was?
Als kleines Extra habe ich mir gedacht, das man die Datei direkt öffnen kann.
Dazu verwenden wir die "ShellAPI". Diese bitte unbedingt voher einbinden.
Code:
uses ShellAPI;
"Datei oder Programm öffnen" und folgenden Code einfügen.
Code:
var s:string; begin s := ListBox1.Items[ListBox1.ItemIndex]; // wählt einen entsprechenden Eintrag aus shellexecute(handle, 'open', PChar( s), nil, nil, sw_show); // öftnet die Datei end;
Nachtrag
Ich hoffe euch hat mein erstes Tutorial gefallen. Wenn es gut ankommt, werde ich auch gerne weitere erstelln. ich hoffe auch das es sehr Anwenderfreundlich geschrieben wurde.
Hier nochmal der Komplette Code: :handsdown:
Außerdem kann alles nochmal gedownloaded werden.
Über ein Thanks würde ich mich auch sehr freuen :)