Hi... Ist möglich das label "Buchstabe" für lookup als string zu übergeben? Irgendwie klappt es nicht.. Bsp. Dim Buchstabe as string * 1 Dim Hexwert as String * 4 Dim Feld as Byte Buchstabe = "S" Feld = 1 Hexwert = lookup(Feld , Buchstabe) End S: Data &H3C , &H00 T: Data &H60 , &H18
Abgesehen davon, dass Du Dich bemühen könntest Deine Frage nicht einfach so dahin zu rotzen, ist die Antwort nein! Das Label wird im Kompilierungsvorgang substituiert. Du willst es zur Laufzeit. Grüsse, René PS: es gibt noch andere Sprachen wie Bascom.
ja sorry für's "dahinrotzen"...hab 'ne Erkältung.. nene Spaß beiseite.. Es ist also nicht möglich genau so wie beim "Feldzeiger" auch einen String an den Tabellennamen zu übergeben? Wie kann ich denn dann je nachdem...eine bestimmte Tabelle anspringen...? P.S. Es gibt noch Land hinter dem Meer!
Was willst Du erreichen? (Ansonsten: Hinweise auf die verwendete Programmiersprache sind nicht schlecht, auch wenn man hier recht leicht erkennt, daß das wohl irgendein Basic-Dialekt ist).
Ich kann kein Bascom, aber Basic kenne ich (ist schon ein paar Jahrzehnte hin). Ich würde sagen, dass Du das zur Laufzeit nur mit einem zwei dimensionalen Array hinbekommst. Grüsse, René PS: mein Hinweis auf die Sprache, hatte den Ursprung, dass man im Titel oder Text die Programmiersprache erwähnen sollte.
select case buchstabe case 'S': hexwert=lookup(feld,s) case 'T': hexwert=lookup(feld,t) end select Und hexwert muß vom Datentyp her den Datenelementen entsprechen.
BASCOM ok...also es ist für LED-Dot-Matrix-Module Es gibt ein Wort oder einen Satz in einem String. Von diem Inhalt wird jeweils von links nach rechts je ein Buchstabe "abgeschnitten"... Text = "Heute ist Montag" For Position_buchstabe = 1 To Len(text) Buchstabe = Mid(text , Position_buchstabe , 1) ... ... Jetzt enthält "Buchstabe" den Buchstaben B Nun wollte ich aus der Tabelle am Ende des Programms mir die 8 HEX-Werte holen und in ein Array schreiben lassen... For Zeigerposition = 0 To 7 '8 Durchläufe weil 8 Hexwerte pro Buchstabe Hex_array(i) = Lookup(zeigerposition ,buchstabe) Dann wenn das Array "voll" mit 8 Werten ist, wird durch eine For/Next-Scheife die HEX-Werte an den MAX7219 (64-LED-Driver) gesendet... So sieht es aus.... nun wenn ich aber "Buchstabe" nicht als String/Variable Definieren kann...muss ich mir was anderes überlegen
Sungod schrieb: > So sieht es aus.... > nun wenn ich aber "Buchstabe" nicht als String/Variable Definieren > kann... Warum solltest Du das nicht können?
Und noch ein Hinweis. Du brauchst nicht für jeden Buchstaben einen eigene Lookup Tabelle. Ein 'Buchstabe' ist im Computer auch nichts anderes als eine Zahl. Dazu gibt es die ASCII Tabelle, die einem sagt, welche Codezahl für welchen Buchstaben steht. D.h. dein Buchstabe ist im Grunde bereits eine Zahl. Hast du aber diese Zahl, dann ist es ein leichtes auszurechnen, wo in einer einzigen großen Lookup die 8 Bytes für diesen Buchstaben beginnen, denn du weißt ja, dass für jeden Buchstaben genau 8 Bytes notwendig sind. Also beginnt der erste Buchstabe (mit dem Code 0) in der Lookup Tabelle an der Position 0, der Buchstabe mit dem Code 1 beginnt an der Position 8, der mit dem Code 2 an der Position 16 und so weiter. Im übrigen willst du auch nicht die MID Funktion benutzen, um dir ein Zeichen nach dem anderen aus dem String rauszuholen. Denn von MID kriegst du ja keine Zeichen, sondern du kriegst wieder einen String. Genau das willst du aber nicht, denn so schaffst du nicht den Übergang von Strings zu einzelnen Zeichen. Du kannst aber in BASCOM in einem String genau wie in einem Array ganz einfach auf die einzelnen Zeichen zugreifen
1 | DIM MyEinzelByte AS BYTE |
2 | DIM MyStrlen AS BYTE |
3 | DIM MyIndex AS BYTE |
4 | |
5 | MyString = "Hello, World" |
6 | MyStrlen = LEN(MyString) |
7 | FOR MyIndex = 1 TO MyStrlen |
8 | MyEinzelByte = MyArray(MyIndex) |
9 | NEXT |
In "MyEinzelByte" liegt dann genau 1 Zeichen aus dem String vor. Und da es sich bei MyEinzelByte bereits um den Datentyp Byte handelt, kannst du dann auch ganz einfach damit rumrechnen. Zum Beispiel, indem du zunächste den ASCII Code für ein Leerzeichen abziehst, denn ein Leerzeichen ist im ASCII Code das erste Zeichen mit einer sichtbaren Repräsentierung. Die davor liegenden Zeichen haben keine sichtbare Darstellung, würden also in der Lookup Tabelle nur Platz verbrauchen. Und dann die so erhaltene Zahl mit 8 multiplizieren um sie als Index in die große Lookup Tabelle zu benutzen, aus der du dann die 8 Bytes rauskriegst, die in deinen Display Speicher kopiert werden müssen. http://www.rn-wissen.de/index.php/Bascom_Strings_und_Bytes
Hallo Karl-Heinz, es wäre aber noch wichtig zu erwähnen, was MyArray ist, denn darauf wird er nicht selber kommen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.