AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Prüfen ob ein verzeichnis die gewünschte erweiterungen hat ?
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfen ob ein verzeichnis die gewünschte erweiterungen hat ?

Ein Thema von mimi · begonnen am 15. Okt 2006 · letzter Beitrag vom 16. Okt 2006
Antwort Antwort
Seite 2 von 2     12   
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Prüfen ob ein verzeichnis die gewünschte erweiterungen h

  Alt 15. Okt 2006, 18:22
danke für das beispiel... einige eigenschaften von TStrings kannte ich noch nicht. aber ich weiß im moment noch nicht wie mir das in meinem problem weiter helfen könnte.
Naja dann versuche ich mein problem mal zu lösen das muss ja irgenwie machbar sein was ich gerne möchte !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Prüfen ob ein verzeichnis die gewünschte erweiterungen h

  Alt 15. Okt 2006, 18:41
ich habe herrausgefunden warum meine funktion nicht funktionieren kann:
      if (SR.Name[1]<>'.') and ((sr.Attr or faAnyFile) = faAnyFile) and (pos(ExtractFileExt(sr.name),AMask) > 0)then begin pos gibt immer 0 zurück ich weiß einfach nicht warum AMask sieht z.b. so aus '.M4A.'
edit1:
in der hilfe steht doch drin das pos groß klein schreibung nicht beachten aber es beachtes sie trozdem

aber es läuft immer noch nicht so wie ich es mir vorgestellt habe das suchverzeichnis wird nicht als root knoten angezeigt die filter funktion funktioniert anscheind !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Prüfen ob ein verzeichnis die gewünschte erweiterungen h

  Alt 15. Okt 2006, 18:43
Moin Michael,

deshalb sagte ich ja, dass Du auf Nummer sicher gehen, und bei beiden Teilen von Pos UpperCase verwenden sollst:

pos(AnsiUpperCase(ExtractFileExt(sr.name)),AnsiUpperCase(AMask)) > 0
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
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#14

Re: Prüfen ob ein verzeichnis die gewünschte erweiterungen h

  Alt 15. Okt 2006, 18:44
beide string sind groß geschrieben.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Prüfen ob ein verzeichnis die gewünschte erweiterungen h

  Alt 15. Okt 2006, 18:51
Moin Michael,

Zitat von mimi:
n der hilfe steht doch drin das pos groß klein schreibung nicht beachten aber es beachtes sie trozdem
Das dürfte ein Fehler in der deutschen Hilfe sein.
In der englischen stimmt's.

Wenn in AMask '.M4A.' steht, und in sr.Name 'Dateiname.M4A', dann kann der Pos-Ausdruck nur 1 liefern.
Am besten Du prüfst noch einmal genau den Inhalt won sr.Name.
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
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#16

Re: Prüfen ob ein verzeichnis die gewünschte erweiterungen h

  Alt 15. Okt 2006, 18:58
das habe ich schon gemacht im debugger.... mein problem ist jetzt wo anders:
Delphi-Quellcode:
procedure TPlaylisten.LoadDir(dir:String; var t:Boolean);
var
  search: TSearchRec;
  directory: string;
  sl:TStringList;
  count:Integer;
