AGB  ·  Datenschutz  ·  Impressum  







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

Listbox ohne Anzeige für TStrings

Ein Thema von holle · begonnen am 11. Dez 2007 · letzter Beitrag vom 11. Dez 2007
Antwort Antwort
holle

Registriert seit: 15. Nov 2005
Ort: Uckerland
138 Beiträge
 
Delphi 7 Enterprise
 
#1

Listbox ohne Anzeige für TStrings

  Alt 11. Dez 2007, 17:52
Ich such mit dem folgenden Code nach Mp3-Dateien in einem Verzeichnis. Die Ergebniss werden dann in einer Listbox dargestellt. Gibt es eine alternative, so dass ich die Ergebnisse nur im Speicher merke, aber nicht anzeige? Die Daten der Listbox werden dann als nächstes in eine Datenbank übertragen, dann brauch ich die Listbox nicht mehr.
Delphi-Quellcode:
procedure GetAllFilesEM(Path, ExtMask: 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
    CommaText := ExtMask;

    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
          GetAllFilesEM(Path + Search.Name, ExtMask, List, SubFolder);
      until FindNext(Search) <> 0;

      FindClose(Search);
    end;
  end;
end; {Popov}
Danke,
Marcel
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

Re: Listbox ohne Anzeige für TStrings

  Alt 11. Dez 2007, 17:55
Nimm doch eine TStringList.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
11. Dez 2007, 18:57
Dieses Thema wurde von "Christian Seehase" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Ein delphispezifisches Problem
Christian Seehase
(Co-Admin)

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

Re: Listbox ohne Anzeige für TStrings

  Alt 11. Dez 2007, 19:07
Moin Marcel,

ein paar Sachen, die mir so aufgefallen sind:

Das
if Path[Length(Path)] <> '\then Path := Path + '\' geht schief, wenn Path leer ist.

Zwei Lösungsansätze:

Delphi-Quellcode:
Path := IncludeTrailingPathDelimiter(Path);
// oder
if (Length(Path) > 0) and (Path[Length(Path)] <> '\') then Path := Path + '\';
Ausserdem noch etwas, das definitiv falsch ist:

(Search.Name[1] <> '.') filtert auch gültige Verzeichnisnamen heraus.
Du musst explizit auf

(Search.Name <> '.') and (Search.Name <> '..') prüfen, da ein Datei-/Verzeichnisname durchaus mit einem . beginnen kann.

List würde ich auch nicht als Wert- sondern als Const-Parameter übergeben, damit man nicht versehentlich bei einer Überarbeitung List einen Wert zuweist, und sich dann anschliessend wundert, warum man kein Ergebnis zurück erhält.

Ich für meinen Teil verwende sogar ausschliesslich Var- oder Const-Parameter
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#5

Re: Listbox ohne Anzeige für TStrings

  Alt 11. Dez 2007, 19:31
Moin Christian,

diese Kritik müsstest Du aber an Popov richten . Außerdem stößt mir die ZeileAttrib := faArchive + faReadOnly + faHidden; auf, Bitmasken verknüpft man mit or.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Listbox ohne Anzeige für TStrings

  Alt 11. Dez 2007, 19:37
Jupp, User ist da mal nicht selbst dran Schuld,
aber ich = Erster

http://www.delphipraxis.net/shoutbox_max.php?max=400 [11.12.2007, 19:07]

[add]
Zitat von SB: himitsu [vorhin 19:07:
]ist hier wer da http://www.delphi-library.de/viewtopic.php?t=21275 angemeldet und haut dem Verfasser für (Search.Name[1] <> '.') mal kräftig auf die Pfötchen?
OK und für Path[Length(Path)] und faArchive+faReadOnly+faHidden sollte er auch noch was draufbekommen, wobei Letzteres sich als Konstante auch nicht schlecht machen würde
[/add]

nur ich nicht da angemeldet und Popov's HP ist wohl auch down


@holle: hier im Forum und ich glaub auch in der Code-Library finden sich da bessere Funktionen hierfür.
$2B or not $2B
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Listbox ohne Anzeige für TStrings

  Alt 11. Dez 2007, 19:58
Moin Deddy,

Zitat von DeddyH:
Moin Christian,

diese Kritik müsstest Du aber an Popov richten .
Vielleicht liest er das hier ja

Zitat von DeddyH:
Außerdem stößt mir die ZeileAttrib := faArchive + faReadOnly + faHidden; auf, Bitmasken verknüpft man mit or.
Stimmt, dass ist mir diesmal gar nicht aufgefallen

Wobei ich sowieso bei FindFirst nur faAnyFile verwende, und später selber filtere.

Das mit dem [1] <> '.' dürfte wohl der "beliebteste" Fehler sein, wenn es darum geht Verzeichnisstrukturen durchzugehen
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
Christian Seehase
(Co-Admin)

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

Re: Listbox ohne Anzeige für TStrings

  Alt 11. Dez 2007, 20:02
Moin himitsu,

Zitat von himitsu:
Jupp, User ist da mal nicht selbst dran Schuld,
wie man's nimmt. Bei Copy&Paste sollte man ja möglichst verstehen was man da einfügt...

Zitat von himitsu:
aber ich = Erster

http://www.delphipraxis.net/shoutbox_max.php?max=400 [11.12.2007, 19:07]
Wieso Erster?
Dein SB-Beitrag ist von 19:07 und meiner hier im Thread auch
(Ich denke mal, meinen Beitrag zu schreiben hat etwas länger gedauert als Deiner )
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
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 14:03 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