 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4687 Wohnort: ~/
|
Verfasst am: 20.01.2025, 23:00 Titel: |
|
|
Mit DEFINT definierst du noch keine Varable. Du legst lediglich fest, welchen Datentyp Variablen standardmäßig haben sollen, wenn ihnen kein Suffix beigegeben wird.
Code: | DEFINT A-C ' Variablen, die mit A, B oder C beginnen, sind jetzt standardmäßig INTEGER
kommazahl = 1.5 ' implizit definiert als SINGLE, da das der Standard ist
ganzzahl% = 5 ' implizit definiert als INTEGER, wegen des Suffix
a = 12345 ' implizit definiert als INTEGER wegen DEFINT (Anfangsbuchstabe A-C)
a$ = "Hallo" ' impliziert definiert als STRING wegen des Suffix (trotz DEFINT)
DIM z AS INTEGER ' explizit definiert als INTEGER |
Der Sinn der verschiedenen Möglichkeiten besteht meines Erachtens schlichtweg in der Wahlmöglichkeit für den Programmierer. Ich würde mich für eine der Methoden entscheiden, z. B.
- alle Variablen immer mit Suffix, oder
- DEFINT A-Z (oder ein alternativer Datentyp) und alle Nicht-Integerzahlen mit Suffix, oder
- alle Variablen explizit definieren
Verschiedene Formen zu mischen sorgt meiner Meinung nach nur für Verwirrung und schwer(er) verständlichen Code. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1276 Wohnort: Ruhrpott
|
Verfasst am: 21.01.2025, 12:01 Titel: |
|
|
Revilo hat Folgendes geschrieben: | Wenn es drei Möglichkeiten gibt, wird jede wohl auch ihren eigenen speziellen Sinn und Zweck haben. Sonst bräuchte man ja nur eine dieser drei. |
DEFtyp ist der ungarischen Notation nachempfunden, bei der ein bestimmter Buchstabe als Präfix einen bestimmten Datentyp repräsentiert. Also beispielsweise
DEFINT I für Integervariablen
DEFSTR S für Strings
DEFLNG L für LongInteger usw.
Die Typenfestlegung per Suffix ist eine BASIC-Eigenart. Der Vorteil ist, daß man -genau wie bei der ungarischen Notation- am Namen den Typ einer Variablen erkennen kann.
Bei der Deklaration mit DIM bist du nicht an irgendwelche Notationen gebunden, dafür musst du dir selber merken, welchen Typ die Variable hat. Außerdem ist DIM die einzige Möglichkeit, selbstdefinierte Datentypen zu deklarieren.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 21.01.2025, 22:47 Titel: |
|
|
Wenn wir hier schon an den QB-Grundlagen am Diskutieren sind (Nebenbei: Auch der Vorgänger GW-BASIC kannte dies alles bereits!): Default (Vorgabewert) sind einfach genaue Flieskommazahlen. Anders ausgedrückt: Wenn kein explizites DEFxxx zu Beginn erscheint, dann macht QB immer implizit ein
zu Beginn. Hat logischerweise die Konsequenz, dass ein Programm wegen den relativ langsamen Fliesskomma-Operationen entsprechend langsamer werden kann, wenn so unbeabsichtigt Fliesskommavariablem für Dinge verwendet werden, wo eigentlich Integer auch ausreicht. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1276 Wohnort: Ruhrpott
|
Verfasst am: 22.01.2025, 10:51 Titel: |
|
|
dreael hat Folgendes geschrieben: | ...wenn so unbeabsichtigt Fliesskommavariablem für Dinge verwendet werden, wo eigentlich Integer auch ausreicht. | Und man fragt sich eventuell auch, wo die Rechenfehler beim Addieren großer Zahlenmengen herkommen. Man hat beim Programmieren doch alles richtig gemacht...!?
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 178
|
Verfasst am: 04.02.2025, 20:00 Titel: |
|
|
Hallo Spionatom,
vielen Dank für deinen Link, auf dem ich dein Programm SUDOSOl2.BAS
kennenlernen durfte.
Ich habe es einerseits zum lernen und natürlich auch zum ausprobieren
ausgedruckt und dann von Papier Buchstabe für Buchstabe, Zeile für Zeile, Zeichen für Zeichen exakt so abgetippt.
In der Annahme, mir wäre dabei ein Tippfehler unterlaufen, habe ich mir diese Mühe dreimal gemacht, immer noch gewissenhafter als zuvor.
Leider völlig vergebens.
Ich bekomme immer die Fehlermeldung :
"END SUB oder END FUNCTION muss letzte Zeile sein."
Die Hilfefunktion ist "Fachchinesisch", das mir nicht weiterhilft.
In deiner Zeile 187 steht doch völlig regelkonform END SUB.
Warum wird es trotzdem "bemeckert"? Sorry, kapiere ich nicht.
Dein Programm scheint doch exakt in dem mir gewohnten QBasic - Code geschrieben zu sein, zumindest traf ich nicht auf Überraschungen.
Was ich las, war mir zumindest vom hörensagen bekannt.
Gruß Revilo |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4687 Wohnort: ~/
|
Verfasst am: 04.02.2025, 21:19 Titel: |
|
|
Soweit ich das von QBasic noch richtig in Erinnerung habe, kannst du im Editor nicht den gesamten Code hintereinander tippen, sondern musst die SUBs bzw. FUNCTIONs gesondert in eigenen Bereichen für die Unterprogramme verteilen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1276 Wohnort: Ruhrpott
|
Verfasst am: 04.02.2025, 22:33 Titel: |
|
|
Der QB-Editor speichert das in dieser Form ab:
Code: | DECLARE SUB up ()
DIM SHARED x AS INTEGER
DIM y AS INTEGER
PRINT
y = 10
x = 5
PRINT x
up
PRINT x
SUB up
DIM x AS INTEGER
PRINT "up1 "; x
x = x + 1
PRINT "up2 "; x
PRINT "upy "; y
END SUB
|
Im Editor wird das dann getrennt nach Hauptprogramm und SUBs angezeigt.
Revilo hat Folgendes geschrieben: | Ich habe es einerseits zum lernen und natürlich auch zum ausprobieren
ausgedruckt und dann von Papier Buchstabe für Buchstabe, Zeile für Zeile, Zeichen für Zeichen exakt so abgetippt. | Ja... Warum einfach, wenn's auch kompliziert geht? Kleiner Tip: Geh auf die Seite von SUDOSOl2.BAS und klicke dort auf Raw (ganz rechts, etwa in der Mitte). In dem folgenden Dialog kannst du die Datei auf deinem Rechner abspeichern. Diese Datei kannst du anschließend direkt mit dem QB-Editor öffnen. Bei mir läuft sie ohne Fehlermeldung.
Gruß
grindstone
EDIT: @SpionAtom:
"S1Unloesbar" ist wirklich unlösbar. Wenn du in der letzten Zeile die 2 durch eine 5 ersetzt, dann geht es. Obwohl - Ich nehme mal an, die Unlösbarkeit ist Absicht.  _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 390
|
Verfasst am: 05.02.2025, 12:04 Titel: |
|
|
Die aktuelle Version ist nun immer hier zu finden:
https://github.com/SpionAtom/QBasic/blob/main/SUDOSOLV.BAS
Zum verinnerlichen hilft vielleicht hier und da Teile vom Code abtippen, ansonsten kannst du dir die Datei herunterladen:
Bild zum Download-Knopf in github
(oder den Raw-Knopf wie bereits angemerkt wurde)
Wenn du eine SUB abtippen willst, musst du zunächst ins Hauptprogramm (also außerhalb einer SUB/FUNCTION sein) und die Zeile
schreiben und Enter drücken, dann wird die SUB-Ansicht geöffnet, und das END SUB wird dir automatisch hinzugefügt, ebenso die DECLARE SUB am Anfang des Programms.
Das unmögliche Sudoku ist tatsächlich so entstanden, dass ich da Ziffern vertauscht hatte. Das war Absicht, um zu schauen, ob das Programm dann nicht in eine Endlosschleife gerät. _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 178
|
Verfasst am: 05.02.2025, 17:25 Titel: |
|
|
Hallo SpionAtom,
vielen Dank für die Erlaubnis, dein Programm SODOSOLV.BAS downloaden zu dürfen. Das hat auch geklappt. In meinem Textverarbeitungsprogramm (LibreOffice) konnte ich es auch öffnen und sah die korrekte Q-Basic -Notation.
Ich hätte es gern geöffnet um mal zu sehen, wie es funktioniert.
Das ist mir, aber nicht gelungen, obwohl es ja eigentlich hätte gelingen müssen.
Zitat: | Diese Datei kannst du anschließend direkt mit dem QB-Editor öffnen.
|
Mein Q-Basic, das nur über die DOS-BOX (quasi als Vermittler) läuft,
kriegt es offenbar nicht hin, einen "Draht" zu LibreOffice zu legen.
Der Versuch, ein einzelnes Wort von LibreOffice mit Strg+C und Strg+V in mein Q-Basic zu kopieren, scheiterte ebenfalls, also auch in der
entgegengesetzten Richtung.
Oder ich bin, wieder mal zu dämlich, es richtig zu machen.
Nur der Wissende hat Erfolg, der Unwissende muss sich quälen und scheitert letztlich dennoch, trotz aller Mühe. Ist wohl ein Naturgesetz.
Kannst du mir, (möglichst doppelt "idiotensicher") ein Verfahren beschreiben, wie ich diesen o.g. "Draht" zwischen Q-Basic und LibreOffice legen kann? Idealerweise genau so eindeutig und unmissverständlich, wie du es für das Downloaden deines Programms getan hast.
Das war ein sauberer, für mich nachvollziehbarer, "Fahrplan".
Genau deshalb hat es ja auch geklappt.
Gruß Revilo |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 05.02.2025, 20:48 Titel: |
|
|
Revilo hat Folgendes geschrieben: | Mein Q-Basic, das nur über die DOS-BOX (quasi als Vermittler) läuft,
kriegt es offenbar nicht hin, einen "Draht" zu LibreOffice zu legen. |
Hier noch einmal zur Erinnerung: Die virtuelle Festplatte C: von DOS-Box mappt man in der Regel mit einem regulären Ordner auf dem Hostsystem (ganz normal NTFS-formatiertes Laufwerk). Und genau dort drin solltest Du ausserhalb von DOS-Box die .BAS-Datei ablegen. Mit Vorteil noch bei Bedarf kurzer 8+3-Zeichen-Name verpassen, danach sollte sie sich innerhalb von QB dann ganz normal öffnen lassen.
Sinnvolerweise auch noch beachten: Codierung der Zeichen, denn QB erwartet natürlich noch so etwas wie MS-DOS-Codepage 437, während Windows inwischen auch UTF-8 verwendet. Also bei Bedarf noch passend umwandeln. Sonst stimmen Umlaute und grafische Rahmenzeichen nicht. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
SpionAtom
Anmeldungsdatum: 10.01.2005 Beiträge: 390
|
Verfasst am: 06.02.2025, 10:44 Titel: |
|
|
Möchtest du von uns einen Fahrplan, wie du eine Datei vom Download-Ordner in deinen QBasic-Ordner bekommst  _________________ Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht. |
|
Nach oben |
|
 |
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 178
|
Verfasst am: 06.02.2025, 13:25 Titel: |
|
|
Hallo SpionAtom
ja so etwas in dieser Richtung.
Ich habe mal darüber nachgedacht. Mein Rechner ist sehr alt und daher langsam. Könnte es sein, daß es geklappt hätte, wenn ich ihm etwas mehr Zeit gelassen hätte . Vielleicht war ich einfach zu ungeduldig.
Sollte es tatsächlich so einfach sein, dass man diese Datei vom Downloadordner einfach in meinen QBasic-Ordner verschieben/kopieren muss?
Gruß Revilo  |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1276 Wohnort: Ruhrpott
|
Verfasst am: 06.02.2025, 13:42 Titel: |
|
|
Revilo hat Folgendes geschrieben: | Sollte es tatsächlich so einfach sein, dass man diese Datei vom Downloadordner einfach in meinen QBasic-Ordner verschieben/kopieren muss? | Ja.
Das Programm muss in einen Ordner, der für den QB-Editor sichtbar ist, der also bei Datei --> Öffnen... angezeigt wird.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 178
|
Verfasst am: 06.02.2025, 14:19 Titel: |
|
|
Hallo grindstone,
vielen Dank für die Bestätigung meiner Vermutung. Es war tatsächlich so einfach.
Gruß Revilo |
|
Nach oben |
|
 |
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 178
|
Verfasst am: 06.02.2025, 15:39 Titel: |
|
|
Hallo SpionAtom,
ebenfalls Abbitte an dich .
In deinem Programm steht sinngemäß: "Bitte geben Sie einen Dateinamen ein"
Was für einen Dateinamen? Doch nicht etwa für jedes Sudoku ein extra Name?
1000 Sudokus - 1000 Dateien?
Bei meinen anfänglichen Versuchen, an dein Programm heranzukommen,
versuchte ich es in QBasic mit Öffnen C:\ ......
Also mit ALTGR + ?. Mir wurde aber statt \ immer ein ß angezeigt.
Offenbar scheint die Drittbelegung der Tasten nicht immer zu funktionieren.
Da ich hier aber problemlos einen \ eingeben kann, ist es offenbar kein mechanisches Problem meiner ALTGR-TASTE (Staubkorn).
[ } ² @ ~ | funktionieren auch in QBasic, ³ \ € aber nicht, werden aber dennoch gebraucht.
Aber gerade \ braucht man doch auch in QBasic z.B. für Pfadangaben oder
zur Ganzzahldivision. ³ für mathemat. Darstellungen usw.
Muss man hier wirklich über den ASCII-Code gehen oder gibt es eine Tasten-Alternative, die diese Zeichen in QBasic aufruft?
Gruß Revilo |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1276 Wohnort: Ruhrpott
|
Verfasst am: 06.02.2025, 19:26 Titel: |
|
|
Das ist das, was dreael mit der Codepage meinte. Ich weiß nicht, ob DOSbox so eingerichtet werden kann, daß es das übersetzt. Ansonsten könnte es schwierig werden.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 06.02.2025, 20:36 Titel: |
|
|
@Revilo:
Die Datei von SpionAtom ist übrigens soweit korrekt CP437 codiert. Vorhin bei mir ausprobiert (ein Samba-Server unter Linux läuft bei mir immer): Datei auf Netzlaufwerk gespeichert. Mache ich in PuTTY ein
Code: |
$ recode cp437..utf-8 <SUDOSOLV.BAS
|
so erscheinen die Umlaute in PuTTY (verwendet wie heutzutage üblich auch UTF-8) richtig. Die Datei sollte also in einem Ordner abgelegt werden, der in der DOS-Box gemappt wurde. Dort sollte es sich ohne Fehler in QB öffnen lassen, d.h. Umwandlung sollte also nicht nötig sein. Wichtig ist einfach im Browser direktes "Speichern unter...". _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1276 Wohnort: Ruhrpott
|
Verfasst am: 10.02.2025, 16:03 Titel: |
|
|
Entschuldigung, das ist jetzt off topic, aber Stichwort Samba Server: Ich würde gerne meine WinXP-Installation (ich meine damit meine bestehende und zu meiner vollen Zufriedenheit eingerichtete Installation, nicht ein neu aufgesetztes XP) unter Linux laufen lassen, so daß ich nicht jedesmal neu booten muss, um das Betriebssystem zu wechseln. Ist sowas möglich?
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 10.02.2025, 20:14 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Entschuldigung, das ist jetzt off topic, aber Stichwort Samba Server: Ich würde gerne meine WinXP-Installation (ich meine damit meine bestehende und zu meiner vollen Zufriedenheit eingerichtete Installation, nicht ein neu aufgesetztes XP) unter Linux laufen lassen, so daß ich nicht jedesmal neu booten muss, um das Betriebssystem zu wechseln. Ist sowas möglich? |
Siehe separat angelegtes Thema hier _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
Revilo
Anmeldungsdatum: 26.12.2022 Beiträge: 178
|
Verfasst am: 16.02.2025, 00:14 Titel: |
|
|
Hallo SpionAtom,
ich habe dein Programm Sudosolv erfolgreich heruntergeladen,
und habe es auch hinbekommen, dass es durch mein Qbasic aufgerufen werden kann. Der Daten - Transfer von euch zu mir scheint also offenbar zu funktionieren.
Ich muss also nur meinen Texteditor (LibreOffice) quasi als "Dolmetscher",
als "Zwischenbahnhof" benutzen. Richtig?
Ich versuche es jetzt mal in der entgegengesetzten Richtung, also von mir zu dir und sende dir mal folgendes:
Zitat: |
'Wurden alle gltigen Ziffern geprft und keine passt, so wurde
'eine 10 eingetragen'
|
Falls das geklappt hat, komme ich mit dem hier üblichen Handling bestimmt schon mal etwas besser klar, weil ich es dann so halbwegs verstanden habe.
Bitte sende mir mal eine Rückmeldung dazu.
Muss ich bei einem Daten-Transfer zwischen uns noch irgend etwas beachten? Ich möchte auf Nummer sicher gehen. Wenn o.g. Zitat bei dir angekommen ist, wäre es schade, wenn es nur ein Zufallstreffer war.
Gruß Revilo |
|
Nach oben |
|
 |
|
|
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.
|
|