Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schnittstellen für Windowsfunktionen in Delphie 7 (https://www.delphipraxis.net/76996-schnittstellen-fuer-windowsfunktionen-delphie-7-a.html)

ESIETP 13. Sep 2006 10:40


Schnittstellen für Windowsfunktionen in Delphie 7
 
Liebe Delphie Programmiererinnenund Programmierer,

ich habe folgende Frage:

Ich möchte ein Programm verfassen, welches der Windows Suchen Funktion änelt.

Trotz suche in der Delphiehilfe und in Netz habe ich nicht wirklich Hilfe zu dem Problem gefunden:

Wie bekomme ich von Windows den Pfad und die Eigenschaften der einzelnen Dateien in Delphie.

Gibt es dafür eine Schnittstelle oder muss ich das ganz anders angehen.


Vielen Dank für eure Hilfe

Der ESIETP


PS.: Noch eine Frage am Rande: Ist es möglich in einem StrinGrid eine Mehrfachauswahl in
unterschiedlichen Zeilen zu streffen?

mkinzler 13. Sep 2006 10:43

Re: Schnittstellen für Windowsfunktionen in Delphie 7
 
Such mal nach FindFirst

ESIETP 13. Sep 2006 10:52

Re: Schnittstellen für Windowsfunktionen in Delphie 7
 
ok,vielen dank,

werde mir das nachher mal genau ansehen, habs jetzt nur überflogen


gibts zu dem StrinGrid noch eine Lösung?

Vielen Dank

Der ESIETP

Luckie 13. Sep 2006 10:53

Re: Schnittstellen für Windowsfunktionen in Delphie 7
 
Bitte erstell für jede Frage einen eigenen Thread, sonst geht es hier wild durcheinander.

Neutral General 13. Sep 2006 12:01

Re: Schnittstellen für Windowsfunktionen in Delphie 7
 
Zitat:

Zitat von mkinzler
Such mal nach FindFirst

Naja ich denke man sollte ihm das schon bisschen erklären..
Also zuerst mal ein ganz kleines Beispiel mit Erklärung:

Delphi-Quellcode:
var SearchRec: TSearchRec;
begin
  if FindFirst('C:\*.*',faAnyFile,SearchRec) = 0 then // Datei gefunden
  begin
    ShowMessage(SearchRec.Name); // DateiName anzeigen
  end;
  FindClose(SearchRec);
end;
Also zuerst musst du eine Variable deklarieren vom Typ TSearchRec. Darin werden die Informationen über eine gefundene Datei abgelegt (deswegen auch var-Parameter). Wie schon oben im Quelltext zu sehen gibt FindFirst 0 zurück wenn die/eine Datei gefunden wird die den Kriterien entspricht, die bei Pfad angegeben wurden (z.B findet C:\*.* die erst beste Datei auf C:\; C:\*.txt die erste Textdatei usw... wobei nicht rekursiv durchsucht wird.. das muss man schon selbst machen.. aber dazu komme ich gleich).
Jetzt zu den einzelnen Eigenschaften von TSearchRec:

:arrow: Name = DateiName der gefundenen Datei (ohne Pfad!)
:arrow: Size = Dateigröße der gefundenen Datei in Bytes
:arrow: Attr = Attribute der gefundenen Datei (faReadOnly, faHidden, faSysFile, faVolumeID, faDirectory, faArchive, faSymLink, faAnyFile)
:arrow: Time = Erstellungsdatum der Datei (Muss mit FileDateToDateTime(TSearchRec.Time) in ein normales TDate umgewandelt werden!)
:arrow: ExcludeAttr = hab ich leider keine Ahnung :(
:arrow: FindHandle = Unwichtig.. wird nur intern von TSearchRec,FindFirst,FindNext,.. benutzt
:arrow: FindData = Record mit allen oben schon beschriebenen Daten und auch das ein oder andere zusätzliche...

Zu TSearchRec.Attr: Du überprüfst ob ein Attribut gesetzt ist folgendermaßen:

Delphi-Quellcode:
if SearchRec.Attr and faHidden <> 0 then
 ShowMessage('Datei ist versteckt!');
Ein Beispiel um eine bestimmte Datei zu suchen:

Delphi-Quellcode:
procedure TForm1.FindSpezificFile(Filename: String; Path: String);
var SR: TSearchRec;
    tmpPath: String;
begin
  tmpPath := Path + '*.*';
  if FindFirst(tmpPath,faAnyFile, SR) = 0 then // was gefunden?
  begin
   repeat // solange...
    if ((SR.Attr and faDirectory) = faDirectory) then // falls es ein Ordner ist dann auch diesen durchsuchen
    begin
      if (SR.Name <> '.') and (SR.Name <> '..') then
      begin
        FindSpezificFile(Filename, Path + SR.Name +'\');
      end;
    end else // wenn nicht dann gucken ob die gefundene Datei (teilweise) mit der gesuchten übereinstimmt
    begin
      if pos(Uppercase(Filename),UpperCase(SR.Name)) > 0 then
      ListBox1.Items.Add(Path + SR.Name); // Gefundene Datei in Listbox anzeigen
    end;
    Application.ProcessMessages; // PC soll in der Zeit noch reagieren
   until FindNext(SR) <> 0; // nach neuen Dateien in dem Ordner suchen bis keine mehr da gefunden werden
   FindClose(SR); // Suche beenden
  end;
end;

//Aufruf
procedure TForm1.Button1Click(Sender: TObject);
begin
 FindSpezificFile(Edit1.Text,'C:\');
end;
Ich hoffe mal das ich einigermaßen verständlich erklärt habe :)

Gruß
Neutral General

mkinzler 13. Sep 2006 12:05

Re: Schnittstellen für Windowsfunktionen in Delphie 7
 
Zitat:

Naja ich denke man sollte ihm das schon bisschen erklären..
Es gibt ja noch die OH und mit dem Begriff hat er bestimmt auch einiges im Forum gefunden. Ihm scheint ja nur der passende Suchbegriff gefehlt zu haben.

Neutral General 13. Sep 2006 12:14

Re: Schnittstellen für Windowsfunktionen in Delphie 7
 
Zitat:

Zitat von mkinzler
Zitat:

Naja ich denke man sollte ihm das schon bisschen erklären..
Es gibt ja noch die OH und mit dem Begriff hat er bestimmt auch einiges im Forum gefunden. Ihm scheint ja nur der passende Suchbegriff gefehlt zu haben.

Joaa ich war grad nur irgendwie in der Laune jemandem was zu erklären :mrgreen:

ESIETP 13. Sep 2006 15:33

Re: Schnittstellen für Windowsfunktionen in Delphie 7
 
Vielen Dank für die Hilfe

und vorallem für Danke für die Erklährung.

Auf jedenfall hat mir der Suchbegriff gefehlt,

aber auch so eine schöne Darstellung ist nicht überall zu finden.


Der ESIETP


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 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