Übergabewerte in Prozeduren ändern *gelöst*

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Übergabewerte in Prozeduren ändern *gelöst*

Beitrag von Regenduft »

Guten Morgähn,

Ich habe mal mit den Übergabewerten von Prozeduren herumgespielt und herausgefunden, dass diese IN der Prozedur verändert werden können.
Aber: Ist das sicher? Ist das Pfusch?

Hier ein kleines Beispiel, damit Ihr wisst wovon ich rede:

Code: Alles auswählen

Procedure Test(a$)
  Debug a$
  a$ = "Aboriginal! (vermutlich mit Digeridoo)"
  Debug a$
EndProcedure

Test("Original!")
Zuletzt geändert von Regenduft am 08.10.2008 03:21, insgesamt 1-mal geändert.
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

klar ist das sicher ...

a$ ist in der Procedure wie eine "eigene" Variable und hat nix mehr mit irgendetwas außerhalb der procedure zu tun.

Hier ein Beispiel:

Code: Alles auswählen

Procedure Test(a$) 
 Debug "INNEN: "+a$
 a$ = "Aboriginal! (vermutlich mit Digeridoo)" 
 Debug "INNEN: "+a$
EndProcedure 

a$ = "Original!"
Test(a$)
Debug a$
was du in der Procedure mit a$ machst ist genauso normal wie im Hauptprogramm, nur eben unbeeinflusst von außen.
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
Benutzeravatar
Regenduft
Beiträge: 574
Registriert: 25.03.2008 15:07
Wohnort: THE LÄÄÄND!

Beitrag von Regenduft »

Danke für die schnelle Antwort!

Da bin ich ja beruhigt :wink:
Hatte die Sorge, dass die Übergabe "fixed" stattfindet und ich dann irgendwelche Speicherbereiche überschreibe.
PureBasic 5.73 LTE x86/x64 | Windows 7 (x64)
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

Beitrag von ts-soft »

Regenduft hat geschrieben:Danke für die schnelle Antwort!

Da bin ich ja beruhigt :wink:
Hatte die Sorge, dass die Übergabe "fixed" stattfindet und ich dann irgendwelche Speicherbereiche überschreibe.
fixed besser bekannt als ByRef, in PB nur als Pointer möglich.

PB benutzt im allgemeinen ByVal
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
Antworten