Mittwoch, 19. September 2012

yab - Prüfen ob "yab" installiert ist

Zugegeben es klingt etwas seltsam wenn einer daherkommt und mit einem "yab"- Programm prüfen will ob "yab" installiert ist. Doch in einigen Fällen kann dies durchaus Sinn machen.

Bei meinen Experimenten mit dem "yabConceptCreator" ist mir aufgefallen, dass man Programme schreiben kann jedoch beim Ausführen in einen Fehler läuft wenn "yab" vorher nicht installiert wurde. Das Vorhandensein einer "yab"- Installation wird vom "ConceptCreator" also nicht überprüft. Da dieser aber ebenfalls in "yab" geschrieben wurde, könnte die untenstehende Sub- Routine dazu dienen diesen Notstand aus der Welt zu schaffen.

Die Sub- Routine gibt dabei die Werte "True", wenn "yab" gefunden wurde, bzw. "False" wenn "yab" nicht gefunden wurde, zurück. Der Quelltext ist wie immer mit reichlich Kommentaren versehen und sollte mit ein wenig "yab"- Erfahrung keine größere Herausforderung darstellen.


Beispiel

import IsYabInstalled

// Prüfen ob "yab" installiert ist
if _IsYabInstalled() then

  // wenn ja ...
  print "yab ist installiert"
 
else

  // wenn nein ...
  print "yab ist nicht installiert"
 
endif


Sub- Routine


export sub _IsYabInstalled()

  // lokale Variablen- Definition
  local SystemInput$
 
  // den Befehl "yab" über die Kommandozeile aufrufen und
  // das Ergebnis in SystemInput$ speichern
  SystemInput$ = system$("yab")
 
  // wenn das Ergebnis die Zeichenfolgen "yab" und "yabasic" enthält,
  // ist "yab" installiert
  if (instr(SystemInput$, "yab")) and (instr(SystemInput$, "yabasic")) then
 
    // wenn installiert, True zurüggeben
    return true
  
  else
 
    // wenn nicht installiert, False zurückgeben
    return false
  
  endif

end sub


(getestet mit Haiku R1 Alpha 3 und yab 1.5 & yab 1.7)


1 Kommentar:

  1. Es benötigt zum Betrieb vom yabConcept Creator keine vorherige yab- Installation, da yabCC diese mitbringt. Aber dennoch eine nette Routine :-).

    So geht es auch:

    filename$="/boot/home/config/bin/yab"

    if(IfExists(filename$)) then
    print "ja existiert"
    else
    print "exisitiert nicht"
    fi

    Die dazugehörige Sub Routine:

    sub IfExists(filename$)
    return not system("test -e "+filename$)
    end sub

    AntwortenLöschen