![]() |
SHFileOperation: wie lange darf pFrom sein?
In meinem Programm gibt es eine Lösch-Routine, in der man auswählen kann, ob in den Papierkorb verschoben (SHFileOperation), oder endgültig gelöscht wird (DeleteFile).
Es geht um größere Datenmengen, besser gesagt, um größere Mengen von Datei-Pfaden: als Anhaltspunkt seien mal 30.000 genannt. (Das ist heute nicht mehr viel, allein wenn man mal eine einzige gespeicherte WebSite betrachtet: Mit den zugehörigen Dateien im "-Dateien"-Ordner können das locker über 100 sein.) Die Dateipfade werden in einem Array gespeichert und einzeln an die Löschroutine übergeben. Wählt der User das endgültige Löschen mit DeleteFile, so ist das ratz-fatz erledigt. Beim Verschieben in den Papierkorb mit SHFileOperation dauert das jedoch ewig-und-drei-Tage! Man kann in pFrom der SHFileOperation mehrere Pfade gleichzeitig übergeben, wenn diese mit einem NULL-Zeichen getrennt werden. Jetzt kann aber ein einzelner Pfad durchaus über 250 Zeichen lang sein. Meine Frage ist: Welche Begrenzung gibt es für pFrom? Anders ausgedrückt: Wie lange dürfen die Pfade insgesamt sein, die man pFrom übergeben kann? Guido. |
Re: SHFileOperation: wie lange darf pFrom sein?
Ich konnte in der Dokumentation jetzt auch keinen Hinweis finden. Das heißt, du wirst es wohl ausprobieren müssen. Aber wie sagt
![]() |
Re: SHFileOperation: wie lange darf pFrom sein?
Hallo Michael,
ging mir genauso. Hab verschiedene Dokumentationen durchgelesen, aber nichts konkretes gefunden. Dort steht immer so in etwa: "pFrom ... is used as a buffer to hold multiple file names." Vielleicht weiß ja sonst noch wer was genaueres? Oder hat schon erfolgreich probiert, wie es mit größeren Mengen von Datei-Pfaden funktioniert? Oder wie dieser Puffer gespeichert wird? Evtl. ist der Puffer ja unbegrenzt (außer vom RAM usw.) und kann tatsächlich reichlich Datei-Pfade aufnehmen? :mrgreen: Guido. |
Re: SHFileOperation: wie lange darf pFrom sein?
Also, pFrom und pTo können ja ein Array darstellen.
Pro Zeile/Eintrag könnte es eventuell die bekannte MAX_PATH-Grenze geben. Ansonsten wüßte ich nicht, warum es dort eine Grenze geben sollte, aber andersweitig bekannte Grenzen wären 512, 4K, 8K, 64K und dann noch ein paar Grenzen, welche auf Typen-Wertebereiche zurückzuführen sind. 32K für SmallInt und die 2G, bzw. 4G für die Integer-/Speichergrenzen. Alles unter 32K kann ich ausschließen, da eines meiner Programme diese Grenzen hierbei ständig überschreitet. Falls MAX_PATH nicht zutrifft, dann wären nach UNC pro Zeile alleine schonmal bis zu 32K möglich. (Uniform Naming Convention / Universal Naming Convention) |
Re: SHFileOperation: wie lange darf pFrom sein?
Zitat:
|
Re: SHFileOperation: wie lange darf pFrom sein?
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Ansonsten, um Missverständnissen vorzubeugen, technisch wäre ich in der Lage, das per "Trial And Error" auszuprobieren. Ich gehe bei diesem Thread allerdings davon aus, dass ein Test dieser Art keine Aussagekraft hat. Was in diesem Fall bei meinem Test, meine BS und meiner Hardware funktioniert, muss nicht zwangsläufig auf anderen PCs funktionieren. Deshalb würde ich mich über weitere Infos freuen. Guido. |
Re: SHFileOperation: wie lange darf pFrom sein?
Zitat:
'Pfad'#0'Pfad'#0'Pfad'#0'Pfad'#0'Pfad'#0'Pfad'#0'P fad'#0#0 Und was die 30000 angeht, da wirdst du es wohl einfach mal probieren müssen, ob diese Funktion mit dieser durchschnittlich 4 MB kleinen Liste klar kommt. |
Re: SHFileOperation: wie lange darf pFrom sein?
Bis hierhin schon mal herzlichen Dank für alle Antworten. :hi:
Ich würde mich freuen, wenn noch jemand was informatives beizutragen hat. Schönen 1. Mai, Guido. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 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