Hallo @Axolotl,
erstmal Danke für deine Antwort.
Deinen ersten Vorschlag habe ich mir mal ergänzt:
Code: Alles auswählen
EnableExplicit
OpenConsole()
ImportC "msvcrt.lib"
System(cmd.p-ascii) As "_system"
EndImport
Define Test.s = " "
SetEnvironmentVariable("var", Test)
System("set /p " + #DQUOTE$ + "var=Dateipfad: " + #DQUOTE$)
Test = GetEnvironmentVariable("var")
Debug Test
CloseConsole()
End
Leider bekomme ich damit nur eine leere Zeichenfolge zurück, wenn ich einen Pfad angegeben habe.
Deine zweiten Vorschläge (Temp-Datei, Registrierung) mag ich sehr ungern für eine popelige Abfrage in der Konsole umsetzen.
Bei deinem dritten Vorschlag schaffe ich es nicht, eine Abfrage zu formulieren, die auf meine Bestätigung durch Enter wartet und den eingegebenen Dateipfad statt des Promptes zurück gibt:
Code: Alles auswählen
Global Handle.i = 0 ; Running instance number
Global Prompt.s = GetEnvironmentVariable("ComSpec")
Global Output.s = "" ; Helper
; Debug "Console = " + #DQUOTE$ + Prompt + #DQUOTE$
Handle = RunProgram(Prompt, "/k setlocal & set /p " + #DQUOTE$ + "var=Dateipfad: " + #DQUOTE$, "", #PB_Program_Open | #PB_Program_Read)
If Handle
While ProgramRunning(Handle)
If AvailableProgramOutput(Handle)
Output + ReadProgramString(Handle) + #LF$
EndIf
Wend
Output + #LF$ + "-----------" + #LF$
Output + "Exit Code: " + Str(ProgramExitCode(Handle))
CloseProgram(Handle) ; Close program connection
OemToChar_(@Output, @Output)
EndIf
MessageRequester("Output", Output)
Kennt jemand einen Ort, der alle möglichen Befehle des System-Imports (siehe
meinen ersten Beitrag) auflistet?
Kann mir jemand erklären, wie der System-Befehl intern ausgeführt wird und warum PureBasic keine möglichen Rückgaben auslesen kann?
Lässt die Programmiersprache C oder C++ bei einer Dateipfadabfrage die automatische Vervollständigung zu oder müsste die dort auch nachprogrammiert werden?
Gruß, piccolo