Drag and Drop hört bei mehr als 255 Strings einfach auf?
Übersicht

danielosBetreff: Drag and Drop hört bei mehr als 255 Strings einfach auf? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo zusammen!
wenn man die Pfade von Dateien, die mit Drag and Drop in ein Fenster gezogen werden, "auf einen Schlag" als String-Array speichern will, dann hört die Schleife immer exakt bei 255 Dateipfaden einfach auf (sofern man natürlich mehr als 255 markierte Dateien auf einmal in das Fenster gezogen hat) ![]() Um die Dateipfade überhaupt als Array zu bekommen, benutze ich die Methode in diesem Beispiel: (Das mit den 255+ Dateien kann zum Beispiel mit dem Windows\System32 - Ordner getestet werden, da sind über 1000 Dateien drin... ) Code: [AUSKLAPPEN] SuperStrict Import MaxGui.Drivers Local MainWindow:TGadget = CreateWindow("Drag'n'Drop Test",739,284,340,72,Null,WINDOW_TITLEBAR| WINDOW_CENTER | WINDOW_ACCEPTFILES) Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE Select EventSource() Case MainWindow End End Select Case EVENT_WINDOWACCEPT Local filearray:String[] Local count:Int = Null Repeat If CurrentEvent.id = EVENT_WINDOWACCEPT filearray = filearray[..count + 1] filearray[count] = String(CurrentEvent.Extra) count:+ 1 Print CurrentEvent.toString() Else Print "Exit aus Schleife weil Event = " + CurrentEvent.toString() Exit EndIf PollEvent() Forever Print "-----------------" For Local i:Int = Null To filearray.length-1 Print (i+1) + ": " + filearray[i] Next End Select Forever Gruß, Daniel |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Maximale länge aller Komandozeilen-Argumente kann 8191 Zeichen nicht überschreiten, das ist eine Limitierung seitens Windows und kann nicht geändert werden.
Unter Linux sind es 32767 Maximale zeichen, unter MacOS vermutlich auch etwas in die Richtung. Also, find dich damit ab. 255 Dateien per cmdline sind eh irgendwo sinn und zweckfrei. |
||
danielos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Sorry BtbN aber ich glaube du hast mich falsch verstanden, das Problem hat gar nichts mit cmdline zu tun ![]() (Also nicht "cmd => MeinProgramm.exe C:\Test.txt ...") Vielmehr geht es darum, Dateien in ein bereits geöffnetes Fenster zu ziehen (wie z.B. beim Windows Mediaplayer, in den kann man ja z.B. mp3-Dateien "reinziehen") Das Problem mit Zeichenlängen kann sich insofern nicht ergeben, dass ja bei so etwas jeweils ein EVENT_WINDOWACCEPT generiert wird. |
||
![]() |
Xaymarehemals "Cgamer" |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Event Liste eines Fensters hat auch ein Limit. Je nach System sind es glaube ich bei <XP 64, <Vista 256 <7 512. Auf 64bit systemen ist diese Zahl glaube ich noch etwas anders. Ist nur eine vermutung, da es mir ebenfalls nicht gelingt, mehr als 511 Dateien zu drag&droppen(Habe win 7) | ||
Warbseite |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke, dass BlitzMax hier limitiert:
BlitzMax: [AUSKLAPPEN] Const QUEUESIZE=256 (Zitat aus brl.EventQueue) Das Event-Array hat nur 256 Einträge. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
danielos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah okay danke Cgamer und mpmxyz!
Meint ihr, man könnte die Konstante QUEUESIZE gefahrlos ein bisschen erhöhen? |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, das sollte gehen.
Man sollte nur das entsprechende Modul neu kompilieren. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
danielos |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bestens, dann werd ich das wohl machen ![]() Danke! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group