Forum: Mikrocontroller und Digitale Elektronik Bascom Zeichen ändern


von Schmit Andreas (Gast)


Lesenswert?

hallo guten Abend, ich wollte ma fragen wie man im Bascon ein zeichen 
ändert, man bekommt etwas mit einem Komma und man will den Komma in der 
Programierung durch einen Punkt ersetzen.

Variable (3) = "."
Funktioniert das nicht irgendwie so???

Grüsse

von Karl H. (kbuchegg)


Lesenswert?

Schmit Andreas schrieb:
> hallo guten Abend, ich wollte ma fragen wie man im Bascon ein zeichen
> ändert, man bekommt etwas mit einem Komma und man will den Komma in der
> Programierung durch einen Punkt ersetzen.
>
> Variable (3) = "."
> Funktioniert das nicht irgendwie so???

Probier mal

Variable(3) = '.'


Zwischen " und ' wird in vielen Programmiersprachen unterschieden.
' wird für 1 Zeichen benutzt
" wird für Zeichenketten (vulgo Strings) benutzt.

Einem einzelnen Zeichen eines Strings kann man aber logischerweise 
keinen ganzen String zuweisen. Wohl aber ein neues einzelnes Zeichen.

von penguin (Gast)


Lesenswert?

Das ' - Zeichen ist eine Substitution für das (alte) REM - eine 
Einleitung eines Kommentares innerhalb einer Zeile.

von Schmit Andreas (Gast)


Lesenswert?

klapp irgendwie nicht, gibts keine andere Lösung um einfach nur das 
Komma mit einem Punkt zu ersetzen??

von Spess53 (Gast)


Lesenswert?

Hi

Dann weise einfach den ASCII-Code ($2E) zu.

MfG Spess

von Charly B. (charly)


Lesenswert?

Du kannst einen Sring in ein array 'mapen',
i weiss nicht wie ichs besser ausdruecken kann,
heist irgendwie mit overlay
schau mal in die Hilfe bei Dim glaub ich

viel erfolg
vlG
Charly

von Schmit Andreas (Gast)


Lesenswert?

Mit ascii funktioniert auch nicht

@ charly B.:Sorry bin noch anfänger

es muss doch eine einfache lösung geben die jedermann versteht

von Schmit Andreas (Gast)


Lesenswert?

Der befehl FORMAT klappt es vielleicht mit dem ???

von Spess53 (Gast)


Lesenswert?

Hi

>Mit ascii funktioniert auch nicht

Dann vielleicht so:

Variable(3) = CHR($2E)

MfG Spess

von Stefan B. (stefan) Benutzerseite


Lesenswert?

[basic]
Dim Textout As String * 11
Textout = "42,23"
Print Textout
Replacechars Textout , "," , "."
Print Textout
[/basic]

von Weingut P. (weinbauer)


Lesenswert?

dim demostring as string * 20
dim string_item (20) as byte at demostring overlay

demostring = "hallo, du"

for x=1 to 20
  if string_item(x) = "," then
    string_item(x) = "."
  endif
next

print demostring

von Schmit Andreas (Gast)


Lesenswert?

>  = CHR($2E)

Glaubste nicht es würde an den Klammern liegen wo die 3 drin steht, denn 
er glaubt vielleicht das (Variable(3))wäre die ganze variable aber ich 
will ja nur die dritte stelle der Variable ersetzen

grüsse

von screwdriver (Gast)


Lesenswert?

Schmit Andreas schrieb:
> hallo guten Abend, ich wollte ma fragen wie man im Bascon ein zeichen
> ändert, man bekommt etwas mit einem Komma und man will den Komma in der
> Programierung durch einen Punkt ersetzen.

Hi,

dafür wurde in Version 1.12.0.0 der Befehl REPLACECHARS eingeführt.

Ich zitiere aus der Bascom-Hilfe:

Syntax: REPLACECHARS  string , old,new

string: A string variable.
old: A character or byte with the ASCII value of the character to search 
for.
new: A character of byte with the ASCII value with the new value.

