Pointer in Prozeduren

Anfängerfragen zum Programmieren mit PureBasic.
Schranz0r
Beiträge: 22
Registriert: 11.09.2013 19:09

Pointer in Prozeduren

Beitrag von Schranz0r »

Hi Leute,

kurze und sicher auch idiotische Frage :shock:

Ich will eine Prozedur die nur das macht:

Code: Alles auswählen

Global myInt.i
INC(myInt, 1)

dachte mir, da brauchst wohl Pointer also:

Code: Alles auswählen

Procedure INC(*var, value)
  *var = *var+value
EndProcedure
Tja, aber geht halt nicht :)
Ich will den Wert auf keinen Fall "returnen" müssen!

PLS Help :coderselixir:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Pointer in Prozeduren

Beitrag von ts-soft »

Code: Alles auswählen

Procedure INC(*var.Integer, value)
  *var\i + value
EndProcedure

Define a.i
a = 100
INC(@a, 50)
Debug a
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Schranz0r
Beiträge: 22
Registriert: 11.09.2013 19:09

Re: Pointer in Prozeduren

Beitrag von Schranz0r »

Dank dir, ich war so nah dran :)

Oder gehts auch anders das ich keine Pointer brauch? Aber ohne Return?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Pointer in Prozeduren

Beitrag von ts-soft »

Naja, es geht auch mehr Basic-Like:

Code: Alles auswählen

Procedure INC(*var, value)
  PokeI(*var, PeekI(*var) + value)
EndProcedure

Define a.i
a = 100
INC(@a, 50)
Debug a 
aber ohne Pointer wohl eher nicht.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
7x7
Beiträge: 591
Registriert: 14.08.2007 15:41
Computerausstattung: ganz toll
Wohnort: Lelbach

Re: Pointer in Prozeduren

Beitrag von 7x7 »

Und es geht auch mehr ASM-like :)

Code: Alles auswählen

a=20
inc a       ; einfaches +1...

add a,19    ;...oder einfache addition...oder sub....oder dec...usw.

debug a
In den Compiler-Optionen-> ASM-Unterstützung einschalten
- alles was ich hier im Forum sage/schreibe ist lediglich meine Meinung und keine Tatsachenbehauptung
- unkommentierter Quellcode = unqualifizierter Müll
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

Re: Pointer in Prozeduren

Beitrag von Chimorin »

Es geht auch einfacher ;)

Code: Alles auswählen

EnableExplicit


Global.i var1


Procedure Rechner(zahl.i)
  var1 = var1 + zahl
EndProcedure


Rechner(3)
Debug var1
End
Funktioniert natürlich nur mit einer GLOBALEN Variable, da diese programmweit benutzt werden kann (Except: Protected,...).
Bild

- formerly known as Bananenfreak -
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: Pointer in Prozeduren

Beitrag von helpy »

Warum überhaupt eine Procedure verwenden?
In diesem Fall reicht doch wirklich ein Makro:

Code: Alles auswählen

Macro INC( variable, value=1 )
	variable + value
EndMacro
Warum überhaupt ein Makro oder eine Procedure?

Code: Alles auswählen

  variable + value
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Schranz0r
Beiträge: 22
Registriert: 11.09.2013 19:09

Re: Pointer in Prozeduren

Beitrag von Schranz0r »

Die ASM-Version ist gut :)
Auch dir DANKE!
Antworten