Нужно вернуть произвольное значение из функции
Участников: 3
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Нужно вернуть произвольное значение из функции
Нужно вернуть произвольное значение из функции.
Посмотрите код. Должно вернуться сначала строка
"Hello, world"
а потом число
"666"
Но компилятор ругаеться
any.bas(10) error 25: Invalid data types in 'function test( a as ubyte ) as any'
any.bas(13) warning 4(1): Suspicious pointer assignment
any.bas(16) error 159: Invalid assignment/conversion in 'function = method2()'
Посмотрите код. Должно вернуться сначала строка
"Hello, world"
а потом число
"666"
Но компилятор ругаеться
any.bas(10) error 25: Invalid data types in 'function test( a as ubyte ) as any'
any.bas(13) warning 4(1): Suspicious pointer assignment
any.bas(16) error 159: Invalid assignment/conversion in 'function = method2()'
- Код:
function method1() as integer
function = 666
end function
function method2() as string
function = "hello!"
end function
function test( a as ubyte ) as any
select case a
case 1
function = method1()
case 2
function = method2()
end select
end function
print test(2)
print test(1)
sleep
Re: Нужно вернуть произвольное значение из функции
если не ошибаюсть, то any можно использовать только для указктелей, тка что лучше тут возвращать не само значение, а указатель на него (вот только нипонимаю как ты буш угадывать какой тип на выходе получается)
Re: Нужно вернуть произвольное значение из функции
Ну допустим с типом на выходе я разберусь. Хотя конечно синтаксис получиться не очень симпатичный. Но его всегда можно разукрасить макросами.
А вот с функциями
Разве так будет работать?
А вот с функциями
Разве так будет работать?
- Код:
function = @method1()
function = @method2()
Re: Нужно вернуть произвольное значение из функции
я имею ввиду
function test( a as ubyte ) as any ptr
select case a
case 1
function = @method1()
case 2
function = @method2()
end select
end function
function test( a as ubyte ) as any ptr
select case a
case 1
function = @method1()
case 2
function = @method2()
end select
end function
Re: Нужно вернуть произвольное значение из функции
Если я не ошибаюсь, то это уже возвращаеться указатель на функцию. А оно мне нафиг не нужно!
Помниться уже задавал подобный вопрос, но мы разрулили другим способом.
И так, как получить указатель на значение, которое возвращает функция?
Потому что моя прога возвращает мне очень интересный результат.
А на строчке её вообще вышебло.
Помниться уже задавал подобный вопрос, но мы разрулили другим способом.
И так, как получить указатель на значение, которое возвращает функция?
Потому что моя прога возвращает мне очень интересный результат.
А на строчке её вообще вышебло.
- Код:
function method1() as integer
function = 666
end function
function method2() as string
function = "hello!"
end function
function test( a as integer ) as any ptr
select case a
case 1
function = @method1()
case 2
function = @method2()
end select
end function
function TestAsString( i as integer ) as string
dim s as string ptr = test(i)
function = *s
end function
function TestAsInteger( i as integer ) as integer
dim s as integer ptr = test(i)
function = *s
end function
print TestAsInteger(1)
' print TestAsString( 2)
sleep
Re: Нужно вернуть произвольное значение из функции
Указатели на функцию? Это натолкнуло меня на мысль. Но я кажись не понял, как их делать.
Написал код, но компилер ругаеться
any.bas(10) error 63: Expected explicit result type in 'function test( a as integer ) as function'
any.bas(11) error 63: Expected explicit result type in 'dim r as function'
any.bas(16) warning 4(1): Suspicious pointer assignment
any.bas(22) error 63: Expected explicit result type, found '=' in 'dim f as function = test(i)'
any.bas(23) error 159: Invalid assignment/conversion in 'function = f()'
any.bas(27) error 63: Expected explicit result type, found '=' in 'dim f as function = test(i)'
Написал код, но компилер ругаеться
any.bas(10) error 63: Expected explicit result type in 'function test( a as integer ) as function'
any.bas(11) error 63: Expected explicit result type in 'dim r as function'
any.bas(16) warning 4(1): Suspicious pointer assignment
any.bas(22) error 63: Expected explicit result type, found '=' in 'dim f as function = test(i)'
any.bas(23) error 159: Invalid assignment/conversion in 'function = f()'
any.bas(27) error 63: Expected explicit result type, found '=' in 'dim f as function = test(i)'
- Код:
function method1() as integer
function = 666
end function
function method2() as string
function = "hello!"
end function
function test( a as integer ) as function
dim r as function
select case a
case 1
r = @method1
case 2
r = @method2
end select
function = r
end function
function TestAsString( i as integer ) as string
dim f as function = test(i)
function = f()
end function
function TestAsInteger( i as integer ) as integer
dim f as function = test(i)
function = f()
end function
print TestAsInteger(1)
print TestAsString( 2)
sleep
Re: Нужно вернуть произвольное значение из функции
блин, точно, чет неподумал, тогда наверно придется использовать для каждой функции временную переменную или сразу возвращать указатель
Re: Нужно вернуть произвольное значение из функции
- Код:
function test( a as integer ) as function
dim r as function
http://freebasic.ru/tux/wikka/KeyPgDylibsymbol
Re: Нужно вернуть произвольное значение из функции
Это ты не то смотришь. Вот
http://freebasic.ru/tux/wikka/ProPgProcedurePointers
Но у меня почему-то не работает.
А dylib... это чтобы динамически dll подгружать.
http://freebasic.ru/tux/wikka/ProPgProcedurePointers
Но у меня почему-то не работает.
А dylib... это чтобы динамически dll подгружать.
Re: Нужно вернуть произвольное значение из функции
я имел ввиду строчку
Dim AddNumbers As Function ( ByVal operand1 As Integer, ByVal operand2 As Integer ) As Integer
как пример создания функции по ее указателю
Dim AddNumbers As Function ( ByVal operand1 As Integer, ByVal operand2 As Integer ) As Integer
как пример создания функции по ее указателю
Re: Нужно вернуть произвольное значение из функции
Есть! Я это сделал!
- Код:
function method1() as integer
function = 666
end function
function method2() as string
function = "hello!"
end function
function test( a as integer ) as any ptr
select case a
case 1
function = @method1
case 2
function = @method2
end select
end function
function TestAsString( i as integer ) as string
dim r as function() as string = test(i)
function = r()
end function
function TestAsInteger( i as integer ) as integer
dim r as function() as integer = test(i)
function = r()
end function
print TestAsInteger(1)
print TestAsString( 2)
sleep
Re: Нужно вернуть произвольное значение из функции
У меня подобная ошибка и я не знаю как же её исправить:
- Код:
Dim As PFNglCreateShaderPROC glCreateShader
glCreateShader=wglGetProcAddress("glCreateShader")
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: Нужно вернуть произвольное значение из функции
Это не ошибка, а предупреждение. Типа: "будь внимателен ты мог запутаться с указателем".
Попробуй помудрить с приведением к определённому типу с помощью cast.
Попробуй помудрить с приведением к определённому типу с помощью cast.
FreeBasic :: Программирование :: Общее
Страница 1 из 1
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|