Brauche Hilfe bei der Stringverarbeitung in Basic


Brauche Hilfe bei der Stringverarbeitung in Basic

von Bernd » Sa 8. Jun 2013, 00:56
Folgendes Problem.....
Ich möchte den allerersten Buchstaben aus einem String abfragen.
Wie macht man dies noch mal?

A$="XABER HALLO" -> Jetzt hätte ich gerne das "X" im String getestet.

Viele Grüße,
Bernd

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von Mathy » Sa 8. Jun 2013, 01:34
Hallo Bernd

Ist schon eine Weile her, aber würde IF A$(1,1)="X" ... nicht funktionieren?

Tschüß

Mathy

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von dl7ukk » Sa 8. Jun 2013, 05:47
Hi,

zB. so

10 DIM A$(20), B$(1)
20 A$="HALLO"
30 B$=A$(1,1): A=ASC(B$)
40 ?A, B$
50 B$=A$(2,2): A=ASC(B$)
60 ?A, B$
80 END :D

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von Bernd » Sa 8. Jun 2013, 11:18
Hallo Mathy und Andreas,
Danke für eure Hilfe, so hatte ich es auch in Erinnerung, leider klappt die Zuordnung nicht mit jedem Basic Interpreter. Auf dem Atari funzt es perfekt, bei Qbasic64 (Freeware) gibt es nur eine Fehlermeldung. Ich habe jetzt eine Lösung gefunden, dafür gibt es ein Left$(String$, Position).

Wer Interesse hat, das Qbasic64 bekommt man hier für Windows, Linux und Apple Rechner.

Viele Grüße,
Bernd

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von skriegel » Sa 8. Jun 2013, 11:33
Wir sind hier immer noch ein Atari-Forum und Du hattest nicht erwähnt, dass Du ein anderes Basic nutzen willst.
:roll:

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von dl7ukk » Sa 8. Jun 2013, 14:18
Hallo
Bernd hat geschrieben:Hallo Mathy und Andreas,
Danke für eure Hilfe, so hatte ich es auch in Erinnerung, leider klappt die Zuordnung nicht mit jedem Basic Interpreter. Auf dem Atari funzt es perfekt, bei Qbasic64 (Freeware) gibt es nur eine Fehlermeldung. Ich habe jetzt eine Lösung gefunden, dafür gibt es ein Left$(String$, Position).
……
Viele Grüße,
Bernd


Wobei man ruhig anmerken darf, dass ATARI mit seinem (internen) BASIC nicht gerade der große Wurf gelungen ist. Die Stringbehandlung ist schon fast eine Katastrophe. Nicht nur das Fehlen von String-Arrays
DIM A$(10,10)
macht das Programmieren komplizierter. Nicht ohne Grund gibt es noch andere BASIC-Versionen auf dem A8.

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von Bernd » Sa 8. Jun 2013, 15:37
skriegel hat geschrieben:Wir sind hier immer noch ein Atari-Forum und Du hattest nicht erwähnt, dass Du ein anderes Basic nutzen willst.

Sonst wäre unter Betreff auch "Atari Basic" erschienen.
Das sich die Basic Versionen doch so stark unterscheiden, war mir nicht bewusst.

dl7ukk hat geschrieben:..Nicht nur das Fehlen von String-Arrays .... DIM A$(10,10) ....macht das Programmieren komplizierter.


Hier ist der Hund bei mir begraben. Ich habe immer gedacht, beim Aufruf von A$(1,3) hätte ich ein String Array vor mir, deshalb war ich etwas verwirrt.

Bernd

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von Count » Sa 8. Jun 2013, 21:04
Bernd hat geschrieben:
skriegel hat geschrieben:Wir sind hier immer noch ein Atari-Forum und Du hattest nicht erwähnt, dass Du ein anderes Basic nutzen willst.

Sonst wäre unter Betreff auch "Atari Basic" erschienen.


Nee, Sportsfreund. :mrgreen:
Bei allgemeinen Basic-Fragen oder zu anderen Varianten müsste das im Betreff oder Text erwähnt werden.
"Die" Programmiersprache "Basic" gibt es eigentlich nur als unverbindliche Bezeichnung. Ich kenne keine andere "Sprache", die derart viele (mehr oder vielmehr unkompatible) Varianten hat.

In C wäre das so schön einfach:

Code: Alles auswählen
char a[12] = "XABER HALLO\0";
switch (a[0]) {
  case 'X': puts("Es ist ein X!"); break;
  default: puts("Es ist irgendetwas, ABER BESTIMMT KEIN X!"); break;
}


Aber das ATARI Basic fällt, was Stringverarbeitung angeht, verglichen mit anderen "Dialekten" wirklich sehr aus dem Rahmen. Der Grund ist, dass Atari für den 400/800 in relativ kurzer Zeit ein Basic brauchte, das in ein 8 K-Modul passt. Das ursprünglich angedachte Microsoft-Basic (das die bekannten Funktionen LEFT$, MID$, RIGHT$ mitgebracht hätte), war in so kurzer Zeit (oder überhaupt) nicht auf Modulgröße zu pressen. Daher bekamen die Ataris ein an allen Ecken und Enden zusammengspartes Basic.

Beim C64 war es übrigens nicht anders. Da musste das Basic zwar nicht in ein 8 K-Modul passen, weil es gleich in den Rechner eingebaut wurde, es durfte aber ebenfalls eine bestimmte Größe nicht überschreiten. Das C64-Basic ist etwa 9 K groß, dort wurde an anderer Stelle eingespart (Grafik- und Soundbefehle).

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von eda70 » Mo 10. Jun 2013, 11:31
Hier gibt es eine Liste, von einigen für den Atari verfügbaren Basic's incl. Befehlsübersicht.

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von atarixle » Di 11. Jun 2013, 19:27
So schlimm finde ich es nun auch wieder nicht. Alle String-Funktionen entsprechen der MID$-Funktion, was eigentlich ausreicht.

Das einzige, was wirklich fehlt, ist die Addition von Strings.

Code: Alles auswählen
10 DIM A$(20)
20 A$="Hallo, "
30 A$(LEN(A$)+1)="Helge!":REM A$="Hallo, "+"Helge!"
40 ? A$

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von slx » Di 11. Jun 2013, 22:28
Beim Abtippen von BASIC-Listings (zB aus den Ahl-Büchern) musste man aber schon immer nachdenken, und besonders wenn es String-Arrays gab auch ganz ordentlich "nachprogrammieren" :)

Re: Brauche Hilfe bei der Stringverarbeitung in Basic

von atarixle » Mi 12. Jun 2013, 20:27
Auch negative String-Stellen wären nicht schlecht:

Code: Alles auswählen
10 REM LSL: string a="Hallo#"; llOwnerSay(llGetSubString(a, 0, -1); /* Ergibt "Hallo" */
20 DIM A$(20)
30 A$="Hallo#"
40 ? A$(1,LEN(A$)-1):REM Ergibt ebenfalls "Hallo"