PureBasic - форум

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

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


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Разное поведение хэш-карты в структуре


Разное поведение хэш-карты в структуре

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

1

gjrbyek ajhev

Отредактировано Webarion (13.06.2025 14:16:21)

0

2

PB 6.0, ошибки нет как с асм так и с си.

0

3

А что так можно " Map2("Map2")\MapIn("MapIn")\Pointer",указывать индекс массива структур не числом а в виде строки?

Отредактировано Sergeihik (11.07.2022 20:39:09)

0

4

Webarion написал(а):

If Not *Pointer

Может из за того что во втором случае идёт возвращение адреса на ячейку а не самого значения и нужно так?

Код:
 Вариант 2 - здесь "путь" хэш-карт не создаётся
Define *Pointer = Map2("Map2")\MapIn("MapIn")\Pointer
If Not peeki(*Pointer)
  Map2()\MapIn()\Pointer = 2 ; ошибка
EndIf

Debug Map2()\MapIn()\Pointer

0

5

Webarion написал(а):

В коде ниже, в первом случае, при проверке через If путь структуры создаётся автоматически, во втором случае, при присвоении, такой путь не создаётся.

В первом случае

Код:
; If Not Map1("Map1")\MapIn("MapIn")\Pointer
  MOV    eax,_S1
  PUSH   eax
  PUSH   dword [m_Map1]
  CALL  _PB_CreateMapElement@8
  MOV    ebp,eax
  PUSH   ebp
  MOV    eax,_S2
  POP    ebp
  PUSH   eax
  PUSH   dword [ebp+0]
  CALL  _PB_CreateMapElement@8
  MOV    ebp,eax
  CMP    dword [ebp],0
  JE     No0
  XOR    eax,eax
  JMP    Ok0

Во втором

Код:
; Define *Pointer = Map2("Map2")\MapIn("MapIn")\Pointer
  MOV    eax,_S3
  PUSH   eax
  PUSH   dword [m_Map2]
  CALL  _PB_GetMapElement@8
  MOV    ebp,eax
  PUSH   ebp
  MOV    eax,_S2
  POP    ebp
  PUSH   eax
  PUSH   dword [ebp+0]
  CALL  _PB_GetMapElement@8
  MOV    ebp,eax
  MOV    eax,dword [ebp]
  MOV    dword [p_Pointer],eax

То есть в первом случае проверяется наличие элемента с заданным именем (если нет, он создается), а во втором чтение данных из поля Pointer. Если данных нет, возвращается 0, но элемент не добавляется в массив.

0

6

Webarion написал(а):

Подскажите?

из справки

-c, --commented, /COMMENTED: создаёт откомментированный файл вывода '.asm' при создании исполняемого файла. Этот файл можно впоследствии передать ассемблеру, после того как будут сделаны нужные изменения. Эта опция только для опытных программистов.

+1

7

https://www.purebasic.fr/english/viewtopic.php?t=30864

+1


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Разное поведение хэш-карты в структуре