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:

Seltsamer "Bug"!

 
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
Qwizard



Anmeldungsdatum: 10.02.2014
Beiträge: 3

BeitragVerfasst am: 11.02.2014, 17:58    Titel: Seltsamer "Bug"! Antworten mit Zitat

Ich schreibe gerade ein Programm für ein Textfeld.

Code:
screen 12
do
    Input "Text eingeben: ",Text$
    Input "Hoehe: ",Hoehe%
    Input "Breite: ",Breite%
    Cls
    Call Textfeld (Hoehe%,Breite%,text$)
    sleep
    cls
Loop until Text$="quit"


SUB Textfeld(Hoehe%,Breite%,Text$)
Call Rahmen (Hoehe%,Breite%)
Call Text (Hoehe%,Breite%,Text$)
END SUB

SUB Rahmen (Hoehe%,Breite%)


REM Ecken

locate 30 - Hoehe% ,1      ' links  oben
print CHR$(213)
locate 30 - Hoehe%,Breite% ' rechts oben
print CHR$(187)
locate 30,1                ' links  unten
print CHR$(192)
locate 30,Breite%          ' rechts unten
print CHR$(189)



REM Rand


REM Oberer Rand

loro% = 1
do
    loro% = loro% + 1
    locate 28-Hoehe%,loro%
    print CHR$(205)
Loop until loro%=Breite%-1

REM Unterer Rand
luru% = 1
do
    luru% = luru% + 1
    locate 28,luru%
    print CHR$(196)
Loop until luru%=Breite%-1
END SUB

SUB Text (Hoehe%,Breite%,Text$)
END SUB


An der Stelle "locate 28,luru%" wird die Höhe des unteren Randes definiert. Ich habe herumexperimentiert um die richtige Höhe zu finden doch kaum ist mein Wert über 28 zeichnet er keine gerade Linie mehr sondern zieht sie schräg über den Bildschirm. Ich komm auch einfach nicht drauf was falsch ist. mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Qwizard



Anmeldungsdatum: 10.02.2014
Beiträge: 3

BeitragVerfasst am: 11.02.2014, 18:07    Titel: Problem gelöst bleibt noch warum offen Antworten mit Zitat

Code:
REM Oberer Rand
loro$ = STRING$(BREITE% - 2, CHR$(205))
locate 28 - Hoehe%,2
print loro$

REM Unterer Rand
luru$ = STRING$(BREITE% - 2, CHR$(196))
locate 30,2
print luru$


...so hab ichs jetzt gelöst. Jetzt möchte ich gern noch wissen was ich oben verbockt hab.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4204
Wohnort: ~/

BeitragVerfasst am: 11.02.2014, 18:18    Titel: Antworten mit Zitat

Ich kann es jetzt mangels QBasic nicht zu 100% rekonstuieren und weiß daher auch nicht, ob das wirklich die Ursache des Problems ist, aber wenn die Höhe zu groß ist und nicht mehr auf das Anzeigefenster passt, gibt es nach dem PRINT einen Zeilenvorschub, der den bisherigen Text nach oben schiebt (den Zeilenvorschub gibt es bei dir immer, aber wenn der Cursor nicht ganz unten am Rand steht, fällt das nicht auf).. Du könntest das auch unterbinden, indem du den PRINT-Befehl mit Semikolon ; abschließt.
Code:
print CHR$(196);

usw.
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Elor



Anmeldungsdatum: 12.07.2013
Beiträge: 205
Wohnort: Konstanz

BeitragVerfasst am: 11.02.2014, 20:11    Titel: Antworten mit Zitat

Das mit den Semikolon hat nemored schon erklaert, aber mit deiner Positionierung bezueglich der Zeilen bist du ein bischen durcheinander
gekommen.
Die oberen Ecken werden in der Zeile 30- Hoehe gesetzt, wieso setzt du die verbindungslinie dann auf Zeile 28- Hoehe?
Da du ja QBASIC verwendest, schau dir mal im Menue -Hilfe->Index- die Beschreibung fuer STRING$ an, damit kannst du die verbindungslinien viel eleganter Zeichnen lassen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2457
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 12.02.2014, 11:45    Titel: Antworten mit Zitat

Elor hat Folgendes geschrieben:
Da du ja QBASIC verwendest, schau dir mal im Menue -Hilfe->Index- die Beschreibung fuer STRING$ an, damit kannst du die verbindungslinien viel eleganter Zeichnen lassen.

Thema daher verschoben.

Zum Thema selber: Kurz meine 16-Bit-VMware angeworfen (ein hübsches Windows for Workgroups 3.11 übrigens), da ich inzwischen auf dem physischen Hostsystem nur noch mit 64-Bit arbeite.

Für die Interessierten ein Screenshot:

http://beilagen.dreael.ch/QB/Screenshot_QB_in_16Bit_VM_unter_Vista_x64.png

Dank Samba und TCP32B.EXE kommt natürlich auch das Gastsystem aufs Serverlaufwerk und kann die .BAS-Datei laden (spezieller Ordner mit alles kurzen Namen für derartige Sachen angelegt).

Erste Korrektur ist bereits ersichtlich: Umbenennung von "Text" (einmal Variable und einmal als SUB) am einen Ort.

Um den Rest verbessern zu können: Strebst Du eine Art MessageBox-Prozedur an? Aufgabe davon ist, dass die Position vom Text im Rahmen selbständig berechnet wird. Ebenfalls sollte noch bekannt sein, ob das Ganze eine 16-Bit-Anwendung für MS-DOS geben soll (z.B. ein Projekt ähnlich meinem Festplattenlöschtool, welches für eine Startdiskette vorgesehen ist, weil kein Windows im RAM mehr aktiv sein darf) oder ob es besser eine Win32-Anwendung in FreeBasic werden soll. => Für letzteres ist eine Programmierweise ohne "-lang qb" sehr empfehlenswert.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
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