AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Schnelle Dateisuche

Ein Thema von norwegen60 · begonnen am 7. Jan 2008 · letzter Beitrag vom 9. Jan 2008
Antwort Antwort
Seite 2 von 2     12   
KrasserChecker

Registriert seit: 21. Jul 2004
120 Beiträge
 
#11

Re: Schnelle Dateisuche

  Alt 7. Jan 2008, 15:33
@mashutu:

Du solltest daran denken, noch am Ende der Methode das hier mal aufzurufen, sonst hast Du da ein kleines Speicherleck
FindClose(sr); Zitat aus Delphi-Hilfedatei:
Zitat:
Die Prozedur gibt den mit FindFirst zugewiesenen Speicher frei.
FindClose beendet eine FindFirst/FindNext-Aufruffolge.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: Schnelle Dateisuche

  Alt 7. Jan 2008, 16:08
Moin Gerd,

Zitat von norwegen60:
ich verwende schon lange folgenden Code um nach Dateien zu suchen.
Dann hast Du auch schon seit langem einen Fehler drin

Das hier
(search.name[1]<>'.') ist nämlich schlicht falsch, da Dateien und Ordner durchaus mit einem Punkt beginnen dürfen.
Man muss explizit nach (Search.Name <> '.') and (Search.Name <> '..') suchen.

Warum ist bei Dir eigentlich die Liste als Var-Parameter deklariert.
Das finde ich relativ gefährlich.
Da ja die Ergebnisse an das übergebene Objekt mittels einer Methode des Objektes zugefügt werden sollen, kann man die Liste auch explizit als const deklarieren.

@mashutu:

if sr.Attr and faDirectory >0 then funktioniert in diesem Zusammenhang zwar, halte ich aber für nicht ungefährlich.
Ein Vergleich auf <> 0 oder auf = faDirectory wäre da sicherer.

Was bezweckst Du eigentlich mit $FF bei FindFirst?
Es ist zumindest kein für diesen Parameter gültiger Wert
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
7. Jan 2008, 16:09
Dieses Thema wurde von "Christian Seehase" von "Windows 9x / ME / 2000 / XP / 2003 / Vista" nach "Object-Pascal / Delphi-Language" verschoben.
Kein OS-Problem
mashutu

Registriert seit: 15. Nov 2007
195 Beiträge
 
#14

Re: Schnelle Dateisuche

  Alt 8. Jan 2008, 10:44
[quote="KrasserChecker"]Du solltest daran denken, noch am Ende der Methode das hier mal aufzurufen, sonst hast Du da ein kleines Speicherleck
FindClose(sr); Ja, da habe ich mich noch nicht daran gewoehnt, dass man das jetzt braucht ...
utu

if it was hard to write it should be hard to read
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.183 Beiträge
 
Delphi 12 Athens
 
#15

Re: Schnelle Dateisuche

  Alt 9. Jan 2008, 10:46
nicht nur jetzt (das braucht man eigentlich immer.

Nja, aber mal zu der/solchen Funktionen:
ich werwende sowas eigentlich nie, da ich es mir selbst implementier und direkt in der Suchfunktion die Dateibehandlung implementier,
also die gefundenen Dateien sofort beim auffinden behandel.

Es wird also nicht erst eine (womögliche) rießengroße Dateiliste erstellt und erst dann diese abgearbeitet.


ich war aber schon manchmal am Überlegen eine Suchfunktion mit Callback zu nutzen (war dann aber "für mich" meistens nicht nötig)

mit Callback:
Delphi-Quellcode:
Function FindFiles(Cost Dir, FileMask: String; Callback: TSearchCallback;
  Private: Integer; Subdirs: Boolean = False): Boolean;
  // das müßte dann nur noch erstellt werden,
  // so das es den Callback aufruft und mit Suchmasken arbeitet

Function MySearchCallback(Const Dateiname: String; Private: Integer): Boolean;
  Begin
    // Datei behandeln
    Result := True; // weiter Dateien suchen (false=Suche abbrechen)
  End;

Dir := 'C:\irgendwas\';
FileMask := 'ACA_CDM.DAT|*.~*|*.$*|*.BAK|*.SIK|*.ERR|*.TMP';
FindFiles(Dir, FileMask, MySearchCallback, 0{oder irgendein Wert/Zeiger...,
  welcher an Callback übergeben wird}
, True);
ich weiß jetzt nicht, ob's sowas schon fertig gibt,
aber es wäre wohl vom Speicher/Tempo her eine optimale Lösung,
abgesehn von einer direkten Implementation ala wicht(#11)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:22 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