Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Constantin
Anmeldungsdatum: 31.08.2007 Beiträge: 36
|
Verfasst am: 09.02.2008, 17:53 Titel: variablen aus string "herausfinden"? |
|
|
Hi,
Code: |
dim as integer a, b, c
dim as integer auswahl
? "Welche Variable moechten Sie um 1 erhöhen?";
input auswahl
select case auswahl
case "a"
a +=1
case "b"
b +=1
case "c"
c +=1
end select
sleep
end
|
Was ist, wenn ich jetzt viel mehr variablen in meinem programm habe, als (a, b, c,..), und mir das select case zu blöd wird, wie kann ich fb dann trotzdem klar machen, dass diese variable gemeint ist?
ich hoffe, ihr versteht das problem und kennt eine antwort
danke
|
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.02.2008, 17:56 Titel: |
|
|
sorry, das dürfte so in QBasic nicht machbar sein, es sei dem, du speichert alle variablen in einem Array und numerierst sie eben durch (was aber kaum noch lesbar ist). Für so etwas bieten moderne Programmiersprachen den Befehl EVal, mit dem man Zeichenketten wie quelltext parsen kann. Gibt's in QB aber nicht. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Constantin
Anmeldungsdatum: 31.08.2007 Beiträge: 36
|
Verfasst am: 09.02.2008, 18:17 Titel: |
|
|
und gibts in fb eine möglichkeit, sowas zu machen? |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.02.2008, 19:41 Titel: |
|
|
In VB kann man das über VBScript lösen, AFAIK...
Aber da das extern ist, kann du damit nicht auf die Variablen des Programmes zugreifen. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 338
|
Verfasst am: 09.02.2008, 19:58 Titel: |
|
|
Wie schon gesagt: Dafür gibt es Arrays.
Code: | CONST maxvars = 10
DIM vars(maxvars)
DO
CLS
FOR i = 1 TO maxvars
PRINT "Var"; i; " = "; vars(i)
NEXT
PRINT
INPUT "Welche Variable m”chten Sie um 1 erh”hen? (0 beendet) ", auswahl
vars(auswahl) = vars(auswahl) + 1
LOOP UNTIL auswahl = 0
|
_________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.02.2008, 22:30 Titel: |
|
|
so ungefähr hatte ich das auch bei meinem skript-interpreter gelöst, aber wie auch schon gesagt, besonders schön ist das nicht... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Lutz Ifer Grillmeister
Anmeldungsdatum: 23.09.2005 Beiträge: 555
|
Verfasst am: 09.02.2008, 23:09 Titel: |
|
|
Ins Array kann man auch Pointer auf die Variablen packen... Besonders edel, wenn man nicht Pointer auf Variablen, sondern Pointer auf Funktionen benutzt... _________________ Wahnsinn ist nur die Antwort einer gesunden Psyche auf eine kranke Gesellschaft. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 09.02.2008, 23:39 Titel: |
|
|
Pointer auf Funktionen in QB, ganz klar _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 10.02.2008, 00:15 Titel: |
|
|
peek/poke/varseg xD?
ginge das ? _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 10.02.2008, 00:44 Titel: |
|
|
jo klar, damit machst du eh nur mehr kaputt als du nutzen machst... Du weißt schon, dass Variablen nicht immer am selben Ort im Speicher sind? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
A.K.
Anmeldungsdatum: 02.05.2005 Beiträge: 467 Wohnort: HH
|
Verfasst am: 10.02.2008, 10:23 Titel: |
|
|
Hi,
also wenn es nur um Variablen von a-z geht, kann man auch ein wenig tricksen. Obwohl das eigentlich unsinnig ist.
Code: |
dim auswahl as STRING
'Array anlegen. Jeder Index soll für einen Buchstaben stehen.
'0 = "a", 1= "b"....
dim vars(0 to 25) as INTEGER (26 Indizes = 26 Buchstaben = a-z)
? "Welche Variable moechten Sie um 1 erhöhen?";
input auswahl
vars(ASC(auswahl)-97) +=1
sleep
end
|
Hierbei machen wir es uns zu nutze das alle Buchstaben von a-z auch in der ASCII-Tabelle hintereinander folgen. Das kleine a hat den ASCII-Wert 97 und das kleine z den ASCII-Wert 122. Jetzt brauchen wir diese Werte nur noch an unser Array anpassen, welches ja 0-basierend ist. Das heißt das wir von jedem Buchstaben der eingegeben wird einfach den ASCII-Wert per ASC herausfinden und von diesem einfach 97 abziehen.
Das kleine a bekommt so den Array-Index 0 und das kleine z den Array-Index 25. Alle anderen Buchstaben liegen dazwischen.
Falls in der Eingabe ein Zeichen eingegeben wird welches kein Kleinbuchstabe ist wird automatisch eine Fehlermeldung ausgegeben: "Index ausserhalb des Bereiches"
Das ist auch logisch, denn bei anderen Zeichen ausser kleinbuchstaben kommen Indizes <0 oder >25 heraus.
Ansonsten als Anmerkung zu deinem jetzigem Programm:
CASE "a" bezieht sich auf eine STRING-Variable. Beim Input benutzt du aber eine Integer-Variable. Das ist nicht kompatibel.
MFG A.K. _________________
http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU* |
|
Nach oben |
|
|
|