Gambas: Textbearbeitung

Aus Wikibooks
Wechseln zu: Navigation, Suche


Zurück zu Gambas


Textausgabe[Bearbeiten]

Die Textausgabe kann mit dem Print Befehl im Direktfenster oder in einer Textbox oder Textarea erfolgen.

Das kürzeste Gambas Programm mit einer Textausgabe lautet

PUBLIC SUB Form_Open()
PRINT 1
END

Man braucht eine leere Form, um es zu starten.

Starten Sie ein neues Projekt. Nennen Sie es wie sie wollen. Holen Sie sich eine neue Form mit der rechten Maustaste. Nennen Sie diese wie sie wollen. Es geht auch einfach F .

Dann kopieren Sie den Programmode in den Gambas Programmcodebereich Form.class.

Starten Sie das Programm mit F5

Diese Programm nutzt den Print Befehl. Alles was das Programm macht: Es gibt die Zahl eins im Direktfenster aus.

Will man das Programm abändern, um die Textausgabe in einer Textbox zu erreichen, dann schaut der Code so aus:

PUBLIC SUB Form_Open()
Textbox1.Text = "1"
END

Versucht man das Programm mit einer leeren Form zu starten, dann erhält man eine Fehlermeldung.

Unknown identifier: textbox1 Zeile 5 in Form1.class 

Man braucht also eine Textbox auf der Form. Diese holt man sich mit F6 und Doppelklick auf die Textbox aus der Werkzeugkiste.

Print[Bearbeiten]

Der gute alte Printbefehl ist etwas aus der Mode gekommen. Trotzdem kann man ihn noch sehr gut gebrauchen. Mit dem Print Befehl leitet man die Programmausgabe in die Standardausgabe ( meist die Textkonsole) um.

Dies ist unterschiedlich zu Visual Basic. Dort gab der Printbefehl sein Ergebnis in der Form aus. Das machte er ohne Rücksicht auf die Dinge, die sonst noch in der Form zu finden waren. Die Ausgabe war deswegen oft schlecht lesbar. Er hatte auch den Nachteil, keinen Zeilenumbruch zu können.

Man kann den Printbefehl in Gambas sehr gut zur Fehlersuche benutzen, wenn man mit ihm den Wert von Variablen in die Textkonsole umleitet und ausgibt. Viele Hilfetexte für Gambas benutzen außerdem den Printbefehl.

Versuchen Sie jetzt folgendes Beispiel:

PUBLIC SUB Button1_Click()
DIM k AS Integer
FOR k = 1 TO 10
 PRINT k;
NEXT
PRINT
PRINT 1,2,3,4,5,6,7,8,9,10
FOR k = 1 TO 10
 PRINT k
NEXT
END

Holen Sie sich eine neue Form. Darauf plazieren Sie einen Befehlsknopf ( = CommandButton) . Diesen können Sie sich mit F6 aus der Werkzeugkiste holen. Klicken Sie im Entwurfsmodus auf den Befehlsknopf und weisen Sie ihm den Programmcode weiter unten zu. Wenn das hier gezeigte Programm für sie noch zu kompliziert ist , dann geben Sie einfach einmal Print 1 oder Print "Hallo Welt! " ein.

Starten Sie das Programm mit F5 und drücken Sie auf den Befehlsknopf, dann sollten Sie folgende Ausgabe erhalten:

12345678910
1       2       3       4       5       6       7       8       9       10
1
2
3
4
5
6
7
8
9
10

Man beendet das Programm mit einem Klick auf die Raute rechts oben .

Der Printbefehl gibt Ausdrücke auf dem Standard Ausgabe gerät aus. Die Ausdrücke werden vorher mit der String Funktion Str() in eine Textausgabe umgewandelt.

Text muß für den Printbefehl in Anführungszeichen stehen:

Print "Hallo Welt" ist korrekt Print Hallo Welt funktioniert nicht.

Bei ganzen Zahlen können die Anführungszeichen weggelassen werden. Print "1" ist identisch mit Print 1.

