Zeiger(variablen) wie in C++ in BB(3D) möglich?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Gray Fox

Betreff: Zeiger(variablen) wie in C++ in BB(3D) möglich?

BeitragDo, Nov 30, 2006 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, weiß jemamd ob dies auch in BB möglich ist? Wäre sehr hilfreich oder gibt es eine andere Möglichkeit dafür?
 

Dreamora

BeitragDo, Nov 30, 2006 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein Grausighickhack wird in Blitz nicht unterstützt. Dafür gibt es ja bereits C++.

Es gibt Types, mit denen kannst du Structs machen wenn du möchtest.
Darüber hinaus gibt es auch Banks damit du Alloc etc auch hast Smile
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

PowerProgrammer

BeitragDo, Nov 30, 2006 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, das die gibt es bei BB leider nicht.
Wofür benötigst du die denn? Als Call by reference für Funktionen? Kommt immer auf den Verwendungszweck an Wink

Mfg

Edit: Mal wieder zu lahm Wink
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!
 

Gray Fox

BeitragDo, Nov 30, 2006 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Möchte das gerne dazu nutzen um quasi mehrere Rückgabewerte in einer Funktion zu haben Smile

Goodjee

BeitragDo, Nov 30, 2006 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
dann geb eine bank oder ein type zurück oder benutz globals...
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

Gray Fox

BeitragDo, Nov 30, 2006 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Goodjee hat Folgendes geschrieben:
dann geb eine bank oder ein type zurück oder benutz globals...


Es ist doch so- Ich übergebe z.B. zwei Variablen an eine Funktion. im Endeffekt übergebe ich doch nur deren Inhalt.

Aber "Bank" werde ich mir mal anschauen.

PowerProgrammer

BeitragDo, Nov 30, 2006 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Globals funktionieren anders, weißt du wie? Das sind globale Variablen, die nur überall verfügbar sind. Also was steht dir da im Wege?
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!
 

Gray Fox

BeitragDo, Nov 30, 2006 17:11
Antworten mit Zitat
Benutzer-Profile anzeigen
PowerProgrammer hat Folgendes geschrieben:
Globals funktionieren anders, weißt du wie? Das sind globale Variablen, die nur überall verfügbar sind. Also was steht dir da im Wege?


Mir ist schon klar wie ich globale Variablen setze.

Aber ich glaube wir reden aneinander vorbei Smile

Beispiel:

Code: [AUSKLAPPEN]

Global zahl1 = 0
Global zahl2 = 0
Global zahl3 = 0

test1(zahl1,zahl2)

zahl3 = test2()

Print zahl1
Print zahl2
Print zahl3

Function test1(var1,var2)

var1 = 2
var2 = 2

End Function

Function test2()

Return 1

End Function



Ergebnis: Zahl1 und Zahl2 beinhalten weiter den Wert "0". Der Wert von Zahl 3 beträgt nach dem Funktionsaufruf "1".

Bei C++ wäre es dank Zeigervariablen möglich die Speicheradressen von Zahl1 und Zahl2 an die Funktion "test1" zu übergeben, dadurch wäre es möglich die Werte beider Variablen mit einem Funktionsaufruf und ohne "Return"Wert zu bearbeiten.

Habe ich mich verständlich ausgedrückt? Embarassed oder soll ich kurz ein kleines C++ Beispiel schreiben?

PowerProgrammer

BeitragDo, Nov 30, 2006 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ist schon klar. Musst kein Beispiel schreiben Wink

Code: [AUSKLAPPEN]
Global zahl1 = 0
Global zahl2 = 0
Global zahl3 = 0

test1()

zahl3 = test2()

Print zahl1
Print zahl2
Print zahl3

Function test1()

zahl1 = 2
zahl2 = 2

End Function

Function test2()

Return 1

End Function



Musst du dann eben so machen. Leg dir dann doch einfach 2 oder 3 Variablen namens "FunctionReturn1" etc. an, dann kannst du es ja irgendwie nutzen. Es geht nur nicht so, wie du es aus C++ kennst Wink


