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

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

danielos

Betreff: Drag and Drop hört bei mehr als 255 Strings einfach auf?

BeitragSo, Feb 28, 2010 12:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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)

Arrow Hat irgendjemand eine Idee, woran das liegen könnte?

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
               Print "Exit aus Schleife weil Event = " + CurrentEvent.toString()
               Exit
            EndIf
            PollEvent()
         Forever
         
         Print
         Print "-----------------"
         Print
         
         For Local i:Int = Null To filearray.length-1
            Print (i+1) + ": " + filearray[i]
         Next
         
   End Select
Forever



Gruß,

Daniel

BtbN

BeitragSo, Feb 28, 2010 13:27
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Feb 28, 2010 15:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry BtbN aber ich glaube du hast mich falsch verstanden, das Problem hat gar nichts mit cmdline zu tun Wink
(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.

Xaymar

ehemals "Cgamer"

BeitragSo, Feb 28, 2010 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Feb 28, 2010 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich denke, dass BlitzMax hier limitiert:
BlitzMax: [AUSKLAPPEN]
Const QUEUESIZE=256
Const QUEUEMASK=QUEUESIZE-1
Global queue:TEvent[QUEUESIZE],queue_put,queue_get

(Zitat aus brl.EventQueue)
Das Event-Array hat nur 256 Einträge.

mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

danielos

BeitragSo, Feb 28, 2010 16:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah okay danke Cgamer und mpmxyz!
Meint ihr, man könnte die Konstante QUEUESIZE gefahrlos ein bisschen erhöhen?

mpmxyz

BeitragSo, Feb 28, 2010 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, das sollte gehen.
Man sollte nur das entsprechende Modul neu kompilieren.
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

danielos

BeitragSo, Feb 28, 2010 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Bestens, dann werd ich das wohl machen Smile
Danke!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group