PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » синтаксическая ошибка ?


синтаксическая ошибка ?

Сообщений 1 страница 5 из 5

1

Код:
Procedure.s GUIDtoStr(var.GUID)
	Protected s1.s{8}=RSet(Hex(var\Data1),8,"0")
	Protected w1.s{4}=RSet(Hex(var\Data2),4,"0")
	Protected w2.s{4}=RSet(Hex(var\Data3),4,"0")
	Protected b1.s{2}=RSet(Hex(var\Data4[0]),2,"0")
	Protected b2.s{2}=RSet(Hex(var\Data4[1]),2,"0")
	Protected b3.s{2}=RSet(Hex(var\Data4[2]),2,"0")
	Protected b4.s{2}=RSet(Hex(var\Data4[3]),2,"0")
	Protected b5.s{2}=RSet(Hex(var\Data4[4]),2,"0")
	Protected b6.s{2}=RSet(Hex(var\Data4[5]),2,"0")
	Protected b7.s{2}=RSet(Hex(var\Data4[6]),2,"0")
	Protected b8.s{2}=RSet(Hex(var\Data4[7]),2,"0")
	
	ProcedureReturn s1+"-"+w1+"-"+w2+"-"+b1+b2+"-"+b3+b4+b5+b6+b7+b8
EndProcedure

ругается на первую строку
тип GUID знает т.к. подсказывает название полей
но если убрать GUID - не ругается на первую строку, ругается дальше что var - не структура

на вот это пробное не ругается совсем

Код:
Procedure.s GUIDtoStr(var)
	Protected s1.s{8}=RSet(Hex(Data1),8,"0")
	Protected w1.s{4}=RSet(Hex(Data2),4,"0")
	Protected w2.s{4}=RSet(Hex(Data3),4,"0")
	Protected b1.s{2}=RSet(Hex(Data4),2,"0")
	Protected b2.s{2}=RSet(Hex(Data4),2,"0")
	Protected b3.s{2}=RSet(Hex(Data4),2,"0")
	Protected b4.s{2}=RSet(Hex(Data4),2,"0")
	Protected b5.s{2}=RSet(Hex(Data4),2,"0")
	Protected b6.s{2}=RSet(Hex(Data4),2,"0")
	Protected b7.s{2}=RSet(Hex(Data4),2,"0")
	Protected b8.s{2}=RSet(Hex(Data4),2,"0")
	
	ProcedureReturn s1+"-"+w1+"-"+w2+"-"+b1+b2+"-"+b3+b4+b5+b6+b7+b8
EndProcedure

В чем шиза?

0

2

Структуру нужно передавать по ссылке (указателю), а не по значению.

Код:
Procedure.s GUIDtoStr(*var.GUID)
  Protected s1.s{8}=RSet(Hex(*var\Data1),8,"0")
  Protected w1.s{4}=RSet(Hex(*var\Data2),4,"0")
  Protected w2.s{4}=RSet(Hex(*var\Data3),4,"0")
  Protected b1.s{2}=RSet(Hex(*var\Data4[0]),2,"0")
  Protected b2.s{2}=RSet(Hex(*var\Data4[1]),2,"0")
  Protected b3.s{2}=RSet(Hex(*var\Data4[2]),2,"0")
  Protected b4.s{2}=RSet(Hex(*var\Data4[3]),2,"0")
  Protected b5.s{2}=RSet(Hex(*var\Data4[4]),2,"0")
  Protected b6.s{2}=RSet(Hex(*var\Data4[5]),2,"0")
  Protected b7.s{2}=RSet(Hex(*var\Data4[6]),2,"0")
  Protected b8.s{2}=RSet(Hex(*var\Data4[7]),2,"0")
  
  ProcedureReturn s1+"-"+w1+"-"+w2+"-"+b1+b2+"-"+b3+b4+b5+b6+b7+b8
EndProcedure

0

3

Спасибо.
После долгого перерыва мозги засохли.

0

4

Правильный код

Код:
Procedure.s GUIDtoStr(*var.GUID)
  Protected s1.s{8}=RSet(Hex(*var\Data1),8,"0")
  Protected w1.s{4}=RSet(Hex(*var\Data2,#PB_Word ),4,"0")
  Protected w2.s{4}=RSet(Hex(*var\Data3,#PB_Word ),4,"0")
  Protected b1.s{2}=RSet(Hex(*var\Data4[0],#PB_Byte),2,"0")
  Protected b2.s{2}=RSet(Hex(*var\Data4[1],#PB_Byte),2,"0")
  Protected b3.s{2}=RSet(Hex(*var\Data4[2],#PB_Byte),2,"0")
  Protected b4.s{2}=RSet(Hex(*var\Data4[3],#PB_Byte),2,"0")
  Protected b5.s{2}=RSet(Hex(*var\Data4[4],#PB_Byte),2,"0")
  Protected b6.s{2}=RSet(Hex(*var\Data4[5],#PB_Byte),2,"0")
  Protected b7.s{2}=RSet(Hex(*var\Data4[6],#PB_Byte),2,"0")
  Protected b8.s{2}=RSet(Hex(*var\Data4[7],#PB_Byte),2,"0")
  
  ProcedureReturn s1+"-"+w1+"-"+w2+"-"+b1+b2+"-"+b3+b4+b5+b6+b7+b8
EndProcedure

0

5

предыдущий код - не совсем правильный - дает ошибки

более правильный - здесь

Procedure.s GUIDtoStr(*var.GUID)
  Protected s1.s{8}=RSet(Hex(*var\Data1,#PB_Long),8,"0")
  Protected w1.s{4}=RSet(Hex(*var\Data2,#PB_Word),4,"0")
  Protected w2.s{4}=RSet(Hex(*var\Data3,#PB_Word),4,"0")
  Protected b1.s{2}=RSet(Hex(*var\Data4[0],#PB_Byte),2,"0")
  Protected b2.s{2}=RSet(Hex(*var\Data4[1],#PB_Byte),2,"0")
  Protected b3.s{2}=RSet(Hex(*var\Data4[2],#PB_Byte),2,"0")
  Protected b4.s{2}=RSet(Hex(*var\Data4[3],#PB_Byte),2,"0")
  Protected b5.s{2}=RSet(Hex(*var\Data4[4],#PB_Byte),2,"0")
  Protected b6.s{2}=RSet(Hex(*var\Data4[5],#PB_Byte),2,"0")
  Protected b7.s{2}=RSet(Hex(*var\Data4[6],#PB_Byte),2,"0")
  Protected b8.s{2}=RSet(Hex(*var\Data4[7],#PB_Byte),2,"0")
 
  ProcedureReturn s1+"-"+w1+"-"+w2+"-"+b1+b2+"-"+b3+b4+b5+b6+b7+b8
EndProcedure

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » синтаксическая ошибка ?