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:

Variable sichern

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



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 24.07.2006, 17:51    Titel: Variable sichern Antworten mit Zitat

ich möchte eine Variable so festlegen, dass man sie ab einer bestimmten stelle im programm nicht mehr ändern kann.

gibt es da einen befehl oder so?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 24.07.2006, 18:21    Titel: Antworten mit Zitat

Ob es mitten im Programm geht weiss ich nicht.
Allgemein geht Const.
QBasic 1.1 Online Hilfe hat Folgendes geschrieben:
Code:
Vereinbart symbolische Konstanten.

CONST Konstantenname = Ausdruck [,Konstantenname = Ausdruck]...

    ■ Konstantenname  Der Name der Konstante. Der Name kann aus bis zu 40
                      Zeichen bestehen und muß mit einem Buchstaben beginnen.
                      Zulässige Zeichen sind A-Z, 0-9, und der Punkt (.).
    ■ Ausdruck        Ein Ausdruck, der der Konstanten zugewiesen wird.
                      Der Ausdruck kann aus Literalen (z.B. 1.0), anderen
                      Konstanten, beliebigen arithmetischen oder logischen
                      Operatoren (außer Exponentiation (^)) oder nur aus
                      einer Zeichenfolge von Literalen bestehen.

Beispiel:
    CONST PI = 3.141593
    INPUT "Radius des Kreises: "; r
    PRINT "Fläche = "; PI * r ^ 2


Kannst du bitte konkretere Angeben machen?
Was willst du genau?
Wie sieht der Code aus?
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dark_King



Anmeldungsdatum: 24.07.2006
Beiträge: 109
Wohnort: Neustetten - BW

BeitragVerfasst am: 24.07.2006, 18:47    Titel: Antworten mit Zitat

bin dabei ein programm zu schreiben um sudoku zu lösen

Code:

dim v(9,9) as integer
start:
INPUT "weiviele zahlen sind gegeben?"; zahlen
for zahlen = 1 to zahlen
input "welche position hat die zahl? (schreibe x,y)"; x,y
teil2:
INPUT "welchen wert hat die zahl?"; v(x, y)
if v(x, y) < 1 op v(x,y) > 9 then goto teil 2
'const v(x,y) = v(x,y)
next zahlen
cls

for y = 1 to 9
for x = 1 to 9
locate x, y: print using "#"; v(x,y)
next x
next y


des const hilft mir eigentlich schon weiter nur die klammern werden leider net anerkannt. gibt es nicht noch einen andern weg eine konstante festzulegen oder die klammern doch mit einzubaun?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 24.07.2006, 19:06    Titel: Antworten mit Zitat

Hi,
so würde ich das in FreeBASIC lösen(ungefähr..).
Code:
'Ä=Ž , Ö=™ , Ü=š ; ä=„ , ö=”, ü=� , ß=á ,§=õ , ©=¸
Option Explicit
Function SemiConst(New As String="", Admin As String="") As String
  Static Fixed, Value As String
  If Admin="DerDarfDas" Then 'AdminRechte vorhanden
    Value=New 'Wert übernehmen
    Fixed=1=1 '..und fixieren
  Else
    If Not Fixed Then 'noch nicht aufgerufen, dann Wert festlegen
      Value=New 'Value="" ist kein Kriterium, kann ja Absicht sein
      Fixed=1=1 'Flag setzen..
    End If
  End If
  Function=Value 'Wert zurückgeben
End Function

?"SemiConst.Bas ¸2006 by ytwinky, MD"
?"SemiConst=<";SemiConst("Loose");">"
?"SemiConst=<";SemiConst("Fixed");">"
?"SemiConst=<";SemiConst("Changed", "DerDarfDas");">"
?"Getestet mit FB0.16bSE mit FBIde 0.47testing"
Sleep

Geht vllt(mit kleinen Änderungen) auch unter QB 4.5(Function und Static gibts da auch)
As String muß ggfs durch $ oder so ersetzt werden, das Prinzip sollte aber klar werden..
btw:
Wenn Value nicht mehr geändert werden soll, dann einfach die Admin-Sache rauswerfen..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 25.07.2006, 08:57    Titel: Antworten mit Zitat

