Seite 1 von 1
[Falschverwendung] Fehler bei der Proceduren-Rückgabe
Verfasst: 23.07.2006 06:11
von Leonhard
Code: Alles auswählen
Procedure Proc()
;ProcedureReturn @"-String-" ;<-- damit funktioniert das.
Protected String$ = "-String-" ;<-- hiermit nur, wenn dich die länge des Strings angebe
ProcedureReturn @String$
EndProcedure
Debug PeekS(Proc())
Warum funtioniert das nicht???
Es sollte doch ein Pointer auf den String zurückgegeben werden oder?
Verfasst: 23.07.2006 09:09
von Kaeru Gaman
gute frage.
du hast die variable als
Protected declariert, aber nicht als
Static.
deshalb wird sie nach verlassen der procedure gelöscht.
außerdem solltest du den Typ der Procedurenrückgabe deklarieren.
Code: Alles auswählen
Procedure.l Proc()
Static String$ = "-String-"
ProcedureReturn @String$
EndProcedure
Debug PeekS(Proc())
PS:
danke für den Frühsport. bringt die grauen Zellen in trab.

Verfasst: 24.07.2006 05:50
von Leonhard
Kaeru Gaman hat geschrieben:außerdem solltest du den Typ der Procedurenrückgabe deklarieren.
Gibt man den Procedure-Type bei Pointern überhaupt an?
und außerdem wird dieser Type nicht automatisch auf LONG gesetzt (den Standart-Wert)?
Verfasst: 24.07.2006 06:46
von DarkDragon
Leonhard hat geschrieben:Kaeru Gaman hat geschrieben:außerdem solltest du den Typ der Procedurenrückgabe deklarieren.
Gibt man den Procedure-Type bei Pointern überhaupt an?
und außerdem wird dieser Type nicht automatisch auf LONG gesetzt (den Standart-Wert)?
Mit DefType/Define kann man den Standard-Datentyp ändern, wenn man keine Parameter angibt. Anstatt Protected hätte ich Define verwendet.