Zitat Zitat von luvat
Das mit der 0 kann ich dir sogar erklären Das hat damit zu tun, dass ein String nichts anders als ein char array ist. und diese fangen mit 0 an zu zählen.
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 Zitat von Bammel
das mit den *10 und *4 bestimtm die stringlänge. *10 sind 9 zeichen in dem string.
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.

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.


Zitat Zitat von luvat
Code:
Sub Dimmen(byval port1in As String, Byval pin1in As String, byval port2in As String, Byval pin2in As String)
For X = 0 To 500
   For Y = 1 To 500
      If X > Y Then
         port1in.pin1in = Onoff1
         port2in.pin2in = Onoff2
      Else
         port1in.pin1in = Not Onoff1
         port2in.pin2in = Not Onoff2
      End If
   Next
Next
port1in.pin1in = Onoff1
port2in.pin2in = Onoff2
Waitms 1000
end sub
Falls ja, wäre das ja die Lösung. ... muss ich dann heute abend ma testen :>
Auch das wird so nicht funktionieren, da du weder einen Port noch einen Portpin übergeben kannst. Schon gar nicht als String.

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.