Variablen: Werte tauschen und übernehmen

Anfängerfragen zum Programmieren mit PureBasic.
auxxon
Beiträge: 56
Registriert: 17.03.2005 14:30

Variablen: Werte tauschen und übernehmen

Beitrag von auxxon »

Ich habe hier 2 Fragen(Falls manche wieder mit der Hilfe kommen,Kann ich ihnen sagen dass ich schon geguckt habe aber nichts gefunden habe)

1.Gibt es eine Möglichkeit die Werte zweier Variablen zu tauschen?

2.Gibt es eine Möglichkeit dass ich einer Variable den Wert den Wert einer anderen zuteile?

Ich sehe hier von mal riesigen if-abfragen ab.
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

1. tempa=a
tempb=b
a=tempb
b=tempa
2. a=b

:wink:
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8808
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Das geht auch schneller und unkomplizierter.

Code: Alles auswählen

a.l = 1144
b.l = 2311
a ! b
b ! a
a ! b
Debug a
Debug b
Wenn man das ganze allerdings mit Strings machen möchte, sollte man mal das Forum durchstöbern. Da gab es nämlich schon öfter solche Fragen und auch für Strings gibt es eine Lösung.
Aber suchen musst du dann schon selber. Dafür habe ich gerade wenig Zeit.
VisualDemon
Beiträge: 12
Registriert: 23.03.2005 12:09
Wohnort: Wien

Beitrag von VisualDemon »

:wink:

Code: Alles auswählen

a.s = "Test"
b.s = "Hallo"

Debug a
Debug b

tempa.s = a
tempb.s = b
a = tempb
b = tempa

Debug a
Debug b
funzt perfekt


mist hab aber zu spät gesehen dass NicTheQuick inline ASM benutzt. Sorry
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8808
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

VisualDemon hat geschrieben:mist hab aber zu spät gesehen dass NicTheQuick inline ASM benutzt. Sorry
Wo benutze ich denn InlineASM?

Ansonsten funktioniert deine Methode Strings zu vertauschen natürlich perfekt. Es geht sogar noch etwas einfacher und schneller mit dieser Methode. Aber besonders schnell wird es dadurch nicht.

Hier also mit einer Temp-Variablen weniger.

Code: Alles auswählen

a.s = "Test"
b.s = "Hallo"

Debug a
Debug b

tempa.s = a
a = b
b = tempa

Debug a
Debug b
Interessanter wäre es allerdings ohne jegliche temporäre Variablen. Und das geht dann auch nur wieder auf Pointer-Basis und XOr.
Das habe ich auch schonmal gemacht. Aber es geht - soviel ich weiß - auch noch schneller.
Benutzeravatar
MLK
Beiträge: 267
Registriert: 01.11.2004 13:17
Wohnort: Hamburg

Beitrag von MLK »

wie wäre es mit:

Code: Alles auswählen

x$="x_string"
y$="y_string"

!PUSH [v_x$]
!PUSH [v_y$]
!POP [v_x$]
!POP [v_y$]

Debug "x ist nun der " + x$
Debug "y ist nun der " + y$
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

...und wie wäre es mit:

Code: Alles auswählen

x$="x_string"
y$="y_string"

!MOV Eax, [v_y$]
!XCHG [v_x$], Eax
!MOV [v_y$], Eax

Debug "x ist nun der " + x$
Debug "y ist nun der " + y$
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Leute, das ist die Anfänger-Ecke!!!
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Spielverderber!

...und warum sollen Anfänger kein Assembler lernen wollen? Ich wollt auch gleich als ich mit PB angefangen habe auch Assembler können, da ich PB nunmal InlineASM unterstützt und ich das auch ausprobieren wollte. und wenn das die Leute nicht wollen, können 'se die Beiträge ignorieren.
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
zigapeda
Beiträge: 1753
Registriert: 06.03.2005 17:22
Wohnort: Kaufbeuren
Kontaktdaten:

Beitrag von zigapeda »

Könntet ihr den InlineASM code auch erklähren?
Antworten