Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

variablen aus string "herausfinden"?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Constantin



Anmeldungsdatum: 31.08.2007
Beiträge: 36

BeitragVerfasst am: 09.02.2008, 16:53    Titel: variablen aus string "herausfinden"? Antworten mit Zitat

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

mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.02.2008, 16:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Constantin



Anmeldungsdatum: 31.08.2007
Beiträge: 36

BeitragVerfasst am: 09.02.2008, 17:17    Titel: Antworten mit Zitat

und gibts in fb eine möglichkeit, sowas zu machen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.02.2008, 18:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 338

BeitragVerfasst am: 09.02.2008, 18:58    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.02.2008, 21:30    Titel: Antworten mit Zitat

so ungefähr hatte ich das auch bei meinem skript-interpreter gelöst, aber wie auch schon gesagt, besonders schön ist das nicht... zwinkern
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Lutz Ifer
Grillmeister


Anmeldungsdatum: 23.09.2005
Beiträge: 555

BeitragVerfasst am: 09.02.2008, 22:09    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.02.2008, 22:39    Titel: Antworten mit Zitat

Pointer auf Funktionen in QB, ganz klar durchgeknallt
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 09.02.2008, 23:15    Titel: Antworten mit Zitat

peek/poke/varseg xD?
ginge das happy?
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 09.02.2008, 23:44    Titel: Antworten mit Zitat

jo klar, damit machst du eh nur mehr kaputt als du nutzen machst... Zunge rausstrecken 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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 10.02.2008, 09:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Spezielle Fragen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz