![]() |
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:
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.
procedure TForm1.Button1Click(Sender: TObject);
begin with OpenDialog1 do if Execute then ShowMessage(IntToStr(Files.Count)); end; |
Re: OpenDialog: Problem mit vielen Dateien
Hast Du einen Filter aktiv?
|
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 |
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: ) |
Re: OpenDialog: Problem mit vielen Dateien
Zitat:
|
Re: OpenDialog: Problem mit vielen Dateien
Zitat:
|
Re: OpenDialog: Problem mit vielen Dateien
Zitat:
Zitat:
|
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:
heißt, es passen nur (da ANSI) 65519 Byte (incl. Tenn- und Abschlußmarker)
// 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; 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