Einfügen als Gemeinsames Modul
Funktionen:
getchar()
comp()
comsel()
InStr()
Ucase()
Lcase()
left()
right()
mid()
paste()
insert()
cut()
split()
getNum()
getHex()
replace()
replacelen()
ReplaceChar()
Beschreibung Nach oben
Das Modul strx.c2 beinhaltet mehrere nützliche Funktionen zum
Bearbeiten
von Stringvariablen.
Ab V2.4 benötigt strx.c2 für die meisten Funktionen den ASM-Treiber
sys0002.hex,
welcher mit einem Download-Tool in Segment3 geladen werden.
sys0002.hex wird außerdem von den aktuellen Versionen von hwcom.c2, swcom.c2
und
mem.c2 benötigt.
Einfügen als Gemeinsames Modul Nach oben
Die Datei strx.c2 in das Verzeichnis .\CControl2\UserLib
der IDE
kopieren und ggf. in der Datei modules.txt die Zeile strx.c2 einfügen.
Funktionen:
getchar() Nach oben
function getchar(byte s[], int position) returns byte
Mit der Funktion getchar() wird ein einzelnes Zeichen von der
angegebenen Position des übergebenen Strings als Bytewert
zurückgegeben.
s[] | Stringvariable |
position | Zeichenposition 0 bis 29 |
Strings vergleichen: comp()
Nach oben
inline function comp(string s1, string s2) returns int
Mit comp() werden zwei Strings miteinander verglichen, ob diese
identisch sind. Es wird True(-1) zurückgegeben, wenn die Strings identisch
sind,
andernfalls False(0).
s1[], s2[] | zu vergleichende Strings |
Teilstrings vergleichen:
compsel()
Nach oben
inline function compsel(byte s1[], byte s2[], byte s2len, byte s1pos) returns int
Mit compsel() werden zwei Teilstrings miteinander verglichen, ob diese
identisch sind. Es wird True(-1) zurückgegeben, wenn die Strings identisch
sind,
andernfalls False(0).
Mit s2len wird die Anzahl der zu vergleichenden Zeichen bestimmt, und mit
s1pos die Startposition von s1, ab der verglichen werden soll.
compsel() kann auch zum Vergleich von Bytearrays verwendet werden.
s1[] | Zu vergleichender QuellString |
s2[] | der zu suchende String |
s2len | Anzahl der Zeichen in String2 bzw. Anzahl zu vergleichender Zeichen (0-29) |
s1pos | Startposition in String1, ab der verglichen werden soll (0-29) |
Zeichenfolge suchen: InStr()
Nach oben
inline function InStr(byte start, byte s1[], byte s2[], byte s1len, byte s2len) returns int
Mit der Funktion InStr() kann nach der Position einer
Zeichenfolge in einem String
gesucht werden. Es wird dabei die Startposition des ersten Vorkommens der zu
suchenden Zeichenfolge
zurückgegeben. Ist s2 in s1 nicht vorhanden, so wird -1 zurückgegeben.
Diese Funktion funktioniert wie die vergleichbare Funktion InStr() in Visual
Basic.
InStr() kann auch mit Bytearrays verwendet werden.
start | Startposition in s1, ab der gesucht werden soll (0-29) |
s1[] | Zu durchsuchender String |
s2[] | Zu suchende Zeichenfolge |
s1len | Anzahl zu durchsuchender Zeichen in s1 (0-29) |
s2len | Anzahl der Zeichen in s2 bzw. Anzahl zu
suchender Zeichen von s2 (0-29) |
String in Groß-oder Kleinbuchstaben umwandeln: Ucase() & Lcase() Nach oben
inline function Ucase(byte s[], byte start, byte len)
inline function Lcase(byte s[], byte start, byte len)
Mit diesen Funktion werden die Zeichen des übergebenen Strings
in Großbuchstaben (Ucase()) bzw. in Kleinbuchstaben(Lcase())
umgewandelt.
Es kann dabei die Startposition und die Anzahl der Zeichen übergeben werden,
wenn nur ein Teil der Zeichen des angegebenen Strings gewandelt werden soll.
Sollen generell alle Zeichen gewandelt werden, so kann für start der
Wert 0 und
für len der Wert 30 übergeben werden.
Es werden hierbei nur alle Buchstaben berücksichtigt (incl. Umlaute).
Sonderzeichen und Zahlen bleiben unverändert.
Diese Funktionen können auch mit Bytearrays verwendet werden.
s[] | Zu wandelnder String |
start | Startposition, ab der gewandelt werden soll (0-29) |
len | Anzahl zu wandelnder Zeichen (1-30) |
Teilstring kopieren: left() Nach oben
inline function left(string s1, string s2, byte len)
Die Funktion left() gibt die Anzahl len Zeichen ab dem
ersten(linken) Zeichen
von s1 in s2 zurück.
Die Funktion ist mit derVB-Funktion Left() vergleichbar.
s1[] | Quellstring |
s2[] | Zielstring |
len | Anzahl der zurückzugebenden Zeichen (1-30) |
Teilstring kopieren: right() Nach oben
inline function right(string s1, string s2, byte len)
Die Funktion right() gibt die Anzahl len Zeichen von der
rechten Seite(dem Ende)
von s1 in s2 zurück.
Die Funktion ist mit derVB-Funktion Right() vergleichbar.
s1[] | Quellstring |
s2[] | Zielstring |
len | Anzahl der zurückzugebenden Zeichen (1-30) |
Beispiel:
a="Das
ist ein Test";
strx.right(a,b,4);
//Hier wird in b "Test" zurückgegeben
Teilstring kopieren: mid()
Nach oben
inline function mid(string s1, string s2, byte start, byte len)
Die Funktion mid() gibt die Anzahl len Zeichen ab der Position start von s1 in s2 zurück.
s1[] | Quellstring |
s2[] | Zielstring |
start | Startposition (0-29) |
len | Anzahl der zurückzugebenden Zeichen (1-30) |
Beispiel:
a="Das
ist ein Test";
strx.mid(a,b,8,3);
//Hier wird in b "ein" zurückgegeben
inline function paste(string s1, string s2, byte start, byte len)
Die Funktion paste() fügt len Zeichen von s1 in s2
ab Position start in s2 ein.
Vorhandene Zeichen an der Startposition werden dabei entsprechend der Länge
des einzufügenden Strings überschrieben.
s1[] | Quellstring |
s2[] | Zielstring |
start | Startposition in s2 (0-29) |
len | Anzahl der einzufügenden Zeichen von s1(1-30) |
Beispiel:
a="e
C-Control II";
b="Das
ist ein Test";
strx.paste(a,b,11,14);//Hier wird
aus "Das ist ein Test" der String
// "Das ist eine C-Control II"
Zeichenfolge
einfügen: insert()
Nach oben
inline function insert(byte source[], byte dest[], byte start, byte len)
Die Funktion paste() fügt len Zeichen von s1 in s2 ab Position start in s2 ein.
source[] | Quellstring |
dest[] | Zielstring |
start | Startposition in s2 (0-29) |
len | Anzahl der einzufügenden Zeichen von s1(1-30) |
Beispiel:
a="schneller
";
b="Das
ist ein Test";
strx.insert(a,b,8,10);//Hier wird
aus "Das ist ein Test" der String
// "Das ist ein schneller Test"
Zeichenfolge
ausschneiden: cut()
Nach oben
inline function cut(string s1, string s2, byte start, byte len)
Die Funktion cut() schneidet ab Position start aus s1
len Zeichen aus und
speichert diese in s2.
s1[] | Quellstring |
s2[] | Zielstring |
start | Startposition in s2 (0-29) |
len | Anzahl der einzufügenden Zeichen von s1 (1-30) |
Beispiel:
a="Das
ist ein guter Controller";
strx.cut(a,b,12,6);
//Hier wird aus "Das ist ein guter Controller"
//der String "Das ist ein Controller"
//In b wird "guter " zurückgegeben
Zeichenfolge mit Trennzeichen zerlegen: split() Nach oben
inline function split(string s, string s2[], byte searchfor) returns int
Die Funktion split() zerteilt den String s1 anhand des
Trennzeichens searchfor
in merere Strings und speichert diese im String-Array s2. Es darauf geachtet
werden,
daß das Ziel-String-Array groß genug definiert wird !
Es wird die Anzahl der Strings, in die der Quellstring unterteilt wurde,
zurückgegeben.
s1[] | Quellstring |
s2[] | Zielstring-Array |
searchfor | ASCII-Code des Trennzeichens |
Beispiel:
string a,b[6];
a="Das
ist ein guter Controller";
strx.cut(a,b,'
'); //Hier wird der String "Das ist ein guter Controller"
//in
5 Strings zerlegt. Jedes Wort steht nun
//in
einem eigenem String des Arrays b[]
String in Zahl
umwandeln: getNum()
Nach oben
function getNum(byte s[]) returns long
Mit Hilfe der Funktion getNum() können Zeichenfolgen, die eine
Zahl darstellen,
als solche umgewandelt werden. Der Zahlenbereich kann bis Long-Integer und
sowohl im positiven als auch im negativen Bereich sein.
Im übergebenen String dürfen sich nur Ziffern und das Zeichen
"-"(als erstes Zeichen) befinden.
Befindet sich ein anderes Zeichen im String, so wird 0x8000 für "keine
Zahl" zurückgegeben.
Das Ergebnis kann in Byte-, Integer-und Long-Variablen gespeichert werden.
s[] | String mit Zahlenwert |
String in Zahl umwandeln: getHex() Nach oben
function getHex(byte s[]) returns long
Mit Hilfe der Funktion getHex() können Zeichenfolgen, die eine
Hexadezimale Zahl darstellen,
in eine Zahl umgewandelt werden. Der Zahlenbereich kann bis Long-Integer sein.
Im übergebenen String dürfen sich nur Hexadezimale Ziffern ohne Prefix befinden.
Befindet sich ein anderes Zeichen im String, so wird 0x8000 für "keine
Zahl" zurückgegeben.
Das Ergebnis kann in Byte-, Integer-und Long-Variablen gespeichert werden.
s[] | String mit Zahlenwert |
Beispiel:
string a;int
zahl;
a="2F4A";
zahl=strx.getHex(a);
//Hier wird der String "2F4A" als Zahl
eingelesen
//und mit dem Wert 12104 (=0x2F4A) in die Integervariable
//zahl gespeichert
Zeichen ersetzen: replace() Nach oben
inline function replace(string s, byte FindChar, byte NewChar) returns int
Die Funktion replace() ersetzt im String s
alle Zeichen mit
dem ASCII-Code FindChar mit dem Zeichen NewChar.
s | Zu bearbeitender String |
FindChar | Zu ersetzendes Zeichen |
NewChar | Neues Zeichen |
Zeichen ersetzen: replacelen() Nach oben
inline function replacelen(byte start, string s, byte slen, byte FindChar, byte NewChar) returns int
Die Funktion replacelen() ersetzt im String s ab
Position start len Zeichen
alle Zeichen mit dem ASCII-Code FindChar mit dem Zeichen NewChar.
Anders als bei ReplaceChar() wird mit len nicht die Endpositon,
sondern die Anzahl
der Zeichen ab start angegeben.
start | Startposition in s (0-29) |
s[] | Zu bearbeitender String |
slen | Anzahl zu bearbeitender Zeichen ab start (1-30) |
FindChar | Zu ersetzendes Zeichen |
NewChar | Neues Zeichen |
Zeichen ersetzen: ReplaceChar() Nach oben
function ReplaceChar(byte start, byte s[], byte slen, byte FindChar, byte NewChar) returns int
Die Funktion ReplaceChar() ersetzt im String s ab
Position start bis Position slen
alle Zeichen mit dem ASCII-Code FindChar mit dem Zeichen NewChar.
Diese Funktion ist aus Kompatibilitätsgründen noch vorhanden.
Für neue Projekte sollten die Funktionen replace() und replacelen() verwendet
werden,
da diese durch Assembler-Routinen um einiges schneller sind.
start | Startposition in s (0-29) |
s[] | Zu bearbeitender String |
slen | Endposition der zu bearbeitenden Zeichen (1-30) |
FindChar | Zu ersetzendes Zeichen |
NewChar | Neues Zeichen |
Autor: André Helbig
Erstellt: 11.02.2007 ©www.CC2Net.de