Bascom: Variable in Subfunktion ändern (Pointer?)

Gast #1526974
Hallo Leute,

Folgende Fragestellung für Bascom:

Eine Sub ändert den Wert von Variablen und soll anschließend diese 
wieder zurückgeben. Ich suche eine speichersparende Methode; ohne mich 
in C auszukennen hätte ich darauf getippt, dass ein Pointer hier das 
richtige
wäre. Aber wie geht das am elegantesten in Bascom?

Momentan mache ich das so:
1
Var(1)=Wert_a:Var(2)=Wert_b:Var(3)=Wert_c
2
gosub VerarbeiteWerte
3
Wert_a=Var(1):Wert_b=Var(2):Wert_c=Var(3)

(Die Variablen werden natürlich im Vorfeld definiert)
Funktionell ist das richtig, aber sicher nicht optimiert?!

PS: Ich weiß, dass Bascom hier nicht viele Freunde hat, doch bitte ich 
um Verständnis.... ;-)

Thx,
Joe
Joe schrieb:

> PS: Ich weiß, dass Bascom hier nicht viele Freunde hat, doch bitte ich
> um Verständnis.... ;-)

Oh.
Bascom hat schon Freunde.
Aber was bei uns keine Freundschaft geniesst, sind 'Programmierer' die 
immer noch nicht geschnallt haben, dass es zu jeder Programmiersprache 
so etwas wie ein Handbuch gibt, in dem man die grundlegenden Dinge einer 
Programmiersprache nachlesen kann.

In deinem Fall wirst du in der Bascom Hilfe bei "CALL" fündig
Gast
@Joe

CALL wird ja bekanntlich in Zusammenhang mit dem Aufruf einer Subroutine 
verwendet (und kann auch entfallen), ergo sähe Dein Vorschlag so aus:

call VerarbeiteWerte(Wert_a,Wert_b,Wert_c)

bei entsprechender Definition mit byref/byval sollte es dann 
funktionieren.

Aber ich meine irgendwo gelesen zu haben, dass dies nicht ratsam da 
speicherintensiv sein soll.

Armin
Gast
Wenn die Argumente nicht explizit ByVal definiert wurden, so sind sie 
standardmäßig ByRef.

ByRef entspricht einem Pointer, nur wird eine per Zeiger übergebene 
Variable in der Sub oder Function bei Verwendung automatisch 
dereferenziert.

Die Adresszeiger auf die Variablen gehen auf den SW Stack. Wenn ByVal 
verwendet wird, so werden die Argumente selbst in temporären Variablen 
auf dem SW Stack angelegt. Der muss dann nur groß genug definiert sein.

Steht aber alles, auch mit Hinweis auf die Größe des benötigten 
Speichers, in der Bascom Hilfe.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.