Hoffe es kann mir jemand erklären wie ich einen String ByReference an eine Prozedur übergeben kann - ich möchte einfach den geänderten String dann nach der Rückkehr aus der Prozedur in der Originalen Variable haben (und eben kein ProcedureReturn dafür verwenden).
Meine Versucht über Pointer das gewünschte zu erreichen scheitern leider alle - auch nach Lektüre von http://forums.purebasic.com/german/view ... p?p=247032 bin ich nicht wirklich schlauer.
Hier mein kleines Beispiel:
Code: Alles auswählen
Procedure test_str(*sTest.String)
Debug "P-Adresse Proc1: >"+Str(*sTest)+"<"
Debug "P-Adresse Proc2: >"+Str(@*sTest\s)+"<"
Debug "P-TEST:"+ *sTest\s
*sTest\s="TEST225555555555555555555555555555555552"
Debug "P-Adresse Proc1: >"+Str(*sTest)+"<"
Debug "P-Adresse Proc2: >"+Str(@*sTest\s)+"<"
Debug "P-TEST2:"+ *sTest\s
EndProcedure
sText.s
*Text = @sText
*TestString2.String=@*Text
Debug "TEST_STR Anfang: >"+*TestString2\s+"<"
Debug "Adresse: >"+Str(*TestString2)+"<"
Debug "Adresse 2: >"+Str(@*TestString2\s)+"<"
*TestString2\s="123456789"
Debug ""
Debug "TEST_STR Mitte: >"+*TestString2\s+"<"
Debug "Adresse: >"+Str(*TestString2)+"<"
Debug "Adresse 2: >"+Str(@*TestString2\s)+"<"
Debug ""
Debug "Prozedur"
test_str(*TestString2)
Debug "Prozedur Ende"
Debug ""
Debug "TEST_STR Ende: >"+*TestString2\s+"<"
Debug "Adresse: >"+Str(*TestString2)+"<"
Debug "Adresse 2: >"+Str(@*TestString2\s)+"<"
Debug ""
Debug "TEST_STR2 GANZ Ende: >"+sText+"<"
Debug "Adresse: >"+Str(@sText)+"<"
Meine erst Idee war eigentlich die hier:
Code: Alles auswählen
Procedure test_str(*sTest.String)
Debug "P-Adresse Proc1: >"+Str(*sTest)+"<"
Debug "P-Adresse Proc2: >"+Str(@*sTest\s)+"<"
Debug "P-TEST:"+ *sTest\s
*sTest\s="TEST225555555555555555555555555555555552"
Debug "P-Adresse Proc1: >"+Str(*sTest)+"<"
Debug "P-Adresse Proc2: >"+Str(@*sTest\s)+"<"
Debug "P-TEST2:"+ *sTest\s
EndProcedure
sText.s
*Text = @sText
*TestString2.String=@*Text
Debug "TEST_STR Anfang: >"+sText+"<"
Debug "Adresse: >"+Str(@sText)+"<"
*Text=@sText
Debug "Adresse 2: >"+Str(@*Text)+"<"
sText="123456789"
Debug ""
Debug "TEST_STR Mitte: >"+sText+"<"
Debug "Adresse: >"+Str(@sText)+"<"
*Text=@sText
Debug "Adresse 2: >"+Str(@*Text)+"<"
Debug ""
Debug "Prozedur"
test_str(@sText)
Debug "Prozedur Ende"
Debug ""
Debug "TEST_STR Ende: >"+sText+"<"
Debug "Adresse: >"+Str(@sText)+"<"
*Text=@sText
Debug "Adresse 2: >"+Str(@*Text)+"<"

Kann zwar die Prozedur etwas verändern
Code: Alles auswählen
Procedure test_str(*sTest.String)
Debug "P-Adresse Proc1: >"+Str(*sTest)+"<"
Debug "P-Adresse Proc2: >"+Str(@*sTest\s)+"<"
*Test.String=@*sTest
Debug "P-TEST:"+ *Test\s
*Test\s="TEST225555555555555555555555555555555552"
Debug "P-Adresse Proc1: >"+Str(*sTest)+"<"
Debug "P-Adresse Proc2: >"+Str(@*sTest\s)+"<"
Debug "P-TEST2:"+ *Test\s
Wie gehts richtig? Stehe da irgendwie auf der Leitung!
Danke!