Klein und großschreibung bei suche

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Klein und großschreibung bei suche

Beitrag von hanibal »

wie kann ich nach dateien suchen, ohne das die grß und kleichschreibung dabei beachtet wird?

das ist meine bisherige funktion:

Code: Alles auswählen

Procedure FindFiles (aPath, aFindMask: String; aWithSub: Boolean; aResult: tStrings; bResult: tStrings);
Var
  FindRec: tSearchRec;
Begin
  // Wenn die Stringliste nil ist oder aPath oder aFind nicht angegeben ist
  // dann raus
  If (aPath = '') or (aFindMask = '') or Not Assigned (aResult) Then
  begin
     showmessage('Fehler beim hinzufuegen der Dateien');
     Exit;
  end;
 
 
  // Wenn am Ende der Pfadangabe noch kein \ steht, dieses hinzufü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 (FindRec.Name);
        bResult.Add(aPath + findrec.Name);
 
    Until FindNext (FindRec) <> 0;
 
 
  FindClose (FindRec);
 
 
  // Wenn nicht in Unterverzeichnissen gesucht werden soll dann raus
  If Not aWithSub Then
    Exit;
 
 
  // 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
          // Funktion erneut aufrufen, um Verzeichnis zu durchsuchen (Rekursion)
          FindFiles (aPath + FindRec.Name, aFindMask, aWithSub, aResult,bresult);
    Until FindNext (FindRec) <> 0;
 
 
   FindClose (FindRec);
End;


PS: unter linux

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Da musst du wohl nach allen Dateien suchen und dann "von Hand" vergleichen, mit AnsiCompareFileName

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

was ist ansicomparefilename?

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

if AnsiCompareStr(LowerCase(SearchFileName), LowerCase(FindFileName)) = 0 then blabla;

Ob mit oder ohne Pfad mußt du selbst entscheiden. Benutz am besten die rekursive Dateisuche aus den Downloads.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

hanibal hat geschrieben:was ist ansicomparefilename?


Na was wohl? Schaut doch mal selber was nach.
http://www.freepascal.org/docs-html/rtl ... ename.html

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

habs jetzt gelöst, ich suche einfach nach "*", und gucke dan mit pos, ob das suchwort im datei nahmen vorkommt, vorher werden natürlich dateiname ud suchnahme lowercase.

Antworten