frankmannb hat geschrieben:
wenn ich folgendes Programm kompiliere und als EXE abspeichere und dann das PRogramm auf der Kommandozeile starte mit z.B. test.exe test.pdf test2.pdf
bekomme ich nur test.pdf als auch test2.pdf als parameter angezeigt.
Starte ich hingegen das Programm mit
z.B. test.exe test.pdf,test2.pdf
bekomme ich nur einen Parameter nämlich test.pdf,test2.pdf angezeigt. Wieso?
also folgendes prgramm gibt Parameter1,2,3 und 4 aus....
Define AllParameters.s
Define k.i
; Füge alle Parameter zusammen
AllParameters = ""
If CountProgramParameters() > 0
For k = 0 To CountProgramParameters() - 2
AllParameters + ProgramParameter(k) + " "
Next k
AllParameters + ProgramParameter(k)
EndIf
; Fülle ein Array
Dim Parameter.s(CountString(AllParameters, ","))
For k = 0 To ArraySize(Parameter())
Parameter(k) = StringField(AllParameters, k + 1, ",")
Next k
; Teste das Array
For k = 0 To ArraySize(Parameter())
Debug Parameter(k)
Next k
Wobei das ja natürlich nicht die saubere Art ist, denn das ist nichtmehr Betriebssystemkompatibel, d.h. man kann keine Files mehr über Drag'n'Drop auf die Exe schieben o.ä..
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
MyPrg "C:\Meine Daten\datei1.pdf" "d:\unsinniger Pfad\Dateimüll.txt" "e:\Ganz Viele Leerzeichen.haha"
als Programmparameter werden den Programm dann 3 Werte übergeben - mit den Spaces.
Von den Trennen mit "," würde ich dringend abraten. Zum einen ist das "," durchaus ein Zeiche, das in einer Datei vorkommen kann. Zum zweiten ist das einfach nicht konform mit allen anderen Dos-Programmen.
vielen Dank für die vielen Vorschläge. Ich denke ich werde zunächst folgenden nutzen.
Parameter.s = ProgramParameter()
For i = 1 To CountString(parameter.s,",")+ 1
MessageRequester("TEST",StringField(parameter,i,","),#PB_MessageRequester_Ok)
Next
Warum durch "," getrennt? Hintergrund ist das ich ein Programm nachbauen muss welches bereits Produktiv im Einsatz ist, es aber von der Geschwindigkeit verbessert werden soll. Dies ist der Anfang dazu.