Falls nach dem letzten Zeichen kein Komma oder Strichpunkt folgt, wird ein Neue Zeile Befehl automatisch angefügt.

Falls im Print Befehl ein Komma auftaucht wird eine Tabsprung (ASCII code 9) eingefügt. Meist entspricht der Tabsprung 5 Leerzeichen.

Der Doppelpunkt nach dem Printbefehl funktioniert in Gambas nicht.

Print 1: Print 2 

gibt eine Fehlermeldung.

Syntax error

String$[Bearbeiten]

Mit dem Befehl String$ kann man ein Zeichen oder eine Zeichenfolge mehrfach ausgeben

Syntax:

String = String$ ( Häufigkeit , Zeichenfolge ) 

Beispiel :

PRINT String$(12, "*")

Ausgabe: ************

PRINT String$(2, "Gambas")

Ausgabe: GambasGambas

Texteingabe[Bearbeiten]

Die Texteingabe erfolgt über eine Textbox oder eine Textarea.

Man kann die Texteingabe auf die Eingabe bestimmter Zeichen begrenzen. Wie das geht, zeigt folgendes Beispiel. Es nutzt den STOP EVENT Befehl:

Sie brauchen eine Textbox auf Ihrer Form um das Programm in gang zu bringen:

'Meine Textbox verarbeitet nur Ziffern.
PUBLIC SUB TextBox1_KeyPress()
  IF Instr("0123456789", Key.Text) = 0 THEN
   STOP EVENT
 ENDIF
END SUB

Ähnliches können Sie mit dem folgenden Code erreichen.Interessant ist hier, die anfangs unverständliche Nutzung des If Then Befehles:

PUBLIC SUB Form_Open()
 ME.Text = "Nur Zahlen erlaubt !"
END
PUBLIC SUB TextBox1_KeyPress()
   IF key.Code >= 48 AND key.Code <= 57 THEN 
   ELSE IF key.Code = key.BackSpace THEN 
   ELSE IF key.Code = key.Delete THEN 
   ELSE 
     STOP EVENT 
 ENDIF 
END

Text Löschen[Bearbeiten]

Mit dem folgenden kleinen Programm löscht man eine Textbox leer. Es ist ziemlich simpel. Holen Sie sich eine Textbox aus der Werkzeugkiste . Dann noch einen BefehlsButton. Siehe http://www.madeasy.de/7/prgtxtdel.htm

PUBLIC SUB Button1_Click()
TextBox1.Text = ""
END

Text zusammenkleben mit &[Bearbeiten]

Text kleben kann man in Gambas mit dem Befehl &. Das Zeichen finden Sie oberhalb der Ziffer 6. Man kann den Text nicht einfach mit dem Plus Zeichen zusammenkleben, denn im Gegensatz zu VB ist + in Gambas nur für die mathematische Addition reserviert.

Das Beispielprogramm klebt 2 Textteile aneinander und gibt sie in einer TextArea aus. Es ist ziemlich einfach. Holen Sie sich drei TextAreas aus der Werkzeugkiste . Dann noch zwei Buttons. Benennen Sie die Buttons bei den Properties ( = Eigenschaften mit F4 Taste aufrufen) um.

Siehe http://www.madeasy.de/7/prgtxtplus.htm

Der Programmcode schaut so aus:

PUBLIC SUB Button1_Click()
TextArea1.Text = "1.Teil "
TextArea2.Text = "2.Teil " 
END

PUBLIC SUB Button2_Click()
TextArea3.Text = "1.Teil " & " und 2.Teil "
END


Auch folgender Code ist korrekt:

TextArea3.Text = TextArea1.Text & TextArea2.Text

TextArea3.Text = TextArea1.Text + TextArea2.Text ergibt eine Meldung True oder T.

Neue Zeile mit & Chr$(10) & Chr$(13)[Bearbeiten]

Die Zeichen Chr$(10), Chr$(13) haben eine besondere Bedeutung. Sie symbolisieren keinen Buchstaben wie zb Chr$(60) sondern führen einen Zeilenwechsel durch. Die alten Bezeichnungen dafür waren LF und CR, d.h Line feed und Carriage return. Sie stammen noch aus der Schreibmaschinenarea.

