06-19-2022, 04:15 PM
Why is the transfer of the sentence "By value" unsuccessful?
Row 48 -Satztest3 (satz3())- generates a compiler error.
Row 48 -Satztest3 (satz3())- generates a compiler error.
Code: (Select All)
'Unterschiede bei Uebergabe einer Variablen, Zahl und String
'Call by reference (automatisch) gibt die Adresse der Variablen
'Variable kann veraendert werden.
'Call by value (Klammerung der Variablen) standardmaessig,
'wird eine Kopie uebergeben; keine Aenderung
Option _Explicit
Dim x As Integer
Dim satz As String
Dim satz2(2) As String, satz3(2) As String
Print
Print "x = 1 - Satz ist: Hallo, Fans + von QB64": Print
Print "Variable by reference: x + 1 = 2"
x = 1
Zahlentest x
Print "Wert von x nach Verlassen der Subroutine:"; x
Print
Print "Variable by value: Keine Veraenderung"
x = 1
Zahlentest (x)
Print "Wert von x nach Verlassen der Subroutine:"; x
Print
Print "String Variable by reference:"
satz = "Hallo, Fans"
Satztest satz 'Hier sollte die Adresse uebergeben werden.
Print "Wert des Strings satz nach Verlassen der Subroutine: "; satz
'Der auszugebende Satz muesste hier lauten: von QB64!
Print
Print "String variable by value:"
satz = "Hallo, Fans"
Satztest (satz) 'Hier wird eine Kopie erzeugt, und "von QB64" wird angehaengt
Print "Wert des Strings satz nach Verlassen der Subroutine: "; satz
Print
satz2() = "Sag niemals nie!"
Satztest2 satz2()
Print "Wert des Feldes von satz2 nach der Subroutine: ", satz2()
Print
satz3() = "Sag niemals nie!"
'Satztest3 (satz3()) '!! Damit hat der Compiler Probleme
Print "Wert des Feldes von satz3 nach der Subroutine: ", satz3()
End
Sub Zahlentest (y As Integer)
y = y + 1
End Sub
Sub Satztest (b As String)
b = b + " von QB64!"
End Sub
Sub Satztest2 (feld() As String)
feld() = "Hallo, Donald Duck!"
End Sub
Sub Satztest3 (feld() As String)
feld() = feld() + "Donald Duck"
End Sub
Quote:internal\c\c_compiler\bin\c++.exe -w -DGLEW_STATIC -DFREEGLUT_STATIC -DDEPENDENCY_NO_SOCKETS -DDEPENDENCY_NO_PRINTER -DDEPENDENCY_NO_ICON -DDEPENDENCY_NO_SCREENIMAGE internal\c/qbx.cpp -c -o internal\c/qbx.o
In file included from internal\c/qbx.cpp:2514:
internal\c/..\\temp\\main.txt: In function 'void QBMAIN(void*)':
internal\c/..\\temp\\main.txt:235:16: error: cannot convert 'qbs*' to 'long long int*'
SUB_SATZTEST3(((qbs*)(((uint64*)(__ARRAY_STRING_SATZ3[0]))[0])));
~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from internal\c/qbx.cpp:1264:
internal\c/..\\temp\\regsf.txt:4:29: note: initializing argument 1 of 'void SUB_SATZTEST3(long long int*)'
void SUB_SATZTEST3(ptrszint*_SUB_SATZTEST3_ARRAY_STRING_FELD);
mingw32-make: *** [Makefile:337: internal\c/qbx.o] Error 1