AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi In Ordner nach Datei suchen, deren Endung unbekannt ist
Thema durchsuchen
Ansicht
Themen-Optionen

In Ordner nach Datei suchen, deren Endung unbekannt ist

Ein Thema von dopeline · begonnen am 25. Jul 2004 · letzter Beitrag vom 25. Jul 2004
Antwort Antwort
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#1

In Ordner nach Datei suchen, deren Endung unbekannt ist

  Alt 25. Jul 2004, 16:20
Hallo!

Ich eine Datei in ein TImage einladen. ich kenne den Dateinamen, allerdings ohne endung. es könnte ein bmp, jpg, gif o.ä. sein.
ich muss also diesen ordner nach dieser datei suchen um die endung heraus zu bekommen und die datei dann zu öffnen.

Wie stelle ich das an?

als ansatz könnte man diese prozedur nutzen. sie durchsucht ein verzeichnis (incl Unterverzeichnisse -> bei mir aber nicht nötig) nach dateien eines bestimmten dateityps und fügt sie in eine ListBox ein. (z.b. alle mp3-dateien aus den eigenen Dateien)

Delphi-Quellcode:
procedure ScanDirectory(mask : String);
var
  search : TSearchRec;
  verz, such: String;
begin
  such := ExtractFileName(mask);
  verz := ExtractFilePath(mask);
  if verz[length(verz)] <> '\then
    verz := verz + '\';
  if (FindFirst(mask, faAnyFile, search) = 0) then
    repeat
      Form1.ListBox1.Items.Add(verz + search.Name);
    until (FindNext(search) <> 0);
  if (FindFirst(verz + '*.*',faAnyfile,search) = 0) then
    begin
      repeat
        if ((search.Attr and faDirectory) = faDirectory) and (search.Name[1] <> '.') and (search.name <> '..') then
          ScanDirectory(verz + search.Name + '\' + such);
      until (FindNext(search) <> 0);
      FindClose(search);
    end;
end;
Hat jemand einen Vorschlag?


Gruß, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: In Ordner nach Datei suchen, deren Endung unbekannt ist

  Alt 25. Jul 2004, 16:24
die Zeile
if (FindFirst(verz + '*.*',faAnyfile,search) = 0) then abändern in
if (FindFirst(verz + 'dateinameOhneEndung.*',faAnyfile,search) = 0) then Dadurch bekommst du nur dateien zurück geliefert welche den richtigen dateinamenanfang haben

Was soll eigentlich passieren wenn eine ".bmp", ".jpg" und ".gif" existiert. Welche der Dateien willst du dann verwenden? Du müsstest da noch eine hierarchie festlegen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 12 Athens
 
#3

Re: In Ordner nach Datei suchen, deren Endung unbekannt ist

  Alt 25. Jul 2004, 16:35
Sieht doch ganz gut aus, falls mask z.B. 'c:\myfile.*' entspricht...

Code:
procedure ScanDirectory(mask : String);
var search  : TSearchRec;
    verz,
    extension: String;
begin
  verz := ExtractFilePath(mask);
  if verz[length(verz)] <> '\' then
     verz := verz + '\';
  if (FindFirst(mask, faAnyFile, search) = 0) then begin
     repeat
       extension:= AnsiLowerCase(ExtractFileExt(verz + search.Name));
       if extension='bmp' then... else
       if extension='gif' then... else
       if extension='jpg' then... else
       ...
     until (FindNext(search) <> 0);
  end;
  FindClose(search);
end;
Ach ja - in deiner o.g. Funktion sollte das FindClose ein End-Statement weiter hintern sitzen, sodass es auch dann ausgeführt wird, wenn die letzte Bedingung nicht erfüllt ist!

Grüsse!
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: In Ordner nach Datei suchen, deren Endung unbekannt ist

  Alt 25. Jul 2004, 16:51
Vielen Dank!

ich habe die Prozedur in eine Funktion geändert. Der Rückgabewert ist die Dateiendung:
Delphi-Quellcode:
function FindExtension (mask:String):String;
var search : TSearchRec;
    verz,
    extension: String;
begin
  verz:=ExtractFilePath(Application.ExeName)+'\Extracted\';
  if (FindFirst(verz+mask+'.*', faAnyFile, search) = 0) then begin
     repeat
       extension:= AnsiLowerCase(ExtractFileExt(verz + search.Name));
       result:=extension;
     until (FindNext(search) <> 0);
  end;
  FindClose(search);
end;
Das funktioniert super!
Danke!


Gruß, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 12 Athens
 
#5

Re: In Ordner nach Datei suchen, deren Endung unbekannt ist

  Alt 25. Jul 2004, 17:01
Ok! Aber so gibts du nur die letzte Extension zurück, wenn mehrere Dateien gefunden werden.

Willst du die Erste - füge ein Break ein - Spart Zeit.
Willst du Alle - Übergib als Var eine leere TStingList und lass sie füllen!

Grüsse!
  Mit Zitat antworten Zitat
dopeline

Registriert seit: 7. Mär 2003
Ort: Berlin
304 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: In Ordner nach Datei suchen, deren Endung unbekannt ist

  Alt 25. Jul 2004, 18:58
Es kann nur eine datei mit gleichem dateinamen (ohne endung geben) geben. und zwar die dateien von 0001.* bis 9999.*
Es handelt sich bei dem Programm um ein FilmArchiv. Jeder Film hat eine ID (0001-9999) und wenn möglich ein Bild.
also wird es niemals ein 0024.jpg und gleichzeitig ein 0024.bmp geben.


Gruß, dopeline
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 12 Athens
 
#7

Re: In Ordner nach Datei suchen, deren Endung unbekannt ist

  Alt 25. Jul 2004, 19:12
Ok, aber dann kannste dir auch den repeat / until sparen! Sprich...

Code:
if (FindFirst(verz+mask+'.*', faAnyFile, search) = 0) then
   result:= AnsiLowerCase(ExtractFileExt(verz + search.Name));
Grüsse!
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:30 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