Beachten Sie das in Gambas das Pluszeichen + nur als mathematisches Zeichen verwendet werden darf. Zum kleben von Strings benutzt man &.

Das Beispiel Programm klebt 2 Textteile aneinander und fügt eine neue Zeile dazwischen. Das Ergebnis wird in einer dritten TextArea ausgegeben.

Holen Sie sich drei TextAreas aus der Werkzeugkiste . Dann noch zwei Buttons. Benennen Sie die Buttons bei den Properties ( = Eigenschaften mit F4 Taste aufrufen) um.

http://www.madeasy.de/7/prglinefeed.htm

Der Programmcode schaut so aus:

PUBLIC SUB Button1_Click()
TextArea1.Text = "1.Teil "
TextArea2.Text = "2.Teil " 
END
PUBLIC SUB Button2_Click()
TextArea3.Text = "1.Teil " & Chr$(10) & Chr$(13) & " und 2.Teil "
END

Textlabel Fett, Kursiv und farbig[Bearbeiten]

Die Textausgabe in einem Textlabel kann man kursiv,fett oder farbig gestalten. Wie das geht zeigt folgendes Programm.

Holen Sie sich einen TextLabel aus der Werkzeugkiste . Dann noch einen Button. Benennen Sie den Button bei den Properties ( = Eigenschaften mit F4 Taste aufrufen) um.

http://www.madeasy.de/7/prgtextlabel.htm

Screenshot des Textlabel Programmes

Clicken Sie auf den Button im Entwurfsmodus und geben sie den Programmcode von unten ein. Leider wird unter der Wikieingabe der Quelltext falsch dargestellt. Drücken Sie deswegen in diesem Wikiabsatz rechts oben auf Bearbeiten und übernehmen Sie den Wikiquelltext des Programmes direkt aus der Bearbeitenversion. Dann funktioniert es richtig.

PUBLIC SUB Button1_Click()
"TextLabel1.Text= "<b>TextLabel</b><br>"&
"<i>Hier können Sie die Textausgabe beeinflussen </i> <br>"&
"<u>So geht das</u><br>"&
"<font color=red>auch in rot!</font>"
END

Der Split Befehl[Bearbeiten]

Der Befehl Split unterteilt einen Textstring in mehrere Teile. Die Textausgabe wird durch ein Separatorzeichen getrennt. Das Seperatorzeichen ist auf ein Komma voreingestellt. Will man ein anderes Separatorzeichen muss man dies angeben. In dem angegebenen Beispiel wird als Separatorzeichen ein Leerzeichen verwendet.

Einen Satz in seine Worte zerlegen[Bearbeiten]

Mit dem Splitbefehl kann man sehr einfach eine Satz in seine Worte zerlegen:

Beispielprogramm im Terminalmodus

STATIC PUBLIC SUB Main()
DIM liste AS String[]
DIM element AS String
DIM trenn AS String
DIM text1 AS String
trenn = " "
text1 = "Dies ist ein Satz mit mehreren Worten."
liste = Split(text1, trenn)
FOR EACH element IN liste
 PRINT element
NEXT
END

Ausgabe im Direktfenster:

Dies
ist
ein
Satz
mit
mehreren
Worten.

Beispiel2: Eine Zahlreihe summieren[Bearbeiten]

Siehe Gambas Rechnen Summierprogramm Addy

Beispiel 3 des Splitbefehls[Bearbeiten]

Das Beispielprogramm zeigt Ihnen den Gebrauch des Splitbefehls .

Das hier angebene Beispiel ist etwas kompliziert , da in der Ausgabe die Reihenfolge der Wort noch von hinten nach vorne vertauscht wird.

Holen Sie sich eine neue Form. Platzieren Sie darauf ein Textfeld ( = Textbox). (Holen Sie sich das Element mit F6 und Doppelclick aus der Werkzeugkiste.)

