Четверг, 08.12.2022, 12:42
PureBasic - кроссплатформенный язык программирования
Главная Форум Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
PureBasic - форум » Вопросы по PureBasic (Windows) » Вопросы новичков » ProcedureReturn *element.structure???
ProcedureReturn *element.structure???
CrozzyДата: Вторник, 10.01.2012, 22:15 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 1
Статус: Offline
Чует мое сердце, что вопрос детский, но все ж...

Как с помощью процедуры возвратить указатель на структуру?

Structure StrName
bla.s
blabla.f
EndStruncture

Procedure.??? ProcedureName(argument1.f, .....)
ProcedureReturn ?????
EndProcedure
 
filsДата: Пятница, 13.01.2012, 12:58 | Сообщение # 2
Сержант
Группа: Администраторы
Сообщений: 24
Статус: Offline
Это можно сделать как минимум, двумя способами.

Первый способ заключается в выделении памяти под структуру и ее инициализацию.
Code
Structure StrName   
    bla.s   
    blabla.f   
EndStructure   

Procedure.i ProcedureName(argument1.f)
      
    *Struct.StrName=AllocateMemory(SizeOf(StrName))
    If *Struct
      InitializeStructure(*Struct, StrName)
      *Struct\bla = "Текст"
      *Struct\blabla = argument1
    EndIf
      
    ProcedureReturn *Struct
EndProcedure

*MyStruct.StrName = ProcedureName(0.25)

If *MyStruct
    Debug *MyStruct\bla
    Debug *MyStruct\blabla
      
    ClearStructure(*MyStruct, StrName)
    FreeMemory(*MyStruct)
EndIf
Когда структура больше не нужна, ее нужно очистить функцией ClearStructure() и освободить память, занимаемую структурой, функцией FreeMemory().

Второй способ заключается не в возврате указателя структуры, а его передаче в процедуру.
Code
Structure StrName   
    bla.s   
    blabla.f   
EndStructure   

Procedure.i ProcedureName(argument1.f, *Struct.StrName)
      
    *Struct\bla = "Текст"
    *Struct\blabla = argument1
      
EndProcedure

MyStruct.StrName

ProcedureName(0.25, @MyStruct)

Debug MyStruct\bla
Debug MyStruct\blabla
 
PureBasic - форум » Вопросы по PureBasic (Windows) » Вопросы новичков » ProcedureReturn *element.structure???
  • Страница 1 из 1
  • 1
Поиск:

Копировать материалы сайта без разрешения автора, ЗАПРЕЩЕНО!

Сделать бесплатный сайт с uCoz