доброго времени суток, господа! перейду сразу к делу: если массив структур в масме, каждый элемент каждой из структур в массиве инициализируеца в отдельнйо процедуре, затем в основной процедуре нужно считать из него значения, но тут возникают траблы. бьюсь уже битый час, наверное последствия НГ подскажите что не так: Код (Text): SETTING struct szDevice db 4 dup (?) dModifier dd ? dValue dd ? SETTING ends .data? lSettings SETTING 24 dup(<>) .code SetDefaultSettings PROC mov ecx, 24 @@: mov eax, 100 mov edx, 24 sub edx, ecx add ax, dx mov lSettings[edx].dModifier, 2 mov lSettings[edx].dValue, eax ; здесь проверяю - всё в порядке, элементы читаюцца намана loop @b ret SetDefaultSettings ENDP SetHotKeys PROC hWnd:DWORD mov ebx, offset szBuf mov edi, 0 .repeat ; следующие 4 строки только для проверки, для работы программы они не нужны pusha invoke wsprintf, addr szB, addr szT, edi, lSettings[edi].dValue, lSettings[edi].dModifier ;- тут уже вместо значений записанных при инициализации ерунда какая-то invoke MessageBox, 0, addr szB, 0, 0 popa ; inc edi add ebx, 4 .until byte ptr [ebx+1] == 0 mov lAll, edi ret SetHotKeys ENDP как мне это исправить? заранее благодарю
Привет. У тебя на каждой итерации указатель не на следующую структуру берётся, а просто увеличивается на на 1 байт, указывая на следующий байт структуры, которая юзолась на предыдущей итерации. Замени inc edi на add edi,sizeof SETTING.
огаога, точно. спасибки. edi у мну не только для роли счётчика итераций но и для содержания числа всех итераций для последующего использования, но с этим ща разберёмсо. ещё раз пасиб хехе, заработало! ну и при инициализации также поправить