Platzieren Sie darauf ein Befehlsfeld und benennen Sie es neu, wie auf dem Bild gezeigt :

Holen Sie aus der Werkzeugkiste zwei Textlabelfelder.

Programmcode:

STATIC PUBLIC SUB Main()
hForm AS F
hForm = NEW F
hForm.show
END
PUBLIC SUB Button1_Click()
myAr AS String[]
myStr AS String
outstr AS String
x AS Integer
outstr = ""
myAr = Split(TextBox1.Text, " ")
FOR x = 1 TO myAr.length
 outstr = outstr & " " & myAr[myAr.length - x]
NEXT
TextLabel2.Text = outstr
END

Split Syntax

Array = Split ( String [ , Separators , Escape ] ) 

Splits a string into substrings delimited by Separators . Escape characters can be specified: any separator characters enclosed between two escape characters are ignored in the splitting process.

Note that Split takes only three arguments: if you want to use several separators, you should pass them as the second parameter, concatenated in a single string.

By default, the comma character is the separator, and there are no escape characters.

This function returns a string array filled with each detected substring.

Beispiel

DIM Elt AS String[]
DIM Sb AS String
Elt = Split("Gambas Almost Means BASIC ! 'agree ?'", " ", "'")
FOR EACH Sb IN Elt
 PRINT Sb
NEXT

Ausgabe:


Gambas
Almost
Means
BASIC
!
agree ?

Der Replace Befehl - Zeichenersetzen[Bearbeiten]

Mit dem Replace$ Befehl kann man Buchstaben oder Silben in einem Text austauschen.

Der Befehl hat folgende Syntax:

Ergebnis = Replace$ ( Text , Suchmuster , Ersatzmuster ) 

Der Befehl tauscht an jeder Stelle im Text die Silbe Suchmuster durch das neue Ersatzmuster aus. Das ganze wird in Ergebnis gespeichert. Beachten Sie Ergebnis, Text , Suchmuster , Ersatzmuster sind willkürlich gewählte Namen Falls Text ein leerer Text ist, dann ist Ergebnis auch Null. Falls Suchmuster leer ist (null), dann ist Ergebnis = Text.

Kleine Beispiele aus der Gambas Hilfe[Bearbeiten]

PRINT Replace$("Gambas is basic", "bas", "BAS")

>> GamBAS is BASic

PRINT Replace$("Gambas is basic", "a", "")

>>Gmbs is bsic

PRINT Replace$("Gambas is basic", " ", "--")

>>Gambas--is--basic

Beispielprogramm[Bearbeiten]

Im folgenden Beispiel kann man die Austauschaktion beobachten und nach belieben verändern.

Layout[Bearbeiten]

Gambasreplace.png

Man braucht:

  • 1 Textarea
  • 1 Befehlsbutton
  • 2 Textboxen
  • 1 Label

Der Code[Bearbeiten]

PUBLIC SUB Form_Open()
 ME.Text = "Replace-Befehl"
 Textarea1.Text = "Dies ist ein neuer Test"
 Textbox1.Text = "i"
 Textbox2.Text = "a"
 Label1.Text = "mit"
 Button1.Text = "Ersetze"
END
PUBLIC SUB Button1_Click()
 a AS String 
 a = Replace$(Textarea1.Text, Textbox1.text,Textbox2.text)
 textarea1.Text = a
END

Instr An welcher Position steht der Teil ?[Bearbeiten]

Der Befehl InStr sucht eine kurze Zeichenfolge (String) in einer längeren Zeichenfolge.

print Instr("bearbeitet", "ea")

Ergibt in der Ausgabe:

2

Die Textfolge ea wird ab der Position 2 in bearbeitet gefunden: bearbeitet.

Das kurze Programm

STATIC PUBLIC SUB Main()
PRINT Instr("Dieser Text wird jetzt gleich bearbeitet", "ei")
PRINT Instr("Dieser Text wird jetzt gleich bearbeitet", "ei", 28)
PRINT Instr("Diesen String wird jetzt gleich bearbeitet ", "ein")
END

ergibt als Ergebnis in der Direktausgabe:

26
36
0
  • 26 ist die erste Fundstelle.
  • 36 ist die Fundstelle nach der Position 28
    • Wenn man nach der zu suchenden Textsequenz nach einem Komma noch eine ganze Zahl N eingibt, dann fängt der Befehl erst ab der N.ten Stelle im Text zu suchen an.
  • ein gibt es gar nicht im Text , deswegen wird 0 ausgegeben.

RInStr[Bearbeiten]

Der Befehl RInStr funktioniert wie sein Namensvetter InStr, nur sucht er vom rechten Ende her. (von Rechts deswegen RInStr)

Beispiel mit allen Möglichkeiten von RInStr

STATIC PUBLIC SUB Main()
PRINT RInstr("Dieser Text wird jetzt gleich bearbeitet", "ei")
PRINT RInstr("Dieser Text wird jetzt gleich bearbeitet", "ei", 28)
PRINT RInstr("Dieser Text wird jetzt gleich bearbeitet", "ein")
END

Das gleiche Beispiel im Grafikmodus:

PUBLIC SUB Button1_Click()
PRINT RInstr("Dieser Text wird jetzt gleich bearbeitet", "ei")
PRINT RInstr("Dieser Text wird jetzt gleich bearbeitet", "ei", 28)
PRINT RInstr("Dieser Text wird jetzt gleich bearbeitet", "ein")
END

Um das Beispiel in Gang zu bringen braucht man einen Befehlsbutton auf der Form.

Ausgabe:

36
26
0

Subst Platzhalter im Text[Bearbeiten]

Mit Subst kann man einen variablen Platzhalter in einen Text einfügen. Der zu ersetzende Teil beginnt immer mit & und einer Zahl danach. (&1, &2, &3 ....usw.). Das Einfügen erfolgt der Reihe nach.

print Subst("Diesen Text in einer &1 bearbeiten", "Textbox")

&1 wird durch Textbox ersetzt.

print Subst("&1 Texte in der &2 ersetzen. ", "Alle", "Textbox")

Ausgabe:

Alle Texte in der Textbox ersetzen.

Länge eines Strings ( einer Textfolge) feststellen Len[Bearbeiten]

Mit dem Befehl Len kann man die Länge eines Strings messen.

 print Len("Die Länge wird gleich gemessen.")

Ausgabe:

32

Beispiel:

PUBLIC SUB Form_Open()
 Button1.Text = "Länge"
 Textbox1.Text = "Dies ist ein Test"
 Textbox2.Text = ""
END
PUBLIC SUB Button1_Click()
 textbox2.Text = Str(Len(textbox1.text))
END

Sie brauchen einen Befehlsbutton und 2 Textboxen auf ihrer Form, um das Beispiel in Gang zu bringen. Wenn Sie nicht wissen was der Befehl str bedeutet, dann schauen Sie hier nach: Gambas: Umwandlung von Variablen Str wandelt jede andere Variable in einen String um. Probieren Sie einfach einmal das Beispiel ohne Str aus. Auch das funktioniert.

CHR() ASCII-Zahlencode in Zeichen umwandeln[Bearbeiten]

Der CHR Befehl wandelt Zahlen zu Buchstaben und Zeichen um

Syntax:

Character = Chr$ ( Zahl ) 

Er gibt das Zeichen zurück, welches dem ASCII code von Zahl entspricht . Auf das früher übliche Stringzeichen $ können Sie verzichten.

Chr(Zahl) ist gleich Chr$(Zahl) 

Das Gegenteil des CHR Befehls ist der Befehl ASC.

Beispiel 1:

PRINT Chr$(65)

Ausgabe: A

Beispielprogramm zum CHR Befehl im Terminalmodus

