Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OpenDialog: Problem mit vielen Dateien (https://www.delphipraxis.net/114354-opendialog-problem-mit-vielen-dateien.html)

Fussball-Robby 23. Mai 2008 22:00


OpenDialog: Problem mit vielen Dateien
 
Hey,
ich habe einen OpenDialog in meinem Programm. Mit diesem sollen nun viele Dateien ausgewählt werden. Ich habe einen Ordner mit ~2.300 Dateien, die ich alle (mit Strg + A) im Dialog auswähle. Dann lasse ich mir (als Überprüfung) die Anzahl der Dateien ausgeben:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with OpenDialog1 do
    if Execute then
      ShowMessage(IntToStr(Files.Count));
end;
Und was wird mir angezeigt? 74 :shock: Kann es sein, dass der OpenDialog mit so vielen Dateien irgendwie nicht zurecht kommt? Auch wenn ich die Namen der Dateien in eine Listbox schreiben lasse, werden da nicht alle hinzugefügt.

Die Muhkuh 23. Mai 2008 22:01

Re: OpenDialog: Problem mit vielen Dateien
 
Hast Du einen Filter aktiv?

Fussball-Robby 23. Mai 2008 22:02

Re: OpenDialog: Problem mit vielen Dateien
 
Ja (*.mp3 & *.wma), es haben aber alle Dateien in dem Ordner eine dieser Endungen.

Edit: Möglicherweise ist ja jemand so nett und guckt mal, was der OpenDialog bei ihm bei so vielen Dateien sagt

himitsu 23. Mai 2008 22:15

Re: OpenDialog: Problem mit vielen Dateien
 
es gab hier schonmal einen Thrad dazu .... mußte ma danach suchen

und soweit ich mich erinnern kann, hat die Opendialog-Implementation von Delphi einen festen Puffer und da passt einfach nur eine bestimmt Menge (in Byte) rein.

Alles was länger ist, wird abgeschnitten.

Alternative: wende dich direkt an die WinAPI

oder warte etwas, ich versuch mine Implementation bald mit in mein aktuelles Projekt einzubauen (incl. einiger Erweiterungen des Dialogs :angel: )

Garfield 24. Mai 2008 11:42

Re: OpenDialog: Problem mit vielen Dateien
 
Zitat:

Zitat von Fussball-Robby
... Mit diesem sollen nun viele Dateien ausgewählt werden. Ich habe einen Ordner mit ~2.300 Dateien, die ich alle (mit Strg + A) im Dialog auswähle. ...

:gruebel: Wäre da nicht eine Ordnerauswahl sinnvoller?

Fussball-Robby 24. Mai 2008 12:21

Re: OpenDialog: Problem mit vielen Dateien
 
Zitat:

Zitat von Garfield
:gruebel: Wäre da nicht eine Ordnerauswahl sinnvoller?

Nein, da nicht zwingend ein ganzer Ordner ausgewählt werden muss. Den ganzen Ordner verwende ich nur zum Testen. Komischerweise zeigt mir das Programm, wenn ich alle Dateien aus System32 auswähle (um die 2000), die richtige Zahl an :gruebel: Hat wohl was mit den Dateien in meinem Ordner zu tun, ich habe aber keine Ahnung, was..

Garfield 24. Mai 2008 13:36

Re: OpenDialog: Problem mit vielen Dateien
 
Zitat:

Zitat von Fussball-Robby
Nein, da nicht zwingend ein ganzer Ordner ausgewählt werden muss. Den ganzen Ordner verwende ich nur zum Testen.

Auf die Idee bin ich dann auch gekommen. :idea:

Zitat:

Zitat von Fussball-Robby
... ich habe aber keine Ahnung, was..

Hast Du schon ein paar von den angenommenen mit den nicht angenommenen Dateien verglichen? Zum Beispiel die Dateinamen.

himitsu 25. Mai 2008 08:50

Re: OpenDialog: Problem mit vielen Dateien
 
die Dateinamen deiner Musikstücke sind doch bestimmt nicht grad kurz?

ich hab zwar grad den Thread nicht gefunden, aber hier das Problem.

Delphi-Quellcode:
// Ort:
// Unit Dialog
function TOpenDialog.DoExecute(Func: Pointer; ParentWnd: HWND): Bool;

// Zuweisung des Puffers
SetLength(TempFilename, nMaxFile + 2);
{OpenFilename.}lpstrFile := PChar(TempFilename);

// Größe des Puffers für Dateinamen (siehe MultiSelectBufferSize)
if ofAllowMultiSelect in FOptions then
  nMaxFile := MultiSelectBufferSize else
  nMaxFile := MAX_PATH;

// definierte Konstante
MultiSelectBufferSize = High(Word) - 16;
heißt, es passen nur (da ANSI) 65519 Byte (incl. Tenn- und Abschlußmarker)
bei 2000 Dateien macht das ~31 Zeichen pro Dateiname (in System32 sind viele 8.3-Dateinamen ... mit maximal 12 Zeichen)

aber ~800 Zeichen/Buchstaben pro Datei (bei 74 Dateien) kommen mir auch recht viel vor :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz