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. :allright:

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.