Извлечение графики

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Извлечение графики

Сообщение Ariman » 10.05.2004 (Пн) 1:20

Доброго времени суток..

Я решил графику из своей игры хранть в одном файле,
вот и сделал такую вещь:

Код: Выделить всё
Private Type GRAPHICSFILEINFO
gfiName As String 'Имя файла
gfiLenght As Long 'его длина
End Type

Private Type GRAPHICSFILEHEADER
gfhNumberOfFiles As Integer 'количество файлов
gfhFileInfo() As GRAPHICSFILEINFO ' информация о каждом из файлов
End Type


В общем, в файл графики записывается сначала GRAPHICSFILEHEADER,
а потом все необходимые мне рисуночки.
Извлекается, соответственно, наоборот.
Все работает, и все бы ничего, только извлекается инфа размером 1,81 МБ
за 5 минут!
Подскажите, пожалуйста, как время извлечения сократить?Я идиот! Убейте меня, кто-нибудь!???

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.05.2004 (Пн) 3:34

Вопрос первый - ты не побайтово читаешь, случаем?
Вопрос второй - почему бы ресурсы не использовать?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 10.05.2004 (Пн) 10:25

Я считываю побайтово, иначе не работает. Хотел считывать блоками по 10 байт, а потом дописывать то, что в десяток не влезло, но все равно неработает, выгружает только первую картинку.

Ресурсный файл я не использую, так как его можно открыть чем угодно, начиная с тогно же ВБ.
А вообще, мне бы хотелось найти решение этой проблемы.
Да, еще вопрос:

Мне приходится считывать так:
Код: Выделить всё
For j = [b]0[/b] To File2Header.gfhFileInfo(i).gfiLenght

В этом случае размер итогового файла но один байт больше!
Но все же, успешно извлекается и первая и последущие картинки..
Когда я пытаюсь считать так
Код: Выделить всё
For j = [b]1[/b] to File2Header.gfhFileInfo(i).gfiLenght

или так:
Код: Выделить всё
For j = 0 To File2Header.gfhFileInfo(i).gfiLenght-1

То ничего не работает.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.05.2004 (Пн) 10:57

Так неужели нельзя читать в байтовый массив блоками по gfiLenght байт? А то и вообще прочитать весь файл одним приёмом, а потом создать из него отдельные массивы, зная, где кто начинается?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 10.05.2004 (Пн) 16:24

Теперь я в полной мере понял, что значат слова

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Когда я считал из файла блоками по gfiLenght, то он без ошибочно извлек мне все файлы за долю секунды!
Огромное спасибо за помощь.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 4

    TopList