Re: Problem mit strx.Lcase Kategorie: Programmierung (von Udo - 17.02.2005 15:29) | ||
Als Antwort auf Re: Problem mit strx.Lcase von Holger - 17.02.2005 14:03 | ||
| ||
> > Hallo, > > > > > eigentlich sollte das nicht passieren. Das Gute bei der verwendeten Sprache ist, dass man bei > > solchen Fehlern einfach selbst im entsprechenden Modul nachsehen kann. So befindet sich im > > Modul strx.c2 in der Funktion Lcase folgende Zeile: > > > > if s[i]>=65 and s[i]<=90 s[i]=s[i]+32; > > > > D. h. es werden nur ASCII Codes angefasst, deren Wert zwischen 65 (A) und 90 (Z) liegt. Umlaute > > werden separat behandelt. > > Vielleicht hast Du ein älteres Modul, in dem diese Abfrage noch nicht enthalten ist. > > Oder Du hast ein Neueres, in dem diese Abfrage (aus welchen Gründen auch immer) nicht mehr > > vorhanden ist. > > Dies ist jedenfalls die Richtung, in der Du den Fehler suchen musst. > > Im Zweifelsfall kannst Du diese Abfrage auch ganz einfach selbst einbauen. > > > > Gru� > > > > Udo > > also bei mir sieht die Funktion so aus (strx.Lcase): > > > //--String in Kleinbuchstaben umwandeln------------------- > inline function Lcase (byte s[], byte start, byte len) > //-------------------------------------------------------- > { > inline vmcodes.VM_LOAD_IMMEDIATE_BYTE+Segment; > inline vmcodes.VM_LOAD_IMMEDIATE_INT; > inline _LCASE; > inline vmcodes.VM_SYSCALL; > } > > > natürlich hab ich mir die Funktion erstmal selbst gebaut, > ich wollte nur André oder andere darauf hinweisen, dass hier > irgendetwas nicht stimmt. > > Holger Hallo nochmal, ich habs inzwischen auch gesehen, dass dieser Part durch Assembler ersetzt worden ist. Ich habe hier bei mir noch eine ältere Version installiert gehabt. Ich gehe aber davon aus, dass es etwas dauern wird, bis André die Zeit findet den Code zu ändern. Wenn es bei Dir nicht zu sehr auf Geschwindigkeit ankommt, kannst Du Dir erstmal behelfen, indem Du vorläufig den Code aus dem Vorgängermodul einbaust. Falls Du den nicht mehr zur Verfügung hast, die komplette Funktion sieht so aus: //--String in Kleinbuchstaben umwandeln------------------- function Lcase (byte s[], byte start, byte len) //-------------------------------------------------------- {byte i; for i= start ... len-1 { if s[i]>=65 and s[i]<=90 s[i]=s[i]+32; else if s[i]==214 s[i]=246; else if s[i]==220 s[i]=252; else if s[i]==196 s[i]=228; else if s[i]==201 s[i]=233; } } oder entsprechend: //--String in Gro�buchstaben umwandeln-------------------- function Ucase ( byte s[], byte start, byte len) //-------------------------------------------------------- {byte i; for i= start ... len-1 { if s[i]>=97 and s[i]<=122 s[i]=s[i]-32; else if s[i]==246 s[i]=214; else if s[i]==252 s[i]=220; else if s[i]==228 s[i]=196; else if s[i]==233 s[i]=201; } } Viele Grü�e Udo | ||
Antwort schreiben Antworten: Re: Problem mit strx.Lcase (von Holger - 17.02.2005 16:01) Re: Problem mit strx.Lcase (von Udo - 18.02.2005 10:46) Re: Problem mit strx.Lcase (von Holger - 20.02.2005 19:37) |