String und Dezimalzahlen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Hektor II

Betreff: String und Dezimalzahlen

BeitragDi, Jun 27, 2006 15:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Tag auch, ich hab gerade wieder frisch mit BB angefangen(zum 4. mal), aber eines verstehe ich noch nicht so ganz. Wie kann ich einem Wert einen String oder eine Dezimalzahl zuordnen? ich habe das ganze System nicht so ganz verstanden, wann man "..." setzen muss, wann $ und wann #... Ich habe es mir oft genug im Robsite Tutorial durchgelesen, aber verstehe es immernoch nicht so ganz. Hier ein Beispiel Code:

Code: [AUSKLAPPEN]
Dim Mog(20)

Mog(1) = 16

Mog(5) = "test"

Mog(14) = 21.12

Print Mog(1)

Print Mog(5)

Print(14)

WaitKey
End


Kann mir da jemand helfen?

BladeRunner

Moderator

BeitragDi, Jun 27, 2006 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein Dimfeld kann nur Variablen gleichen Typs enthalten. Was Du versuchst, ist zu mischen, was nicht geht.
Welche Art von Inhalt eine Variable hat legst Du bei ihrer ersten Nutzung, idealerweise jedoch bei der Definition fest.

Code: [AUSKLAPPEN]
local testvar$ ; diese Variable enthält eine Zeichenkette
dim nocheintest#(20) ; ist ein Feld mit 21 (0-20) Gleitkommazahlen.

Du kannst eine Ganzahl in eine Gleitkommavariable ohne Verluste übernehmen:
Code: [AUSKLAPPEN]
zahl# = 1


Aber umgekehrt hast Du Verluste:

Code: [AUSKLAPPEN]
zahl% = 1.4


Also: vorher sorgfältig überlegen was für einen Typ Du brauchst und dann schon bei der ersten Benutzung der Var im Programm den Typ mittels $,%,# festlegen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Hektor II

BeitragDi, Jun 27, 2006 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke für die schnelle Antwort. Ich wusste nicht, das man den typ des Feldes vorher festlegen muss. Mit den Zahlen das, werd ich mir wohl noch einmal angucken müssen.

BladeRunner

Moderator

BeitragDi, Jun 27, 2006 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt Ganzzahlen (Integer). Die Variable hat ein %. (eigentlich werden alle Variablen die kein Zeichen haben automatisch zum Integer, aber der Sauberkeit halber ist es sinnvol dass % dennoch zu nehmen).

Integer können nur Ganzzahlen (1, 315, 70545) speichern.

Dann gibt es noch Gleitkommazahlen, also Zahlen mit Nachkommastellen. Diese werden auch float genannt und mit # gekennzeichnet.

Du kannst in Glwitkommazahlen wesentlich grössere Zahlen speichern als in Ganzzahlen, allerdings ist ihre Rechengenauigkeit auf 6 Stellen begrenzt.

Zudem ist es eben so dass bei einem Transfer von Float nach Integer die Nachkommastellen verloren gehen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Christoph

BeitragDi, Jun 27, 2006 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann gibt es noch Zeichenketten (wird "String" genannt)
Diese speichern einfach nur Text ab.
Machst du so was
Code: [AUSKLAPPEN]
Name="Patrick"
print Name

Ausgabe: 0
Was ist passiert?
Tja man hat halt versucht in eine Ganzzahl ein String zu "quetschen" was misslungen ist (0).
Richtig in diesem Fall wäre das:
Code: [AUSKLAPPEN]
Name$="Patrick"
print Name

Oder du sagst Blitzbasic vorher das mit Name ein String gemeint ist.
Code: [AUSKLAPPEN]
global Name$
Name="Patrick"
print Name


@Bladerunner
Wie mache ich die Querverweise zur Onlinehilfe? Danke.

5k41

BeitragDi, Jun 27, 2006 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
[ot]
mit ql:Befehl
[/ot]
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image
 

Hektor II

BeitragDi, Jun 27, 2006 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Christoph hat Folgendes geschrieben:

Richtig in diesem Fall wäre das:
Code: [AUSKLAPPEN]
Name$="Patrick"
print Name

Oder du sagst Blitzbasic vorher das mit Name ein String gemeint ist.
Code: [AUSKLAPPEN]
global Name$
Name="Patrick"
print Name




Achso, ich habe wiedereinmal etwas falsch verstanden. Ich bin davon ausgegangen, das man den Variablentyp in dem Wert der Variable (Name=Patrick$) und nicht in der Variable selbst festlegt.

@Bladerunner: Danke, das hat es mir besser erklärt als jedes Tutorial Smile

@Alle: Danke, dass ihr mir so schnell und ausführlich geholfen habt. Kenne ich wirklich aus keinem anderem Forum, besonders nicht aus BEginner´s Corners etc.

Edit: Hab gerade alles probiert, funktioniert super. Aber eine Frage habe ich noch:

Wenn ich der Übersicht-halber alle Integer Variablen mit einem % kennzeichnen soll, kann ich das selbe auch mit Strings machen? Ich habe es probiert, und bei einem einfachem Eingabe$=Input("...") passiert nichts(was ja auch nicht sollte). Aber hat es Auswirkungen auf spätere Teile, wenn ich bspw. Funktionen oder Types integriere?

Thorsten

BeitragMi, Jun 28, 2006 11:02
Antworten mit Zitat
Benutzer-Profile anzeigen
hm sry schonmal wenn ich dich falsch verstanden habe Rolling Eyes

Wenn du Variablen Funktionsübergreifend benutzen willst musst du jede Variable vorher globalisieren z.b.
Code: [AUSKLAPPEN]
Global String$


Außerdem musst du jede Variable nur einmal als String, Float oder Integer festlegen.
Ebenfalls hilfreich ist es, den Typ im Name festzulegen
z.b. S steht für String oder Fl für Float.

cya,
BlindGuy
 

Hektor II

BeitragMi, Jun 28, 2006 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm... Danke, wenn ich das mit S_String mache wird das wohl wirklich übersichtlicher Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group