ProcedureReturn
- Pure_Beginner
- Beiträge: 247
- Registriert: 29.09.2011 21:49
- Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
- Wohnort: Brühl
ProcedureReturn
Hallo zusammen,
vor längerer Zeit habe ich einen Beiterag gelesen in dem erklärt wurde, wie man mehrere Parameter aus einer Procedure heraus übergeben kann.
Mit ProcedureReturn ist leider nur ein Parameter möglich.
Leider finde ich den Beitrag nicht mehr, weiss einer von euch wo ich noch suchen könnte.
War so glaube ich was mit Zeigern ?
Grüße
Christian
vor längerer Zeit habe ich einen Beiterag gelesen in dem erklärt wurde, wie man mehrere Parameter aus einer Procedure heraus übergeben kann.
Mit ProcedureReturn ist leider nur ein Parameter möglich.
Leider finde ich den Beitrag nicht mehr, weiss einer von euch wo ich noch suchen könnte.
War so glaube ich was mit Zeigern ?
Grüße
Christian
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
- Pure_Beginner
- Beiträge: 247
- Registriert: 29.09.2011 21:49
- Computerausstattung: i7 9XX 4000 MHZ / 12 GB RAM / Win 8.1 64Bit / Win 7 64Bit
- Wohnort: Brühl
Re: ProcedureReturn
Hallo RSBasic,
genau das hatte ich gesucht,
wie gehst du bei der Suche vor ?
besten Dank für deine Mühe
genau das hatte ich gesucht,
wie gehst du bei der Suche vor ?
besten Dank für deine Mühe
PureBasic 5.30 Beta 3 (X64/X86) | Win 8 (64) Pro / Win 7 (64) Pro | Es ist der Hobbyist[/col
Re: ProcedureReturn
Ich habe einfach nach "ProcedureReturn mehrere" gesucht. 

Re: ProcedureReturn
Habe diese Woche endlich mal die Vollversion von PureBasic gekauft und wünsche mir sehr ein Update von ProcedureReturn.
Die Einschränkung von ProcedureReturn, das nur ein Parameter zurück gegeben werden kann nervt wirklich sehr.
Auch würde der Code viel leserlicher, müsste man nicht immer mit "Tricks" arbeiten um auf andere Parameter zurück zu greifen.
Grüße!
Die Einschränkung von ProcedureReturn, das nur ein Parameter zurück gegeben werden kann nervt wirklich sehr.
Auch würde der Code viel leserlicher, müsste man nicht immer mit "Tricks" arbeiten um auf andere Parameter zurück zu greifen.
Grüße!
- 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: ProcedureReturn
Das wird aber in allen nativen Sprachen so gehändelt, es wird immer nur ein Wert auf EAX oder RAX gelegtMicha122 hat geschrieben:Die Einschränkung von ProcedureReturn, das nur ein Parameter zurück gegeben werden kann nervt wirklich sehr.

Sollte es woanders scheinbar anders gehen, so sind das eher interpretierte Sprachen, oder es macht nur
den Anschein es könnte mehrere Werte zurückgeben.
Der "Trick" mit pointer ist standard, auch wenn es manchmal ander heißt, ansonsten wird in den parametern
ByRef, also Adresse zur Variable zurückgegeben, sind auch genug Beispiele hier im Forum.
Das siehste auch, wenn Du Dir mal die WinAPI anschaust, da werden auch Strukturen oder Buffer erwartet,
um in diesen mehr als einen Wert zurückgeben zu können.
Ich denke mal nicht, das sich Dein warten auf ein entsprechendes Update rentieren wird.
Gruß
Thomas
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

- NicTheQuick
- Ein Admin
- Beiträge: 8809
- 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
Re: ProcedureReturn
Anstatt irgendwie mehrere werte zurück geben zu können, wäre es aber schön, wenn man als Rückgabetyp auch eine Structure angeben könnte. Immerhin wird das Kopieren von strukturierten Variablen ja auch unterstützt. Dann wäre es doch nur ein kleiner Schritt das auch für Procedures zu erlauben.
Code: Alles auswählen
Structure myStructure
a.i
b.s
c.f
EndStructure
Define var.myStructure
var\a = 1
var\b = "Hello"
var\c = 123.456
Define target.myStructure
target = var ;das Kopieren von strukturierten Variablen geht
Debug "target = " + target\a + ", " + target\b + ", " + target\c
Procedure.myStructure getTest()
Protected foo.myStructure
foo\a = 2
foo\b = "World"
foo\c = 654.321
ProcedureReturn foo
EndProcedure
target = getTest() ;aber strukturierte Variablen als Rückgabewert geht nicht
Debug "target = " + target\a + ", " + target\b + ", " + target\c
Re: ProcedureReturn
@ts-soft
@NicTheQuick
Deine Idee finde ich auch nicht schlecht!
Gruß, Michael
Ich warte darauf ja nicht, aber nerven tut diese "Einschränkung" trotzdem.Ich denke mal nicht, das sich Dein warten auf ein entsprechendes Update rentieren wird.
Das heisst ja nicht das man das immer so beibehalten muss. Oder spielt da die Kompatiblität zu anderen Sprachen eine Rolle?Das wird aber in allen nativen Sprachen so gehändelt
@NicTheQuick
Deine Idee finde ich auch nicht schlecht!
Gruß, Michael
- 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: ProcedureReturn
Jede DLL, jede Funktion macht es so, denkst Du nicht, es könnte daran liegen, das es technisch garMicha122 hat geschrieben:Das heisst ja nicht das man das immer so beibehalten muss. Oder spielt da die Kompatiblität zu anderen Sprachen eine Rolle?Das wird aber in allen nativen Sprachen so gehändelt
nicht anders geht?
Es geht nur mit "Tricksen", PB hat keine besonderen Funktionen zum "Tricksen", aber die finde ich auch
unnötig.
Das Beispiel von NicTheQuick funktioniert ja, wenn man es zum Beispiel so macht:
Code: Alles auswählen
Structure myStructure
a.i
b.s
c.f
EndStructure
Procedure.i getTest()
Protected *foo.myStructure = AllocateMemory(SizeOf(myStructure))
*foo\a = 2
*foo\b = "World"
*foo\c = 654.321
ProcedureReturn *foo
EndProcedure
*target.myStructure = getTest()
Debug *target\a
Debug *target\b
Debug *target\c
FreeMemory(*target)

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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: ProcedureReturn
@ts-soft
, ich wusste nicht, das ich das funtioniern von dll´s kennen muss um im Anfängerforum eine Frage zu stellen.
Dein Code- Beispiel gefällt mir sehr gut und werde mal versuchen das so anzuwenden. Ist zumindest einigermassen leserlich und nachvollziebar.
Grüße!
EntschuldigungJede DLL, jede Funktion macht es so, denkst Du nicht, es könnte daran liegen, das es technisch gar
nicht anders geht?


Dein Code- Beispiel gefällt mir sehr gut und werde mal versuchen das so anzuwenden. Ist zumindest einigermassen leserlich und nachvollziebar.

Grüße!
Barcodes for PureBasic - http://micha122.bplaced.net/