Список форумов shedevr.org.ru shedevr.org.ru
Группа перевода приставочных игр "ШЕДЕВР"
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Размер загружаемого файла

 
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Утилита PokePerevod
Предыдущая тема :: Следующая тема  
Автор Сообщение
Alex_231



Зарегистрирован: 13.01.2005
Сообщения: 144
Откуда: Арсеньев

СообщениеДобавлено: Пт Мар 17, 2006 11:41 am    Заголовок сообщения: Размер загружаемого файла Ответить с цитатой

Axel, у меня к тебе чисто технический вопрос:
Как загрузить в память файл (ром) размером более 16 мегабайт, не используя статические массивы?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Пт Мар 17, 2006 7:43 pm    Заголовок сообщения: Ответить с цитатой

... если я правильно понял вопрос, то в visual basic это будет так:

dim FileAsByteArray() as byte

open "file-name.rom" for binary as 1
redim FileAsByteArray(lof(1))
get #1,,FileAsByteArray()
close
' теперь в массиве FileAsByteArray() ВЕСЬ файл
romsize=ubound(FileAsByteArray) 'это размер файла в байтах

у VB нет (сильных) ограничений на размерность массива, поэтому этот кусок кода успешно будет работать для файлов меньше 2 Гигов...

...или вопрос был о том как ЭФФЕКТИВНО загрузить в память файл (ром) ?
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Alex_231



Зарегистрирован: 13.01.2005
Сообщения: 144
Откуда: Арсеньев

СообщениеДобавлено: Пн Мар 20, 2006 10:35 am    Заголовок сообщения: Ответить с цитатой

Спасибо, ты меня правильно понял, но вся проблема в том, что я в Delphi работаю, а там в динамический массив (да и в статический тоже) не получается поместить более 1Mb данных. Поэтому мне пришлось создавать 32 массива и организовывать переход от одного к другому во время работы, а так довольно объемный код получается.
Sad
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
wl



Зарегистрирован: 20.12.2005
Сообщения: 76
Откуда: Россия

СообщениеДобавлено: Пн Мар 20, 2006 11:13 am    Заголовок сообщения: Ответить с цитатой

что за сказки? нормально читаются большие файлы (по крайней мере удавалось прочитать 300 мегов)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alex_231



Зарегистрирован: 13.01.2005
Сообщения: 144
Откуда: Арсеньев

СообщениеДобавлено: Пн Мар 20, 2006 11:15 am    Заголовок сообщения: Ответить с цитатой

А ты пытался запихнуть этот файл в массив?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Гость






СообщениеДобавлено: Пн Мар 20, 2006 11:20 am    Заголовок сообщения: Ответить с цитатой

Конечно.
Вот попробуй так:
Код:

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    rom: array of byte;
  end;
//-------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  di: TFileStream;
begin
  try
    di:= TFileStream.Create('Zelda64.rom', fmOpenRead);
    SetLength(rom, di.Size);
    di.Read(rom[0], di.Size);
    di.Free;
  except
    ShowMessage('Error');
  end;
end;
Вернуться к началу
Alex_231



Зарегистрирован: 13.01.2005
Сообщения: 144
Откуда: Арсеньев

СообщениеДобавлено: Пн Мар 20, 2006 11:24 am    Заголовок сообщения: Ответить с цитатой

А можно сделать
rom: array of Char;
?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
wl



Зарегистрирован: 20.12.2005
Сообщения: 76
Откуда: Россия

СообщениеДобавлено: Пн Мар 20, 2006 11:36 am    Заголовок сообщения: Ответить с цитатой

кажется да, не помню только будут ли там проблемы с нулевыми символами. Какой вообще смысл читать ром? Хочешь что-то типа hex-редактора замутить?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alex_231



Зарегистрирован: 13.01.2005
Сообщения: 144
Откуда: Арсеньев

СообщениеДобавлено: Пн Мар 20, 2006 11:40 am    Заголовок сообщения: Ответить с цитатой

Нет, простая прога вынимающая текст по поинтерам.
А с нулевыми кодами проблем не будет (раз в статическом массиве нет)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Пн Мар 20, 2006 2:52 pm    Заголовок сообщения: Ответить с цитатой

Alex_231 писал(а):
А можно сделать
rom: array of Char;
?

нельзя (в VB строки в unicode), но ты можешь загрузить ROM
в строку...

dim myRom as string

open "file.rom" for binary as 1
myRom = space(lof(1))
get #1,,myRom
close

теперь в строковой переменной myRom весь твой ROM...

чтобы узнать что в этом роме лежит по адресу 56dec просто
выкусаваешь из этой строки подстроку...
!!! адресация с ЕДИНИЦЫ

s = mid(myRom,56,1) 'один СИМВОЛ !!! НЕ БАЙТ, а именно символ

для перевода символов в их коды пользуйся функцией ASC, скажем:
code = ASC(s)
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Alex_231



Зарегистрирован: 13.01.2005
Сообщения: 144
Откуда: Арсеньев

СообщениеДобавлено: Вт Мар 21, 2006 10:51 am    Заголовок сообщения: Ответить с цитатой

Axel, не обижайся, но лекции по программированию в VB мне не нужны, а как перевести символ в код я знаю еще со школы.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Axel
Советник


Зарегистрирован: 14.11.2003
Сообщения: 680

СообщениеДобавлено: Вт Мар 21, 2006 11:14 am    Заголовок сообщения: Ответить с цитатой

Alex_231 писал(а):
как перевести символ в код я знаю еще со школы.

я просто хотел уточнить, что нельзя использовать функции типа cbyte Wink
_________________
Всех их вместе переведём!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов shedevr.org.ru -> Утилита PokePerevod Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group