Zeiger-Variable in Prozedur verändern

Anfängerfragen zum Programmieren mit PureBasic.
wb2k
Beiträge: 1
Registriert: 06.12.2013 02:27

Zeiger-Variable in Prozedur verändern

Beitrag von wb2k »

Hallo zusammen,

ich will in einer Unteroutine einen String verändern, den ich als Zeiger übergebe.
Das hat früher prima funktioniert, aber mit der aktuellen PureBasic-Version heißt
es "Native Typen können nicht mit Zeigern verwendet werden"

Aber wie soll ich sonst einen Zeiger übergeben?

Danke,
Bine

Code: Alles auswählen

Procedure bla(*Dir.s)
  *Dir + "456"
EndProcedure

var.s = "123"
bla(@var)

Debug var
es_91
Beiträge: 410
Registriert: 25.01.2011 04:48

Re: Zeiger-Variable in Prozedur verändern

Beitrag von es_91 »

so ...

Code: Alles auswählen

Procedure bla(*Dir)
  PokeS(*Dir + Len(PeekS(*Dir)), "456")
EndProcedure

var.s = "123"
bla(@var)

Debug var
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Zeiger-Variable in Prozedur verändern

Beitrag von STARGÅTE »

Nein nein nein, bitte nicht so!

Der Speicher hinter der 123 ist nicht reserviert, und du handelst dir damit eine riesen Fehlerquelle ein.
Wenn du den Purifier einschaltest, meckert er auch!

Bitte so:

Code: Alles auswählen


Procedure bla(*Dir.String)
  *Dir\s + "456"
EndProcedure

Define var.String\s = "123"
bla(@var)

Debug var\s
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten