![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Эта функция работает и для динамических массивов. Это известно всем, кто прочитал хоть один учебник по языку.
1) проверить что w и h больше нуля 2) проверить значение i не встроенным отладчиком а например так
-------------------- Обижено школьников: 8 |
|||
|
||||
artsb |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 1 Всего: 64 |
Я не читал ![]() 100% больше нуля Добавлено @ 18:01
Сейчас проверил. Всё ОК. Массив заполнен нулями. Поэтому картинка чёрная. Значит не происходит чтения из потока. Не верно передаём указатель? Добавлено @ 18:11 Ха. Вот так работает:
Странно у вас всё в Делфи ![]() Это сообщение отредактировал(а) artsb - 27.12.2009, 18:12 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
||||
|
|||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Да нормально всё у нас.
Для динамического массива bta и bta[0] это разные вещи, потому что bta это ссылка на первый элемент -------------------- Обижено школьников: 8 |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 1 Всего: 64 |
не сомневаюсь ;) в С++ это указатель на массив. Это сообщение отредактировал(а) artsb - 27.12.2009, 18:37 -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Ну я назвал ссылкой условно. Физически это указатель на первый элемент, но синтаксически к элементам обращаются без ^
Ну по ходу получается то же самое. А первый параметр read это var-параметр, он и так передается по ссылке. Таким образом когда ты вызываешь f.read(bta, 3*w*h) в метод передается адрес адреса первого элемента. А для статического массива работало, потому что у него переменная-массив лежит по тому же адресу что и первый элемент. Форма f.read(bta[0], 3*w*h) будет работать в обоих случаях (для статического массива еще есть условие что он должен начинаться с нуля) А вот так совсем универсально
-------------------- Обижено школьников: 8 |
|||
|
||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 1 Всего: 64 |
Спасибо за разъяснение. В принципе, в С++ то же самое. Только в функцию Read передаётся именно указатель на буфер. -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
Proxin |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: 1 Всего: 3 |
Переделал всё с динамическим массивом. Работает так, как описал artsb.
И ещё вопрос. Почему a string perfixed with a byte length не читается полностью? Пишу так:
Строка читается, но без первой буквы. UPD: А вот так
Читаются все строки нормально, но без последенй буквы. В чём может быть дело? Вообще, есть ли хороший материал по потокам - где детально всё на примерах расписано? Это сообщение отредактировал(а) Proxin - 27.12.2009, 19:23 |
||||
|
|||||
artsb |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2280 Регистрация: 17.7.2007 Где: центр Вселенной Репутация: 1 Всего: 64 |
Proxin, проверил под BCB 6. Всё отлично работает без Seek (с ним наоборот мусор). Значит это уже нюансы языка (Object Pascal). Здесь я, к сожалению, помочь не могу.
ЗЫ обожаю С++ ![]() -------------------- Чем отличается умный человек от мудрого? Умный - выпутается из любой ситуации. Мудрый - просто в неё не попадёт. |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Попробуй так
Добавлено через 12 минут и 31 секунду Это неверно, потому что есть еще ноль в конце -------------------- Обижено школьников: 8 |
|||
|
||||
bems |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
Тебе нужно посмотреть на файл в хексредакторе и определить включается ли терминатор в байт длины.
Если нет, то так
А если да, то
-------------------- Обижено школьников: 8 |
||||
|
|||||
Proxin |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 21.6.2008 Репутация: 1 Всего: 3 |
Спасибо. Понял.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |