Gambas: Textbearbeitung
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.
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. Waybackmaschine anwählen und dann suchen unter 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 auch Waybackmaschine und dann suchen unter 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.
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
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]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