|
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 |
Qwizard
Anmeldungsdatum: 10.02.2014 Beiträge: 3
|
Verfasst am: 11.02.2014, 17:58 Titel: Seltsamer "Bug"! |
|
|
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. |
|
Nach oben |
|
|
Qwizard
Anmeldungsdatum: 10.02.2014 Beiträge: 3
|
Verfasst am: 11.02.2014, 18:07 Titel: Problem gelöst bleibt noch warum offen |
|
|
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 |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4601 Wohnort: ~/
|
Verfasst am: 11.02.2014, 18:18 Titel: |
|
|
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.
usw. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Elor
Anmeldungsdatum: 12.07.2013 Beiträge: 205 Wohnort: Konstanz
|
Verfasst am: 11.02.2014, 20:11 Titel: |
|
|
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 |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2509 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 12.02.2014, 11:45 Titel: |
|
|
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 |
|
|
|
|
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.
|
|