Страница: 1 | 2 | 3 |
Вопрос: Копия строки ?
Добавлено: 22.12.08 22:17
Автор вопроса: Lapex
Ответы
Всего ответов: 37
Номер ответа: 16
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #16
Добавлено: 26.12.08 12:51
Ух ты, а ведь действительно LEN врет.
Спасибо!
Угу, врут как всегда кривые руки - "погроммистов", а не Len
Номер ответа: 17
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #17
Добавлено: 26.12.08 13:07
У меня на этом коде выдается 16777216. Максимальный размер Asciiz строки, как и должно быть
Номер ответа: 18
Автор ответа:
Lapex
Вопросов: 6
Ответов: 56
Профиль | | #18
Добавлено: 26.12.08 13:23
Станно, а у меня - 33554432.
Номер ответа: 19
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #19
Добавлено: 26.12.08 13:36
не знаю у кого руки кривее, но и у меня на этом коде выдается 33554432.
Номер ответа: 20
Автор ответа:
Lapex
Вопросов: 6
Ответов: 56
Профиль | | #20
Добавлено: 26.12.08 14:03
Еще раз проверил этот код.
Результаты:
PB 8.03: 16777216
PB 9.00: 33554432
Номер ответа: 21
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #21
Добавлено: 26.12.08 14:06
Такая же фигня.
Номер ответа: 22
Автор ответа:
Lapex
Вопросов: 6
Ответов: 56
Профиль | | #22
Добавлено: 26.12.08 14:16
Хорошо, ну допустим это глюк PB 9.0 или последствия некорректного "лечения" от жадности и правильный результат LEN должен быть: 16777216, но тогда почему lstrlen возвращает: 44444444?
Номер ответа: 23
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #23
Добавлено: 26.12.08 14:19
Насчет 9 пока не могу сказать, у меня на работе 8.03 стоит.
Какие хидеры подключаете?
Номер ответа: 24
Автор ответа:
Lapex
Вопросов: 6
Ответов: 56
Профиль | | #24
Добавлено: 26.12.08 14:47
В настройках PB все по умолчанию, подключается только "win32api.inc".
Да, похоже ты прав, LEN работает корректно, проблемма похоже в глюке с типом ASCIIZ.
А то, что lstrlen возвратил 44444444 - это наверное размер выделенного буфера, а не строки.
Прверял наличие символа в позиции после 16777216 (для PB 8.03)- пусто.
Номер ответа: 25
Автор ответа:
alex
Вопросов: 84
Ответов: 453
Профиль | | #25
Добавлено: 26.12.08 14:55
В настройках PB все по умолчанию, подключается только "win32api.inc".
А хидеры от Jose Roca случайно не ставил?
Номер ответа: 26
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #26
Добавлено: 26.12.08 14:57
Len встроенная ф-ция, нутро не посмотреть, но когда выделяешь память под строку и заполняешь данными, то ожидаешь, что Len будет внутри себя делать инкремент счетчика для ASCIIZ пока не наткнется на ноль.И она так и делает до тех пор пока не сочтет, что для этого типа данных превышен размер который считается максимальным, да еще и зависит от версии PB.
Хотя вообще-то размер строк может быть ограничен доступной памятью в системе. В топку такую ф-цию.
Номер ответа: 27
Автор ответа:
Lapex
Вопросов: 6
Ответов: 56
Профиль | | #27
Добавлено: 26.12.08 14:58
Нет, не ставил - свежеустановленный PB 9.0.
Номер ответа: 28
Автор ответа:
Lapex
Вопросов: 6
Ответов: 56
Профиль | | #28
Добавлено: 26.12.08 15:01
Номер ответа: 29
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #29
Добавлено: 26.12.08 15:05
Значит, все встроенные ф-ци строк ведут себя так. На самом деле по этому офсету адреса символ есть.
Номер ответа: 30
Автор ответа:
Father
Вопросов: 0
Ответов: 159
Профиль | | #30
Добавлено: 26.12.08 15:20