Klar kann man Strings als Char Array betrachten. Aber: Die Zählweise in Bascom fängt - leider - immer mit 1 an, wenn du eine der String-Funktionen benutzt. Ein Byte-Wert 0 (also nicht der ASCII Wert der Zahl 0) zeigt das Ende des Strings an. Dies ist nötig, da ein String nicht unbedingt die volle reservierte Länge haben muss. Daher kann der Byte Wert 0 auch nicht in einem String enthalten sein.Zitat von luvat
Das stimmt so nicht. Wenn du *10 angibst, hast du 10 Zeichen im String zur Verfügung. Bascom reserviert dann automatisch ein elftes Byte um Platz für das Ende Zeichen zu haben, falls der String 10 Zeichen lang wird.Zitat von Bammel
In der Deklaration und der Definition der Sub gibst man übrigens keine Länge der Strings an. Declare Sub Anmachen(byval Color As String, Byval Status As String) reicht also.
Auch das wird so nicht funktionieren, da du weder einen Port noch einen Portpin übergeben kannst. Schon gar nicht als String.Zitat von luvat
Aber der Vorschlag von Jaecko funktioniert auch in Bascom.
Du kannst die Adresse des Ports übergeben und musst dann in der Sub die Out-Funktion benutzen, um in das Port-register zu schreiben. Allerdings kannst du da nicht so schön ein einzelnes Bit ansprechen, zumindest wüsste ich nicht wie. Und damit wäre der Vorteil wieder hin, weil es dann ziemlich kompliziert wird. Wenn du wirklich nur 2 LEDs schalten willst, ist es mit ein paar IFs oder einem Select bestimmt einfacher.
Lesezeichen