purebasic.info

PureBasic forum
Текущее время: Вс дек 08, 2019 1:35 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: FindMapElement()
СообщениеДобавлено: Сб окт 05, 2019 5:09 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 896
Благодарил (а): 95 раз.
Поблагодарили: 26 раз.
Пункты репутации: 5
вот что в справке написано
Цитата:
Возвращает адрес в памяти нового текущего элемента Хеш-карты.

а на самом деле возвращается адрес где лежит адрес на этот самый элемент

Код:
1
2
*m=FindMapElement()
ShowMemoryViewer(*m, xx)


увидим адрес на содержимое элемента, а не само содержимое, сам элемент активируется правильный, тот который запрашивался
думаю это ошибка


как правильно взять этот адрес? он там верх ногами лежит, и как понять сколько байт брать, 4 или 8
хотелось бы взять из памяти, а не из карты


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FindMapElement()
СообщениеДобавлено: Сб окт 05, 2019 12:17 pm 
Не в сети
профессор

Зарегистрирован: Пн июл 22, 2013 11:00 pm
Сообщений: 917
Благодарил (а): 2 раз.
Поблагодарили: 45 раз.
Пункты репутации: 9
4 или 8 байт это от версии винды наверное 32-64 бтиной. :roll:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FindMapElement()
СообщениеДобавлено: Сб окт 05, 2019 12:43 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 341
Благодарил (а): 14 раз.
Поблагодарили: 41 раз.
Пункты репутации: 2
...
О, rnd уже ответил. :)


Последний раз редактировалось repeat Сб окт 05, 2019 1:05 pm, всего редактировалось 3 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FindMapElement()
СообщениеДобавлено: Сб окт 05, 2019 12:55 pm 
Не в сети
доцент

Зарегистрирован: Сб янв 19, 2013 9:48 am
Сообщений: 37
Благодарил (а): 0 раз.
Поблагодарили: 11 раз.
Цитата:
а на самом деле возвращается адрес где лежит адрес на этот самый элемент

Это только для строк, а для чисел как в справке
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
NewMap Country.s()
Country("US") = "United States"
Country("FR") = "France"
Country("GE") = "Germany"
*m=FindMapElement(Country(), "US")
Debug PeekS(*m)
Debug PeekS(PeekI(*m))
 
NewMap Code.i()
Code("US") = 111111
Code("FR") = 222222
Code("GE") = 333333
*m=FindMapElement(Code(), "FR")
Debug PeekI(*m)
Debug PeekI(PeekI(*m)) ; OOPS
 



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FindMapElement()
СообщениеДобавлено: Сб окт 05, 2019 1:31 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 341
Благодарил (а): 14 раз.
Поблагодарили: 41 раз.
Пункты репутации: 2
rnd писал(а):
а для чисел как в справке
Код:
1
2
3
4
5
6
7
8
9
10
NewMap Code.i()
Code("US") = 1234
Code("FR") = 5678
Code("GE") = 9999999
*m = FindMapElement(Code(), "US")
Debug PeekI(*m)
*m = FindMapElement(Code(), "FR")
Debug PeekI(*m)
*m = FindMapElement(Code(), "GE")
Debug PeekI(*m)

rnd, кажись и с числами идет :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FindMapElement()
СообщениеДобавлено: Вс окт 06, 2019 7:21 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 896
Благодарил (а): 95 раз.
Поблагодарили: 26 раз.
Пункты репутации: 5
чертовщина, у меня кракозяблы вместо текста, и пока непойму в чём разница примера и моего кода, кроме имён, ну и ключ у меня в переменной


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FindMapElement()
СообщениеДобавлено: Вс окт 06, 2019 9:50 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 896
Благодарил (а): 95 раз.
Поблагодарили: 26 раз.
Пункты репутации: 5
вот теперь понятно, я всё правильно сказал, на скрине всё понятно
первый дебуг возвращает кракозяблы, потому как там адрес, а не данные
второй дебуг отвечает на мой вопрос,как правильно взять этот адрес чтобы строку получить
Изображение


так что вопрос остался, это ошибка или так и должно быть, что за странное разделение, так дам, так не дам


Вложения:
Буфер обмена02.png [15.46 KiB]
Скачиваний: 0
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: FindMapElement()
СообщениеДобавлено: Вс окт 06, 2019 11:10 am 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 341
Благодарил (а): 14 раз.
Поблагодарили: 41 раз.
Пункты репутации: 2
*m - это указатель на указатель.
Код:
1
2
stroka.s = "test"
*m = @stroka

Думаю, так будет понятней:
Код:
1
2
3
4
5
6
NewMap Country.s()
Country("US") = "United States"
*m=FindMapElement(Country(), "US")
Debug *m ; = 3943308
ShowMemoryViewer(3943308, 16) ;Long Table = 4005544
Debug PeekS(4005544)



Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB