__FB_ARGV__

FreeBASIC-Referenz » Alphabetische Befehlsreferenz » Metabefehle » __FB_ARGV__

Typ: Vordefiniertes Symbol

__FB_ARGV__ wird in der ausführbaren Datei zu einem Pointer umgesetzt. Dieser zeigt auf einen Speicherbereich, in dem sich weitere ZSTRING PTRs befinden, die auf die einzelnen Kommandozeilenparameter zeigen.
Gemeint ist die Kommandozeile, die an das Programm selbst, nicht an den Compiler übergeben wurde; siehe dazu COMMAND.

Beispiel:

Declare Function main ( ByVal argc As Integer, ByVal argv As ZString Ptr Ptr ) As Integer

End main( __FB_ARGC__, __FB_ARGV__ )

Function main ( ByVal argc As Integer, ByVal argv As ZString Ptr Ptr ) As Integer
For i As Integer = 0 To argc - 1
Print "arg "; i; " = '"; *argv[i]; "'"
Next

Sleep
Return 0
End Function

Beispiel 2:

Declare Sub mySub(argc As Integer = 0, argv As ZString Ptr Ptr = 0)

Print "Hauptprogramm:"
Print "ARGC: " & __FB_ARGC__
Print "ARGV: " & *__FB_ARGV__[0]
Print

mySub(__FB_ARGC__, __FB_ARGV__)   'mit Übergabeparametern aufrufen
Print

mySub                                                 'ohne Übergabeparameter aufrufen
Print

Sleep

'#################################################
Sub mySub(argc As Integer = 0, argv As ZString Ptr Ptr = 0)
   If argc <> 0 And argv <> 0 Then
      Print WStr("Unterprogramm mit Übergabe:")
      Print "ARGC: " & argc
      Print "ARGV: " & *argv[0]
   Else
      Print WStr("Unterprogramm ohne Übergabe:")
      'Print "ARGC: " & __FB_ARGC__         '__FB_ARGC__ und __FB_ARGV__ sind
      'Print "ARGV: " & *__FB_ARGV__[0]    'nur im Hauptprogramm zugänglich
   End If
End Sub

Hinweis:
__FB_ARGV__ ist nur auf Hauptmodulebene bekannt und funktioniert nicht in Unterprogrammen.

Unterschiede zu QB: neu in FreeBASIC

Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v0.17

Siehe auch:
__FB_ARGC__, COMMAND, DEFINE (Meta), Präprozessoren