AGB  ·  Datenschutz  ·  Impressum  







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

DateiAttribute aus ListBox auslesen

Ein Thema von Gregor00 · begonnen am 15. Sep 2003 · letzter Beitrag vom 19. Sep 2003
Antwort Antwort
Seite 1 von 2  1 2      
Gregor00

Registriert seit: 18. Aug 2003
29 Beiträge
 
Delphi 5 Standard
 
#1

DateiAttribute aus ListBox auslesen

  Alt 15. Sep 2003, 16:54
Hallo,

also ich sitzt hier vor folgendem Problem: Ich hab ein Dateiensuchprogramm geschrieben dessen Ergebnisse in eine Listbox geladen werden. jetzt möchte ich die Attribute auslesen, was an sich auch kein Problem ist, wenn man einen festen Pfad angeben kann. da ich jedoch keine festen Pfade angeben kann funktioniert das nicht.
Hier als kleiner Hinweis was ich meine der Quellcode der Suchfunktion;
Wenn gewünscht kann ich den Source dür die Suchfunktion angeben, glaube aber das ist für das problem nicht nötig

Also thx für alle antworten schon mal....
greg
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#2

Re: DateiAttribute aus ListBox auslesen

  Alt 15. Sep 2003, 17:09
Was steht den in der ListBox drin?
  Mit Zitat antworten Zitat
Gregor00

Registriert seit: 18. Aug 2003
29 Beiträge
 
Delphi 5 Standard
 
#3

Re: DateiAttribute aus ListBox auslesen

  Alt 15. Sep 2003, 17:16
in der Listbox stehen die Dateinamen mit Endung (z.b. blablabla.txt) (untereinander). Auf Wunsch kann der Pfad (z.B c:\Eigene Dateien\blablabla.txt) mit angegeben werden...

greg
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#4

Re: DateiAttribute aus ListBox auslesen

  Alt 15. Sep 2003, 17:19
Dann speicher dir den Pfad doch in irgend einer Variablen! Somit hast du dann wieder der kompletten Dateinamen.
  Mit Zitat antworten Zitat
Gregor00

Registriert seit: 18. Aug 2003
29 Beiträge
 
Delphi 5 Standard
 
#5

Re: DateiAttribute aus ListBox auslesen

  Alt 17. Sep 2003, 18:39