begin
  directory := ExtractFilePath(dir);
  t:=GetAnderDir(dir,stdext,faAnyFile or faDirectory );
  // Hier*
  if (t) or (GetFilesInDirectory(dir,stdext,true)) then begin
    if Assigned(onPlaylisteAdd) then
    onPlaylisteAdd(directory ,GetPrvDir(directory));
  end;

  // find all files oder Hier*
  // damit auch verzeichnise eingelesen werden die keine unterverzeichnise enhalten oder
  if (isAnder = False) and (GetFilesInDirectory(dir,stdext,true) = True) then begin
    if Assigned(onPlaylisteAdd) then
    onPlaylisteAdd(directory ,GetPrvDir(directory));
  end;

  if FindFirst(directory + '*.*', $23, search) = 0 then begin
    repeat
      if pos(uppercase(ExtractFileExt(search.name)),stdext) > 0 then begin
        if Assigned(onAddItem) then
          onAddItem(directory + search.Name,search.Name);
      end;
    until FindNext(search) <> 0;
  end;

  // Subdirectories/ Unterverzeichnisse
  if FindFirst(directory + '*.', faDirectory, search) = 0 then begin
    repeat
      if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') then begin
        isAnder:=True;
        if t = False then
        if (Assigned(onPlaylisteAdd)) and (GetFilesInDirectory(dir,stdext,true)) then onPlaylisteAdd(directory + search.Name,search.Name);
        LoadDir(directory + search.Name + '\',t);
        isAnder:=False;
      end;
    until FindNext(search) <> 0;
    FindClose(search);
  end;
  //if t = false then
  if Assigned(onplaylistnewadd) then onplaylistnewadd(GetAnderDir(directory + search.Name + '\',stdext,faDirectory));
end; // LoadDir
mein ziel ist es das such verzeichnis auch dazustellen und zwar wie gesagt als root !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#17

Re: Prüfen ob ein verzeichnis die gewünschte erweiterungen h

  Alt 16. Okt 2006, 10:42
problem gelöst *G*
ich mache das jetzt so:
Delphi-Quellcode:
procedure GetAllFilesM(Path, Mask: String; List: TStrings;
  SubFolder: Boolean);
var
  Attrib, k: Integer;
  Search: TSearchRec;
begin
  Attrib := faArchive + faReadOnly + faHidden;

  if Path[Length(Path)] <> '\then Path := Path + '\';

  with TStringList.Create do
  try
    QuoteChar:='.';
// CommaText := Mask;
    DelimitedText:= Mask;
    for k := 0 to Count - 1 do
    if FindFirst(Path + Strings[k], Attrib, Search) = 0 then
      repeat
        List.Add(AnsiUpperCase(Path + Search.Name));
      until FindNext(Search) <> 0;

    FindClose(Search);
  finally Free end;

  if SubFolder then
  begin
    if FindFirst(Path + '*.*', faDirectory, Search) = 0 then
    begin
      repeat
        if ((Search.Attr and faDirectory) = faDirectory) and
          (Search.Name[1] <> '.') then
          GetAllFilesM(Path + Search.Name, Mask, List, SubFolder);
      until FindNext(Search) <> 0;

      FindClose(Search);
    end;
  end;
end; {Popov}

function GetFilesInDirectory(ADirectory: string; AMask: String; ARekursiv: Boolean):Boolean;
var
  extList:TStringList;
begin
  extList:=TStringList.Create;
  AMask:=StringReplace(aMask,'.',',*.',[rfReplaceAll   ]);
  Delete(amask,1,1);

// Amask
  GetAllFilesM(ADirectory,amask,extlist,ARekursiv);
// ShowMessage(extlist.text);

 if extlist.count > 0 then
    result:=true
  else
    result:=False;
end;
die erste procedure stamt vom Delphiforum. Wist ihr vileicht noch wie ich diese procedure optimieren könnte ?
ich glaube mein fehler war: das sich die procedure immer selbst aufgerufen hat. ich glaube folgendes:
er endeckt ein verzeichnis ruft sich slebst auf und kerht zum ersten aufruf zurück und gibt dort natürlich false zurück beim zweiten aufruf wird nämlich true zurückgeben aber das wird aus irgenein grund nicht beachtet. habe ja test gemacht. Naja.... vielen dank für die vorschläge.

Eine frage hätte ich noch zur der TFileListbox variante: wie bekommt man die rekusiv ?
weil das ist ja die einfachste such funktion von allen.
ich müste ja schauen ob es sich um ein verzeichnis oder eine datei handelt. bei einem verzeichnis muss sie sich selsbt aufrufen(auch wenn ich damit in den letzten tagen schlächte erfahrung gemacht habe)
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  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 11:19 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