ytwinky, du bringst mich auf eine Gute Idee.
Ich melde micht, wenn ich die Idee Codiert habe.

Edit:
So:
Code:
DECLARE SUB USet (vari1 AS ANY, vari2!)
DECLARE FUNCTION UGet! (vari1 AS ANY)
DECLARE SUB ULock (vari AS ANY)
DECLARE SUB UUnLock (vari AS ANY)

TYPE lockable
    value AS INTEGER
    status AS INTEGER
END TYPE

DIM a AS lockable

PRINT "Wir schreiben 25 in die nicht gesperrte Variabel a"
USet a, 25

PRINT "Wir lesen die Variabel a"
PRINT UGet(a)
PRINT

PRINT "Wir sperren die Variabel a"
ULock a

PRINT "Wir schreiben 100 in die gesperrte Variabel a"
USet a, 100

PRINT "Wir lesen die Variabel a"
PRINT UGet(a)
PRINT

PRINT "Wir sperren die Variabel"
UUnLock a


PRINT "Wir schreiben 100 in die entperrte Variabel a"
USet a, 100

PRINT "Wir lesen die Variabel a"
PRINT UGet(a)


SLEEP

FUNCTION UGet (vari1 AS lockable)
  UGet = vari1.value
END FUNCTION

SUB ULock (vari AS lockable)
  vari.status = -1
END SUB

SUB USet (vari1 AS lockable, vari2)
  IF NOT vari1.status THEN vari1.value = vari2
END SUB

SUB UUnLock (vari AS lockable)
  vari.status = 0
END SUB


Edit:
FB nach QB Code
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight


Zuletzt bearbeitet von Michael Frey am 25.07.2006, 12:23, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 25.07.2006, 10:36    Titel: Antworten mit Zitat

Und für Sparfüchse wie mich ist hier die Billiglösung: grinsen
Werte die, die nicht verändert werden dürfen, mach einfach negativ.
Willst du einen Wert verändert, mach vorher diese Abfrage:
Code:
 IF v(x, y) >= 0 THEN v(x, y) = neuerWert


Willst du den Wert ausgeben, benutze immer ABS, das macht aus negativen positive Zahlen und positive Zahlen bleiben positiv (ist halt die Betragsfunktion):
Code:
PRINT ABS(v(x, y))


Diese Variante geht halt bei Sudoku noch gut, weil du ja eigentlich nur positive Zahlen in deinem Feld hast. Der Bereich ist sogar nur auf Zahlen von 1-9 begrenzt. Da könnte man sogar noch viel mehr rumkodieren. Aber das ist auch irgendwie billig und unschön.. .. in meinen Augen.
_________________
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
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 25.07.2006, 11:16    Titel: Antworten mit Zitat

Es ging mir nicht um eine Billiglösung, sondern ums Prinzip..
..ich denke, Michael Frey hat das verstanden.
Ich habe als Typ String gewählt, weil er für diese Zwecke der Vielseitigste ist.
@Michael Frey:
Ich habe extra geschrieben, daß ich das ungefähr so lösen würde..
..QB4.5/PDS habe ich zwar installiert, aber nur, um Sachen nachzusehen, nicht um damit zu arbeiten..
Deshalb weiß ich auch nicht so genau über die Möglichkeiten von QB Bescheid.
Zusammenfassung:Aha, prinzipiell ist es möglich, eine Variable im Programm konstant zu machen..
(..und auch wieder variabel, und.. und..)
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 25.07.2006, 12:16    Titel: Antworten mit Zitat

Opps, das ist ja eine QB Frage mit den Augen rollen .
Ich ändere mal den Code.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 25.07.2006, 12:40    Titel: Antworten mit Zitat

ytwinky hat Folgendes geschrieben:
Es ging mir nicht um eine Billiglösung, sondern ums Prinzip..

Ja und mir gings um die Billiglösung, funktioniert einwandfrei bei Sudoku lächeln

Aber ihr habt schon recht. Das von Michael Frey gefällt mir auch am besten.
_________________
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
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. 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