Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism Ordner auf Dateien überprüfen mit Timer (https://www.delphipraxis.net/65693-ordner-auf-dateien-ueberpruefen-mit-timer.html)

ZeroQool007 20. Mär 2006 09:18


Ordner auf Dateien überprüfen mit Timer
 
Hallo, habe nichts über die Suchfunktion gefunden oder ich habe vllt die falschen Begriffe eingetrage. Ich hoffe ihr könnt mir helfen. Ich möchte das jede Sekunde ein bestimmter Pfad überprüft wird, ob sich darin eine neue Datei beeinhaltet. Bei D7 gab es eine Filelistbox aber bei D2006 habe ich nichts gefunden. :(

marlem 20. Mär 2006 10:12

Re: Ordner auf Dateien überprüfen mit Timer
 
nach dateien suchen geht generell findfirst.... findnext!
guckst du hier:
Delphi-Quellcode:
//Sucht nach der angegeben Dateimaske im Verzeichnis vom angegeben Pfad
//und gibt das Ergebnis in einer stringliste zurück.
//Beispielaufruf:   ListeTemp := SearchFilesInDirectory(quellpfad+'\GBW*.*');

function SearchFilesInDirectory(mask: string): Tstringlist;
var
  search: TSearchRec;
  directory: string;
begin
  result := tstringlist.create;
  directory := ExtractFilePath(mask);
  // Alle Dateien im angegebenen Verzeichnis suchen
  if FindFirst(mask, $23, search) = 0 then
  begin
    repeat
    result.Add(directory + search.Name);
    until FindNext(search) <> 0;
  end;
end;

mquadrat 20. Mär 2006 10:22

Re: Ordner auf Dateien überprüfen mit Timer
 
Und falls du Klassen des .NET Frameworks nutzen möchtest schaut das ungefähr so aus (Aus der .NET Framework Hilfe)

Code:
using System;
using System.IO;

public class NameTest
{
    public static void Main()
    {
        // Create a reference to the current directory.
        DirectoryInfo di = new DirectoryInfo(Environment.CurrentDirectory);
        // Create an array representing the files in the current directory.
        FileInfo[] fi = di.GetFiles();
        Console.WriteLine("The following files exist in the current directory:");
        // Print out the names of the files in the current directory.
        foreach (FileInfo fiTemp in fi)
            Console.WriteLine(fiTemp.Name);
    }
}
Musst du halt noch entsprechend in Delphi-Syntax bringen

ZeroQool007 20. Mär 2006 12:30

Re: Ordner auf Dateien überprüfen mit Timer
 
@ marlem

thx....

Deine Funktion ist gut und sehr einleuchtend, aber wieso bekomme ich immer als Rückgabewert

Zitat:

Borland.Vcl.TStringList

Delphi-Quellcode:
Textbox1.text:= SearchFilesInDirectory('D:\Daten\Kunden\*.txt').ToString;
das sollte doch so funktionieren, oder stehe ich gerade auf dem Schlauch??? :(

marlem 20. Mär 2006 12:46

Re: Ordner auf Dateien überprüfen mit Timer
 
Zitat:

Textbox1.text
das ist ein string mein bester! du brauchst eine stringlist!!!

Delphi-Quellcode:
Var
VStrL : TStringlist;
begin
VStrL := TStringlist.create;
try
VStrL := SearchFilesInDirectory(quellpfad+'\GBW*.*');
....

finally
VStrL.destroy;
end;
end;

RavenIV 21. Mär 2006 07:24

Re: Ordner auf Dateien überprüfen mit Timer
 
Zitat:

Zitat von ZeroQool007
Hallo, habe nichts über die Suchfunktion gefunden oder ich habe vllt die falschen Begriffe eingetrage. Ich hoffe ihr könnt mir helfen. Ich möchte das jede Sekunde ein bestimmter Pfad überprüft wird, ob sich darin eine neue Datei beeinhaltet. Bei D7 gab es eine Filelistbox aber bei D2006 habe ich nichts gefunden. :(

dieser Ansatz ist sehr ressourcen-fressend.
bei Windows gibt es eine Möglichkeit, sich benachrichtigen zu lassen, wenn sich Dateien in einem Verzeichnis ändern.
Dazu gibt es jede Menge Komponenten (DirMonitor, FolderMonitor, usw), musst halt mal bei torry.net suchen.

Schrammel 21. Mär 2006 11:21

Re: Ordner auf Dateien überprüfen mit Timer
 
Versuche es mal mit der .NET-Klasse 'System.IO.FileSystemWatcher'.

Ich habe auf Codeproject einen Artikel dazu gefunden:

http://www.codeproject.com/csharp/directorymirror.asp

Gruß

Stefan

s.h.a.r.k 21. Mär 2006 11:55

Re: Ordner auf Dateien überprüfen mit Timer
 
Kleiner Tip: Ich würde es in einem Thread programmieren, habe mit den Timern schon meine Erfahrungen gemacht...


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