PureBasic - урок, указатели

Повторете ; Основен цикъл на програмата Event= WaitWindowEvent () ; Вземете идентификатора на събитието в програмата До събитие= #PB_Event_CloseWindow ; Прекъснете цикъла, ако трябва да затворите прозорец

Използвайки указатели, можете да върнете повече от един резултат от процедура, без да използвате глобални променливи. Следващият пример демонстрира това.

Тестова процедура ( *var1 , *var2 ) PokeL ( *var1 , 12345678) ; Записване на число в паметта PokeS ( *var2 , "Низ от текст" ) ; Запишете текст в паметта EndProcedure

var.l=0 Text.s= Интервал (100) ; Запазване на данни в низова променлива чрез запис на 100 интервала Тест ( @var , @Text ); Извикваме процедурата и й предаваме указатели към променливите var и Text ; Показваме данни от променливи в прозореца за отстраняване на грешки. Променлива за отстраняване на грешки Текст за отстраняване на грешки

При инициализиране на променливи числото 0 се записва във var и 100 интервала се записват в низовата променлива Text, т.е. паметта е запазена. След това се извиква процедурата Test, на която се подават указатели към тези променливи. Процедурата записва данни в тези променливи и работи с тях като с памет. И в края на програмата, използвайки оператора Debug, прозорецът за отстраняване на грешки показва данните от тези променливи.

Но е много по-удобно да работите със структури, защото не е необходимо да използвате функции за достъп до паметта.

Структура Proba x.l y.l Text.s EndStructure

test.Proba ; Декларация на структурата

Тестова процедура ( *var . Proba ) *var \ x =1 *var \ y =2 *var \ Text = "Текст" EndProcedure

Тест ( @test ); Извикваме процедурата и й предаваме указател към структурата ; Показване на данни от структурата Тест за отстраняване на грешки \ x Тест за отстраняване на грешки \ y Тест за отстраняване на грешки \ Текст в прозореца за отстраняване на грешки

Следващият пример показва как можете да поставите икона в изпълним файл и да я използвате в програма.

; Отворете прозорец OpenWindow(1,0,0,80,80,"", #PB_Window_MinimizeGadget #PB_Window_ScreenCentered ) CreateGadgetList ( WindowID (1)) ; Създайте нов списък с притурки

CatchImage (1, ?Metka1 , ?Metka2 - ?Metka1 ) ; Зареждане на изображение от паметта ImageGadget (2,40,20,32,32, ImageID (1) ) ; Показвайки го

Повторете ; Начало на главния цикъл Repeat-Until Event= WaitWindowEvent () ; Вземете текущото събитие ID ; Прекъсване на цикъла при опит за затваряне на прозореца (щракване върху кръстчето в заглавието на прозореца) До събитие= #PB_Event_CloseWindow Край ; Завършване на програмата

DataSection Metka1 : IncludeBinary "Icon.ico" Metka2 : EndDataSection

Компилираната програма и нейният изходен код могат да бъдат изтеглени тук.