Gambas: Shell

Aus Wikibooks
Wechseln zu: Navigation, Suche


Zurück zu Gambas


Man kann die Linux Shell von Gambas aus ansprechen und nutzen. Wie das geht zeigen die folgenden Beispiele:

Ls unter Gambas[Bearbeiten]

Das folgende Beispielprogramm zeigt, wie man sich die Dateien eines Verzeichnisses der Festplatte in einer Textarea anschauen kann.

Man braucht eine Textarea und einen Befehlsbutton, um das Programm in gang zu bringen.

' Gambas class file
PUBLIC Content AS String
'Get the content of a directory
PUBLIC SUB Button1_Click()
  SHELL "ls -la > /tmp/result" WAIT
  Content = File.Load("/tmp/result")
  Textarea1.text = content
END

Man kann den String mit dem Namen Content aus dem Programm entfernen, wenn man die Textarea direkt mit dem Fileload füllt.

  Textarea1.text = File.Load("/tmp/result")

Noch ein Beispiel: Unterverzeichnisse anschauen[Bearbeiten]

Man braucht eine Textarea und 2 Befehlsbuttons, um das Programm in Gang zu bringen.

PUBLIC SUB Form_Open()
 ME.Text = "Unterverzeichnisse anzeigen - Wählen Sie einen Pfad"
 ME.X = 200
 ME.Y = 50
 ME.Width = 1200
 ME.Height = 600
 Button1.Text = "Unterverzeichnisse anzeigen"
 Button1.X = 16
 Button1.Y = 16
 Button1.Width = 300
 textarea1.Text = "" 
 textarea1.x = 16
 textarea1.y = 56
 textarea1.width = 700
 textarea1.height = 500
 Button2.Text = "Ende"
 Button2.X = 340
END
PUBLIC SUB Button1_Click()
DIM t AS String 
IF Dialog.SelectDirectory() THEN RETURN
t  = Dialog.Path
SHELL "ls -ld " & t & "*/. > /tmp/result" WAIT
Textarea1.text = File.Load("/tmp/result")
END
PUBLIC SUB Button2_Click()
 ME.Close
END

Im ersten Unterprogramm Form_Open werden nur einige Einstellungen für die 3 Steuerelemente vorgenommen. Im 2, Unterprogramm Button1_Click steht der eigentlich wichtige Code: Zunächst wird ein string t deklariert. Dann wird eine Dialogform zur Auswahl des Verzeichnisses geöffnet. Das ausgewählte Verzeichnis (Dialog.path) wird dem String t übergeben. Mit dem Shell Befehl werden alle Unterverzeichnisse von Dialogpath in eine temporäre Datei gespeichert. Diese Datei wird geladen und in der Textarea angezeigt.

wc = wordcount unter Gambas[Bearbeiten]

Im folgenden Programm wird der Linuxbefehl wc , der die Zeilen, die Worte und die Zeichen eines beliebigen Textes zählt, innerhalb eines Gambasprogrammes genutzt.

Um das Programm in Gang zu bringen braucht man:

  • 2 Befehlsbuttons
  • 1 Textarea ( Hier wird der zu untersuchende Text eingegeben)
  • 1 Textbox ( Hier wird das Ergebnis des wordcount ausgegeben)

Der Code dazu:

PUBLIC t AS String
PUBLIC SUB Form_Open()
 Textarea1.Text = "Dies ist ein Test"
 Textbox1.Text = "" 
END
PUBLIC SUB Button1_Click()
 File.Save(system.Home & "/test.txt",TextArea1.Text)
 CATCH 
 IF ERROR THEN RETURN
END
PUBLIC SUB Button2_Click()
 SHELL "wc " & system.Home & "/test.txt > /tmp/result" WAIT
 t = File.Load("/tmp/result")
 textbox1.Text = t
END
  • Mit dem Befehl 1 wird der Inhalt der Textarea in einer Datei test.txt abgespeichert.
  • Mit dem Befehl 2 wird diese Datei test.txt einem wordcount unterzogen. das Ergebnis in der Datei /tmp/result abgespeichert.
  • Diese Datei wird dann wieder in die Textbox geladen und angezeigt.

Etwas umständlich aber es geht. Der String t ist eigentlich überflüssig und kann aus dem Programm entfernt werden wenn man

textbox1.Text = File.Load("/tmp/result")

schreibt.