STATIC PUBLIC SUB Main()
DIM x AS Integer
FOR x = 30 TO 133
PRINT x,Chr$(x)
NEXT
PRINT
PRINT "Zeilenumbruch CHR(10)", Chr$(10)
PRINT "Return CHR(13)", Chr$(13)
PRINT "Leerzeichen Chr$(32)", "a";Chr$(32);"a"
PRINT "0 CHR48", Chr$(48), Str(0)
PRINT "9 CHR57", Chr$(57), Str(9)
PRINT "@ CHR64", Chr$(64), Str("@")
PRINT "A CHR65", Chr$(65), Str("A")
PRINT "Z CHR90", Chr$(90), Str("Z")
PRINT "a CHR97", Chr$(97), Str("a")
PRINT "z CHR122", Chr$(122), Str("z")
END

ASC() Wandelt alphanumerische Zeichen in ASCII-Zahlencode um[Bearbeiten]

Der Befehl Asc gibt den ASCII code eines Buchstabens oder Zeichens zurück. Wenn die Position nicht angegeben wird, dann wird der ASCII code des ersten Zeichens zurückgegeben.


Syntax

Asc ( String [ , Position ] ) 

Beispiel:

PRINT Asc("Gambas")

Ausgabe: 71

PRINT Asc("Gambas", 3)

Ausgabe: 109

Beispiel im Terminalmodus:

STATIC PUBLIC SUB Main()
DIM test AS String
DIM x AS Integer
test = "1234567 Dies ist ein Test"
FOR x = 1 TO Len(test)
 PRINT Asc(test,x)
NEXT
END

Str() wandelt andere Variablen in einen Textstring um[Bearbeiten]

Haben Sie eine Zahl oder eine andere Variable, die Sie in Text umwandeln wollen, dann sollten Sie den Befehl Str() verwenden. Einfache Umwandlungen macht Gambas automatisch ohne den Str Befehl, verlassen Sie sich aber nicht auf diese Automatismen. Im Zweifelsfall fügen Sie ein Str ein.

Beispiel: Sie brauchen eine Textbox und einen Befehlsknopf, um es in Gang zu bringen.

PUBLIC SUB Form_Open()
 ME.Text = "Str wandelt andere Variablen in Text um"
 Button1.Text = "Start"
 textbox1.Text = ""
END
PUBLIC SUB Button1_Click()
 textbox1.Text = Str(8 * 37)
 'textbox1.Text = 8 * 37
 'Probieren Sie es einmal ohne Str
END

Siehe auch Gambas: Umwandlung von Variablen#str$

Zeichensatz[Bearbeiten]

Folgendes kleine Programm gibt den aktuellen Zeichensatz Ihres Systems aus. Sie brauchen dazu nur eine leere Form.

PUBLIC SUB Form_Open()
PRINT System.Charset
END

Ausgabe zb im Direktfenster:

ISO-8859-15

Siehe auch CONV$

Schriftart (Font) über einen Standarddialog wählen[Bearbeiten]

Im folgenden Beispielprogramm kann man die Schriftart einer Textarea über einen Standarddialog wählen.

Sie brauchen dazu eine Textarea und einen Commandbutton.

PUBLIC SUB Button1_Click()
 IF Dialog.SelectFont() THEN RETURN
 Textarea1.Font = Dialog.Font
END

Sie können den Font natürlich auch über die Eigenschaften der Textarea festlegen oder im Programm direkt codieren.

Ein Beispielprogramm zeigt die direkte Codierung während der Laufzeit. Sie brauchen eine Form und einen Textarea, um das Programm in Gang zu bringen.

PUBLIC SUB Form_Open()
Form1.Font.Name = "Utopia"
Form1.Font.Bold = TRUE
Form1.Font.Italic = TRUE
Form1.Font.Size = "24"
Form1.Font.StrikeOut = FALSE
Form1.Font.Underline = TRUE
END

Alle verfügbaren Schriftarten aufzählen[Bearbeiten]

Mit dem folgenden Beispielprogramm können Sie sich alle verfügbaren Fonts aufzählen lassen. Sie brauchen einen Befehlsbutton um das Programm starten zu können. Die Ausgabe der Fonts erfolgt im Direktfenster.

PUBLIC SUB Button1_Click()
DIM c AS String
FOR EACH c IN Fonts
 PRINT c
NEXT 
END