When we have a string with a content of : "abcdefabc" and we want to 
replace the "a" by an "A" we can use :

Replacechars string , "a" , "A"

von screwdriver (Gast)


Lesenswert?

@stefan
Ich glaub, ich werd langsam alt. Du warst einfach schneller als ich.

screwdriver

von Stefan B. (stefan) Benutzerseite


Lesenswert?

@ screwdriver

Dafür warst du sorgfältiger, weil du die Versionsnummer hast und den 
Hilfetext.

@ Fhutdhb Ufzjjuz

Giftige Sache, da könnte sogar mir Bascom Spaß machen! Mit 
Totenkopfbildchen und Warnung "Take care with the OVERLAY option. Use it 
only when you understand it." im Handbuch :-)

von Weingut P. (weinbauer)


Lesenswert?

Stefan B. schrieb:
> @ Fhutdhb Ufzjjuz
>
> Giftige Sache, da könnte sogar mir Bascom Spaß machen! Mit
> Totenkopfbildchen und Warnung "Take care with the OVERLAY option. Use it
> only when you understand it." im Handbuch :-)

hä ????  :o)

Das ist die richtige Verwendung von Overlay ... zumindest mach ich's
nicht selten so ;o)

Manche Sachen sind in Bascom echt easy zu proggen ...

von screwdriver (Gast)


Lesenswert?

Ich selbst habe die REPLACECHARS Funktion noch nicht benutzt und hätte 
sie - wenn ich nicht ab und zu mal die "history.txt" im Bascom 
Verzeichnis durchlesen würde - glatt übersehen.

REPLACECHARS ist übrigens sauschnell. Im Vergleich zur von Weinbauer 
vorgestellten Selfmade-Lösung ergibt sich:
1
dim demostring as string * 20
2
dim string_item (20) as byte at demostring overlay
3
Dim X As Byte
4
5
demostring = "hallo, du"
6
for x=1 to 20
7
  if string_item(x) = "," then
8
    string_item(x) = "."
9
  endif
10
next
11
Print Demostring
12
13
demostring = "hallo, du"
14
Replacechars Demostring , "," , "."
15
Print Demostring
16
17
End

Weinbauer: 558 Zyklen
REPLACECHARS: 83 Zyklen

@Weinbauer: Gäbe es REPLACECHARS nicht, hätte ich es genau so gemacht.

screwdriver

von Schmit Andreas (Gast)


Lesenswert?

dim string_item (20) as byte at demostring overlay

diese zeile versteh ich nicht

von MWS (Gast)


Lesenswert?

Schmit Andreas schrieb:
> dim string_item (20) as byte at demostring overlay

Das legt ein Byte-Array genau über den Speicherbereich des Strings.
Damit lassen sich die einzelnen Zeichen des Strings als Byte ansprechen.

von Jens S. (jens_s56)


Lesenswert?

Vorschlag:
1
Dim Text As String * 16
2
Dim Text2 As String * 1 
3
4
do
5
...
6
Text = Lookupstr(_month , Monate) : Gosub Rpltxt : lcd Text  
7
...
8
wend
9
10
 ' bei der Variable >Text< werden die Sonderzeichen getauscht:
11
Rpltxt:                                                
12
 Text2 = Chr(225) : Replacechars Text , "ä" , Text2
13
 Text2 = Chr(239) : Replacechars Text , "ö" , Text2
14
 Text2 = Chr(245) : Replacechars Text , "ü" , Text2
15
 Text2 = Chr(226) : Replacechars Text , "ß" , Text2
16
Return

Die Chr(#) gemäß Zeichentabelle anpassen

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Meinst Du, daß das Thema nach nur vier Jahren noch aktuell ist?

von Wattt??? (Gast)


Lesenswert?

Ja, alle vier Jahre ist WM und wir gewinnen !!!!

von hf (Gast)


Lesenswert?

Wattt??? schrieb:
> und wir gewinnen !!!!

Was hast DU denn damit zu tun? Hast du mitgespielt?
Die Millionäre haben gewonnen. Du hast bezahlt. So einfach ist das.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.