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 gescheit ausgeben

 
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
spawn



Anmeldungsdatum: 09.08.2005
Beiträge: 45

BeitragVerfasst am: 19.11.2005, 21:59    Titel: Variablen gescheit ausgeben Antworten mit Zitat

Hi,

wenn ich eine Variable (echte Zahlen) ausgeben möchte, setzt QB 6.?, bei der Ausgebe, vor und hinter die Variable ein Leerzeichen. Bei Strings macht er das glaube ich nicht. wie kann ich das imgehen? - kann ich die Variable in eine String umwandeln?

MFG
Guido
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Progger_X
Mr. Lagg


Anmeldungsdatum: 24.11.2004
Beiträge: 784
Wohnort: Leipzig

BeitragVerfasst am: 19.11.2005, 22:07    Titel: Antworten mit Zitat

Ja, mit STR$(variable)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Skilltronic



Anmeldungsdatum: 10.09.2004
Beiträge: 1148
Wohnort: Köln

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

Hallo

Du kannst aber auch mit PRINT USING nicht nur das führende Leerzeichen wegbekommen, sondern überhaupt das Format der Ausgabe bestimmen.

PRINT USING "#.##"; 1/3

ergibt z.B. die Ausgabe

0.33

Gruss
Skilltronic
_________________
Elektronik und QB? www.skilltronics.de !
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
stef



Anmeldungsdatum: 13.01.2005
Beiträge: 102

BeitragVerfasst am: 19.11.2005, 23:07    Titel: Antworten mit Zitat

Mit STR$ wird die Zahl in einen String gewandelt, in dam allerdings immer noch diese merkwürdigen Leerzeichen sich befinden, über die sich wahrscheinlich schon viele QBasic Programmierer aufgeregt haben. Diesen String kann man dann aber mit den Befehlen LTRIM$ und RTRIM$ in die gewünschte Form bringen, da sie diese Leerzeichen entfernen. Leider etwas umständlich aber nun halt mal nicht anders möglich:
Code:
DIM Zahl AS SINGLE

PRINT "Zahl = "; LTRIM$(RTRIM$(STR$(Zahl)))
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 20.11.2005, 09:45    Titel: Antworten mit Zitat

Es gäbe noch eine Elgantere Lösung:
Code:
DECLARE FUNCTION zahl$ (a!)
DIM var AS SINGLE
INPUT var
PRINT "var = "; zahl$(var)

FUNCTION zahl$ (a)
zahl$ = LTRIM$(RTRIM$(STR$(a)))
END FUNCTION

Der Trick ist einfach, den komischen ausdruck in eine Funktion zupacken und ihr einen logischen Namen geben.
_________________
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
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 20.11.2005, 13:45    Titel: Antworten mit Zitat

Aber das RTRIM$() könnt ihr euch sparen zwinkern

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
pinkpanther



Anmeldungsdatum: 28.05.2005
Beiträge: 79
Wohnort: Wien

BeitragVerfasst am: 20.11.2005, 15:56    Titel: Antworten mit Zitat

Also ich versuche immer, die von den Vor-Postern angeregten Stringmanipulationen zu vermeiden cool und das bei der Ausgabe von positiven Zahlen unvermeidbar auftretende "überflüssige" Leerzeichen unauffällig "anzubringen".

Das gelingt auch in 90% der Fälle:

Variante 1:
Code:
DEFINT A-Z

CLS
PRINT "Anzahl der Durchlaeufe:";

FOR i& = 1 TO 500000
  LOCATE 1, 25
  PRINT LTRIM$(STR$(i&));
NEXT

END

Meine Variante:
Code:
DEFINT A-Z

CLS
PRINT "Anzahl der Durchlaeufe:";

FOR i& = 1 TO 500000
  LOCATE 1, 24
  PRINT i&;
NEXT

END

Der Clou ist also, die ohnedies vorzusehende Leerstelle zwischen Beschreibungstext und Wert mit dem unerwünschten Leerzeichen zu überschreiben.

Funktioniert aber nur dann problemlos, wenn ausschließlich mit der Ausgabe von Null oder positiven Werten zu rechnen ist.
_________________
lG
pinkpanther lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 20.11.2005, 17:32    Titel: Antworten mit Zitat

wenns nur positive werte gibt nimmt man einfach nen unsigned-datentyp und vergisst die leerstellen xD
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 20.11.2005, 17:45    Titel: Antworten mit Zitat

In QB gibt's keine Unsigned Typen. durchgeknallt Wenn, dann muss man sich die selber basteln.
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
pinkpanther



Anmeldungsdatum: 28.05.2005
Beiträge: 79
Wohnort: Wien

BeitragVerfasst am: 20.11.2005, 18:01    Titel: Antworten mit Zitat