also irgentwie klappt das doch noch nicht so ganz... muss nochmal einen schritt zurück gehen: das programm soll alle Unterordner eines vorher vorgegebenen Pfades einer bestimmten Endung anzeigen
Der volgende Quelltext zeigt wie ich es versucht habe, es klappt jedoch nicht (:

Delphi-Quellcode:
procedure TForm1.Suche (ext: Str3; pfad: String);
var sr: TSearchRec;
    r: Integer;

begin
  r:= FindFirst( pfad + '\*.*', faAnyFile,sr);
  while r = 0 do
  begin
    If Copy(sr.Name, 1, 1) <> '.then
  begin
    If (sr.Attr <> 0) and (faDirectory <> 0) then
      begin
    Suche(ext, Edit2.Text + '\' + sr.Name);
    ListBox2.Items.Add(pfad + '\' + sr.Name);
    end
    else
   // If System.Copy (sr.Name, Pos('.' , sr.Name), 4) = '.' + ext then
    ListBox1.Items.Add(pfad + '\' + sr.Name);
  end;
  Application.ProcessMessages;
  r:= FindNext(sr);
  end;
  FindClose(sr);
end;
Edit1 gibt die Dateiendung an (z.B. TXT)
Edit2 den Pfad
ListBox1 soll alle gefundenen Dateien aufführen,
ListBox2 alle durchsuchten/gefundenen ordner



ein Klick auf Button1 startet den Suchvorgang:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin

Button1.Enabled:= False;
ListBox1.Clear;
ListBox2.Clear;
Suche(Edit1.Text, Edit2.text);
Button1.Enabled:= True;

end;
ich hoffe ihr könnt mir helfen, jab schon alles mögliche versucht

thx
gregor
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: DateiAttribute aus ListBox auslesen

  Alt 17. Sep 2003, 18:51
Moin Gregor,

ich hab' Deine Methode Suche mal überarbeitet und kommentiert


Delphi-Quellcode:
procedure TForm1.Suche (ext: string; pfad: String);
var sr: TSearchRec;
    r: Integer;

begin
  r:= FindFirst( pfad + '\*.*', faAnyFile,sr);
  if r = 0 then begin // nur wenn FindFirst erfolgreich war, gibt's auch was zu schliessen
    try // Resourcenschutzblock eingebaut
      while r = 0 do
      begin
        // falsch, da ein Datei-/Verzeichnisname auch mit . beginnen kann
        // es muss explizit auf . und .. geprüft werden
// If Copy(sr.Name, 1, 1) <> '.' then
      if (sr.Name <> '.') and (sr.Name <> '..') then
      begin
        // gefundenes Attribut ausmaskieren und mit gewünschtem vergleichen
        if (sr.Attr and faDirectory) = faDirectory then
// If (sr.Attr <> 0) and (faDirectory <> 0) then
          begin
        Suche(ext, Edit2.Text + '\' + sr.Name);
        ListBox2.Items.Add(pfad + '\' + sr.Name);
        end
        else
        if AnsiUpperCase(ExtractFileExt(sr.Name)) = '.'+AnsiUpperCase(ext) then
       // If System.Copy (sr.Name, Pos('.' , sr.Name), 4) = '.' + ext then
        ListBox1.Items.Add(pfad + '\' + sr.Name);
      end;
      Application.ProcessMessages;
      r:= FindNext(sr);
      end;
    finally
      FindClose(sr);
    end;
  end;
end;
das mit dem str3 hab' ich nicht verstanden.
Extensions können beliebig lang sein.
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
Gregor00

Registriert seit: 18. Aug 2003
29 Beiträge
 
Delphi 5 Standard
 
#7

Re: DateiAttribute aus ListBox auslesen

  Alt 17. Sep 2003, 22:40
ok danke für die antwort hab's ausprobiert funtioniert bis jetzt ganz gut

mit dem Str3 hab ich halt gemacht, weil die Dateiendungen nicht mehr als 3 Ziffern haben dürfen (bzw. vom benutzer angegeben werden dürfen).

Wenn ich jetzt dur den Sngegebenen Ordner durchsuchen lassen will (also ohne Unterordner) kann ich da die gleiche Procedur nehmen?? oder ist es sinnfoller noch eine zweite zu deklarieren??
Stell mir das ganze so vor das der User mit Hilfe einer Checkbox zwischen "Mit Unterordner" oder "ohne Unterordner" wählen kann.

cu gregor
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: DateiAttribute aus ListBox auslesen

  Alt 17. Sep 2003, 22:44
Moin Gregor,

dann bau in die Parameterliste noch ein Flag ein, dass die Unterscheidung ermöglicht.
In der Routine musst Du dann nur noch das Flag abfragen, und ggf. bei auftreten eines Verzeichnisses dieses nicht weiter beachten.
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
Gregor00

Registriert seit: 18. Aug 2003
29 Beiträge
 
Delphi 5 Standard
 
#9

Re: DateiAttribute aus ListBox auslesen

  Alt 18. Sep 2003, 15:56
danke für den Tipp aber nen Flag will ich nicht verwenden....eine einfache Checkbox find ich einfacher...
ich hab jetzt eine zweite procedure deklariert (fast die gleiche, die
Christian Seehase mir modifiziert hat) funtioniert aber nicht PC hängt sich immer auf (muss irgentwo eine Entlosschleife sein...) könnt ihr mir nochmal helfen was genau ich ändern muss

vielen Dank
greg
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#10

Re: DateiAttribute aus ListBox auslesen

  Alt 18. Sep 2003, 16:08
Ganz einfach. Wenn die CheckBox markiert / das Flag entsprechend gesetzt ist, darf man nicht nach Ordnern suchen (<> faDirectory).

Ne einfache If Abfrage sollte wohl jeder hinbekommen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:17 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