Hier ist dein Code nochmal, etwas flexibler:

Code: [AUSKLAPPEN]
Global FunctionReturn1
Global FunctionReturn2

zahl4 = test1(5,9)
zahl2 = FunctionReturn1
zahl1 = FunctionReturn2

zahl3 = test2()


Print zahl1
Print zahl2
Print zahl3
Print zahl4

Function test1(var1,var2)

FunctionReturn1 = 325
FunctionReturn2 = 23552
return 15

End Function

Function test2()

Return 1

End Function


Oder?
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!

FOODy

BeitragDo, Nov 30, 2006 17:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es in B3D kein Call-By-Reference?
Also so ein "Var" hinter den Argumenten zu schreiben? (was in BlitzMax so is)

So ähnlich:
Code: [AUSKLAPPEN]
Function test1(var1 var,var2 var)
var1 = 2
var2 = 2
End Function


???



Gruß,
FOODy


PowerProgrammer hat Folgendes geschrieben:
Nein, gibt es nicht. Sonst hätte Gray Fox ja keine Probleme Wink
Nur BB hat sowas mal wieder nicht, selbst bei PHP gibt es Call by Reference...

Das ist ja blöde Confused
Jedenfalls für die "alten" Blitzer Razz
BlitzMax + MaxGUI, 64-bit Arch Linux: Intel Core² E8500 | 8 GB Ram | GeForce GTX 460 · 1024 MB
  • Zuletzt bearbeitet von FOODy am Do, Nov 30, 2006 17:35, insgesamt einmal bearbeitet

PowerProgrammer

BeitragDo, Nov 30, 2006 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, gibt es nicht. Sonst hätte Gray Fox ja keine Probleme Wink
Nur BB hat sowas mal wieder nicht, selbst bei PHP gibt es Call by Reference...
www.xairro.com Alles für Webmaster und Programmierer! Es gibt mehr als bloß einen Counter!
 

Gray Fox

BeitragDo, Nov 30, 2006 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
So leicht abgewandelt wie PPs es vorgeschlagen hat:
Code: [AUSKLAPPEN]

Global fr1
Global fr2

zahl = 0
test(zahl)
zahl = fr1

Print zahl

Function test(var)

fr1 = var +5

End Function


Funktioniert auch. Mir ist aber nur "unwohl" dabei. Sieht halt für mich aus wie geknuppt.
Außerdem könnte es bei größeren Projekten teilweise unübersichtlich werden.

Schade, dass es sowas net gibt :/

BladeRunner

Moderator

BeitragDo, Nov 30, 2006 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst allenfalls
1. einen Type zurückgeben der in seinen Fields die veränderten Werte enthält.
2. einen String zurückgeben der die einzelnen Rückgabewerte mit einem Separatorzeichen getrennt enthält. Der String muss dann nachbearbeitet und zurückgecastet werden.
3. Eine Bank anlegen welche die Zielwerte an festgelegten Positionen enthält.
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
 

Gray Fox

BeitragDo, Nov 30, 2006 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Types habe ich es nicht so ^^

Werde es mal mit "Bank" probieren.

Find es aber schade, dass solch interessante Funktionen nicht eingebaut wurden.

BladeRunner

Moderator

BeitragDo, Nov 30, 2006 20:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Blitz wurde auf Beginnerfreundlichkeit und Sicherheit in der Bedienung konzeptioniert. Daher keine Pointer. Es ist eben sehr Basic: leicht zu nutzen aber bei weitem nicht so mächtig wie C. Wenn Du Pointer und solche Spässe brauchst nimm Bmax.

Allerdings: Wenn Du dich bemühst Types zu verstehen wirst Du auch schon viel mächtigere Programme haben. Types entsprechen Structs in C, welche in einer globalen verketteten Liste gespeichert sind.

(Unter BMax sind Types dann (fast) wie Klassen.)
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
 

Gray Fox

BeitragDo, Nov 30, 2006 20:42
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm werde es einfach mal ausprobieren Smile

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group