@MisterD
Codest du schon die zweite Nacht durch, auf dass du Halluzinationen von unsignierten QuickBasic-Datentypen bekommst?? geschockt geschockt geschockt
Nun ja, Weihnachten kömmt, und da ist ja alles Wünschen erlaubt! Oder man nimmt kurz entschlossen die Sache selbst in die Hand und holt sich FreeBasic auf seinen Rechner bzw. gönnt sich PB/DOS! lachen

@Sebastian
Ich habe den starken Eindruck, dass MisterD sein Posting nicht ganz so ernst gemeint hat lächeln
_________________
lG
pinkpanther lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 20.11.2005, 18:57    Titel: Antworten mit Zitat

sorry, hab nich dran gedacht dass das das (3 mal das o_O) QB-Forum is... mit den Augen rollen
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Thomas Antoni



Anmeldungsdatum: 12.10.2004
Beiträge: 220
Wohnort: Erlangen

BeitragVerfasst am: 20.11.2005, 23:17    Titel: Dazu habe ich mir Folgendes für die MonsterFAQ vorgemerkt... Antworten mit Zitat

Dazu habe ich mir Folgendes für die MonsterFAQ vorgemerkt...

---------------------------------------------------------------------------------

Frage deutsch
~~~~~~~~~~~~~~~~
Wie unterdrücke ich Leerzeichen bei der Anzeige von Zahlen?


Question English
~~~~~~~~~~~~~~~~
How to suppress blanks when displaying numerical values?


Antwort
~~~~~~~~~~~~~~~~
[ von Thomas Antoni, 24.9.2005 ]

QBasic setzt bei der Anzeige von positiven Zahlen immer ein Leerzeichen vor den
Zahlenwert. Bei negativen Zahlen erscheint statt des Blanks immer ein
Minuszeichen. Hinter jede Zahl setzt QBasic ebenfalls ein Leerzeichen, egal ob
die Zahl positiv oder negativ ist.

Um diesen Tatbestand nachzuvollziehen kannst Du ja mal das folgende kleine
Programm starten:
Code:

CLS
PRINT "***"; 12.8; "***"
PRINT "***"; -23.6; "***"

Dieses Programm erzeugt folgende Bildschirmanzeige:
Code:

*** 12.8 ***
***-23.6 ***


Wenn Dich die Leerzeichen bei der Anzeige einer Zahl stören, kannst Du sie durch
den folgenden Befehl unterdrücken:
Code:

PRINT LTRIM$(RTRIM$(STR$(Zahl)))

STR$ wandelt den Zahlenwert in einen Textstring um. RTRIM$ und LTRIM$ entfernen
die rechts bzw. links von der Zahl stehenden Leerzeichen.

Das obige Programmbeispiel muss wie folgt umgeschrieben werden, um eine Anzeige
ohne Leerzeichen zu bewerkstelligen:
Code:

CLS
PRINT "***"; LTRIM$(RTRIM$(STR$(12.8))); "***"
PRINT "***"; LTRIM$(RTRIM$(STR$(-23.6))); "***"

Die Bildschirmanzeige erfolgt hierbei ganz ohne Leerzeichen und sieht wie folgt
aus:
Code:

***12.8***
***-23.6***

---------------------------------------------------------------------------------
_________________
+++ Die beliebte QBasic CD-ROM von QBasic.de - 670 MB QBasic-Stuff mit komfortabler HTML-Oberfläche. Für nur 5 EUR bestellbar auf www.antonis.de/qbcdueb.htm +++
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 21.11.2005, 17:16    Titel: Antworten mit Zitat

Hallo? Das RTRIM$() ist doch komplett überflüssig, oder täusche ich mich da?

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 21.11.2005, 18:17    Titel: Antworten mit Zitat

bei singles nicht. 30 als single gäbe _30_ in der Ausgabe, vorderes leerzeichen und das hintere für den nicht benötigten punkt.
_________________
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 21.11.2005, 18:24    Titel: Antworten mit Zitat

OK, da schon, aber bei einfachen INTEGERs halt nicht... peinlich

jb
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: 22.11.2005, 22:10    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
bei singles nicht. 30 als single gäbe _30_ in der Ausgabe, vorderes leerzeichen und das hintere für den nicht benötigten punkt.

geschockt geschockt wieder was dazu gelernt... ok ich benutze auch kaum print grinsen
_________________
» 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
Kevin



Anmeldungsdatum: 03.11.2005
Beiträge: 29
Wohnort: Gummersbach-----NRW

BeitragVerfasst am: 23.11.2005, 15:57    Titel: Antworten mit Zitat

hähhhhh wie du benutzt ach kein print gibts da nochn anderen befehl oder was meinste?
Oder meinste die Abkürzung -----> "?"
Oder was HäHHHHHHH Gnade, Gnade!


KeViN Ich brauch nen Kaffee...
_________________
Lean Back
Enjoi the Life
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 23.11.2005, 17:02    Titel: Antworten mit Zitat

Sag mal musst du hier alles vollspammen? missbilligen
Und Jojo meint bestimmt PRINT-Ersatzroutinen für die Grafikmodi...

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht 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