Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
chong
Anmeldungsdatum: 01.03.2006 Beiträge: 2
|
Verfasst am: 01.03.2006, 15:52 Titel: ASCII-Codes aus String-Array auslesen |
|
|
Ich will ein Programm schreiben, bei dem man ein Wort eingibt und der Computer gibt es in ASCII-Code und Binär geschrieben wieder aus.
Damit will ich ein paar Kindern, die ich zurzeit betreue das binäre System näherbringen.
Ich hab schon ein Prog von Thomas Antoni, das bei einem Tastendruck denn ASCII-Code zurückgibt umgeschrieben, das jetzt auch der Binärwert angezeigt wird, aber ich kriegs nicht hin aus einem String die einzelnen Buchstaben nacheinander auszulesen und umzuwandeln.
Hab schon knapp 16 Jahre nicht mehr mit Basic gearbeitet.
HELP PLZ
Kann mir einer sagen was daran nicht stimmt
mid$(name$,i,1)=b$
n%=ASC(b$) FEHLER Unzulässiger Funktionsaufruf
Zuletzt bearbeitet von chong am 01.03.2006, 16:30, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 01.03.2006, 15:57 Titel: |
|
|
Wenn du den ASCII-Wert hast, kannst du mit AND jedes einzelne Bit abscannen.
Wenn das Bit 1 ist, dann schreibt das Programm eine 1, wenn das Bit 0 ist, logischwerweise eine 0 .
Code: |
ASCIIWert = 65
FOR i = 0 TO 7 STEP 1
IF ASCIIWert AND 2 ^ i THEN
PRINT "1";
ELSE
PRINT "0";
END IF
NEXT i
PRINT
|
Hab's nicht getestet, sollte aber klappen.
/edit: Hups, dein Problem ist ja ein ganz anderes...
Ein Zeichen kannst du mit MID$(NameDesStrings$, Position, 1) auslesen.
Somit sähe das obige Programm wiefolgt aus:
Code: |
Test$ = "Ich trinke gerne Apfelsaft."
FOR count = 1 TO LEN(Text$) STEP 1
ASCIIWert = ASC(MID$(Text$, count, 1))
PRINT MID$(Text$, count, 1); " wird zu: ";
FOR i = 0 TO 7 STEP 1
IF ASCIIWert AND 2 ^ i THEN
PRINT "1";
ELSE
PRINT "0";
END IF
NEXT i
PRINT
NEXT count
|
Ebenfalls nicht getestet
jb |
|
Nach oben |
|
 |
chong
Anmeldungsdatum: 01.03.2006 Beiträge: 2
|
Verfasst am: 01.03.2006, 16:39 Titel: |
|
|
THX für die schnelle Antwort
leider nist mein prob nicht das ascii nach binär wandeln, das hab ich schon zwar etwas komplizierter aber es funkt
aber ich krieg die ascii-werte nicht
Hier der komplette Code
cls
input "bitte gib deinen namen ein", name$
print "so sieht dein name für den computer aus:"
z= len(name$)
for i= 1 to z
mid$(name$,i,1)=b$
n%=asc(b$)
sorry fehler gefunden
man sollte schon drauf achten was man wo zuweist
bei der letzten zeile gib der interpreter "ungültiger Funktionsaufruf" aus
Zuletzt bearbeitet von chong am 01.03.2006, 17:21, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
otti

Anmeldungsdatum: 28.02.2005 Beiträge: 112 Wohnort: Wildberg
|
Verfasst am: 01.03.2006, 17:08 Titel: |
|
|
kann es sein, dass du dass ascii zeichen als erstes in eine string variable schreiben musst?
also so
Code: |
n$=asc(b$)
zahl%=val(n$)
|
(nicht getestet!)
grüße otti _________________ Gute Musik
 |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 01.03.2006, 21:03 Titel: |
|
|
nein, definitiv nicht.
Ungültiger funktionsaufruf bei dem befehl kann nur heißen, dass b$="" ist. Folglich hast du vermutlich ein zeichen mehr auslesen wollen als da ist, dann gibt mid$ dir nen leeren string.
Code: | for n=1 to len(stringvar$)
print asc(mid$(stringvar$,n,1))
next n |
sollte gehen. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 01.03.2006, 22:03 Titel: |
|
|
Er hat's doch schon gesagt: Die markierte Zeile muss einfach umgedreht werden
jb |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 02.03.2006, 00:35 Titel: |
|
|
was aber den danach noch existenten ungültigen funktionsaufruf nicht beseitigt hat.. der sollte bei meinem nicht mehr da sein.. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
pinkpanther

Anmeldungsdatum: 28.05.2005 Beiträge: 79 Wohnort: Wien
|
Verfasst am: 02.03.2006, 02:43 Titel: |
|
|
Version chong:
Code: | z% = len(name$)
for i% = 1 to z%
b$ = mid$(name$,i%,1) '(korrigiert)
n% =asc(b$)
print n%
next |
Version MisterD:
Code: | for n% = 1 to len(stringvar$)
print asc(mid$(stringvar$, n%, 1))
next n% |
@MisterD:
Und worin unterscheiden sich die beiden Varianten?
Ist schon spät, vielleicht blick ich nicht mehr durch... _________________ lG
pinkpanther  |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 02.03.2006, 14:27 Titel: |
|
|
unterschied ist, das meine weniger variablen braucht und somit weniger speicher und schneller ist (wenn mans interpretiert, n guter compiler reduziert die längere version auf meine variante wenn die variablen sonst nirgends benutzt werden..) _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
pinkpanther

Anmeldungsdatum: 28.05.2005 Beiträge: 79 Wohnort: Wien
|
Verfasst am: 02.03.2006, 23:49 Titel: |
|
|
Wer bitte lässt seine fertig entwickelten Programme noch durch einen Interpreter rattern? Und während der Entwicklung eines Programms sollte Geschwindigkeit noch nicht das entscheidende Thema sein...
Außerdem: Wenn ich nun b$, n% und z% mehrfach im aktuellen Gültigkeitsbereich einsetze, um Zwischenergebnisse komplexer Ausdrücke abzulegen, spare ich auch Speicherplatz und habe gleichzeitig den Vorteil, dass meine Überlegungen stets klar und meine Berechnungen nachvollziehbar bleiben.
Und was die Geschwindigkeit betrifft:
Meinst du nicht, dass der Compiler komplexe Ausdrücke wie
Code: | asc(mid$(stringvar$, n%, 1)) |
auf mehrere Schritte verteilt ermittelt, wobei er (manche) Zwischenergebnisse im Speicher ablegen muss? Worin liegt dann der enorme Geschwindigkeitsvorteil? _________________ lG
pinkpanther  |
|
Nach oben |
|
 |
|