Mehrere Rückgabewerte von Procedur

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Lars hat geschrieben:Was hier wichtig ist: Die Variable result ist hier die variable einer Procedur
und wird damit im Prinzip nach beenden der Procedur gelöscht. Direkt
nach Beenden kannst du noch darauf zugreifen, wenn du aber da mal ein
Delay(2000) zwischen Procedure Call und Debug einsetzt, siehst du, dass
die Variable schon gelöscht wurde.
Das ist absolut nicht sicher und auch nicht korrekt.

Wenn Du die Struktur zurückgeben willst, dann mußt Du
dafür extra Speicher reservieren. Also in der Prozedur
ein AllocateMemory( sizeof(Struktur) ). Struktur über
Pointer füllen und Diesen zurückgeben.
Wenn im Hauptprogramm nicht mehr gebraucht, dann mit
FreeMemory wieder freigeben.

Mit den lokalen Variablen kannst Du außerhalb der Prozedur
nicht mehr offiziell rechnen, auch wenn es bei Dir im Moment
durch testen geht.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Benutzeravatar
Lars
Beiträge: 347
Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Kontaktdaten:

Beitrag von Lars »

Danilo hat geschrieben:Das ist absolut nicht sicher und auch nicht korrekt.
Dass das nicht die feine englische Art ist, ist mir im Grunde klar und du
hast natürlich Recht, wenn du mit Blick darauf, dass man sauber
programmiert, davon abrätst. Funktionieren tut es trotzdem und darauf
wollte ich hinweisen :wink:
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Mehrere Rückgabewerte von Procedur

Beitrag von Kaeru Gaman »

mal ne dumme frage:

wo ist der effektive unterschied, zwischen

1)
einer pointer-übergabe oder
allociertem speicher

und
2)
nutzung von Globals?

Maurizio555 hat geschrieben:... und man vermeidet Global-Variabeln (man sollte so wenig davon benutzen wie nur möglich).
das ist doch ein dogma.

gibt es dafür auch argumente?
NetSlayer
Beiträge: 117
Registriert: 21.09.2004 21:18
Kontaktdaten:

Re: Mehrere Rückgabewerte von Procedur

Beitrag von NetSlayer »

Kaeru Gaman hat geschrieben:wo ist der effektive unterschied, zwischen

1)
einer pointer-übergabe oder
allociertem speicher

und
2)
nutzung von Globals?
Ich benutze ersteres um einer DLL Daten zu übergeben. Die interessiert es nämlich herzlich wenig, ob ich irgendwas global deklariere...
...MfG, NetSlayer
"No, I ain't got a problem. It's you with the problem!"
http://netslayer.scpn.net
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

bei ner DLL ein argument, aber nicht für interne procedures.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten