Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Файл file.bin и мне его надо перенести в массив

Автор: Cube 30.09.2008 20:59

Здравствуйте у меня вот проблема я новичок в программирование. У меня вот такая проблема есть файл file.bin и мне его надо перенести в массив но у меня это не получается, пишу на Turba pascal’e.

C Уважением Антон

Автор: volvo 30.09.2008 22:21

Можно поподробнее? Что за массив, в который тебе понадобилось перенести файл (а главное - зачем?)...

Автор: Cube 30.09.2008 22:40

Мне в этом файле надо изменить некоторые символы я знаю их адрес но я не знаю как перейти именно к нему а в дальнейшем мне надо этот файл закодировать по определенному алгоритму. На сколько я понял удобней будет работать через массив с информацией?

Автор: volvo 30.09.2008 23:16

Цитата
На сколько я понял удобней будет работать через массив с информацией?
Удобнее чем напрямую с файлом? Вряд ли... Кроме всего прочего, если файл будет больше 64Кб, то у тебя начнутся дополнительные проблемы. Оно тебе надо?

Просто:
var f: File of Byte; { <--- или File of Char, как тебе удобнее }
...
Assign(f, 'file.bin'); Reset(f);
...
Seek(f, 20); { <--- ставим указатель файла на 20-ю позицию (начиная с нуля) }
следующая операция будет производиться с тем элементом файла, перед которым установлен указатель... В приведенном выше случае, если сделать read(f, ch), то будет прочитан 20-ый символ (или байт, смотря как ты описал F) файла, если же сделать write(f, ch), то в 20-й символ будет записано значение ch... Как видишь, все не сложнее, чем с массивами.

Только учти, что после произведения чтения/записи позиция файлового указателя меняется, нельзя сделать:
seek(f, 20);
read(f, ch);
ch := ... { <--- как-то обрабатываешь прочитанный символ }
write(f, ch); { <--- вот тут будь внимателен: ... }
... ch запишется не туда же, откуда был считан, а в следующий байт, поскольку после чтения указатель передвинется дальше.

Вот в все, что тебе нужно знать для того, чтобы начать делать свою программу (в FAQ-е есть тема "Файлы", там тоже почитай), что не получится - обращайся smile.gif

Автор: Cube 2.10.2008 0:37

Огромное спасибо

P.S Не подскажете где можно прочитать про работу с байтами?

Автор: Cube 3.10.2008 22:30

Вот у меня проблема я не знаю что делать всё проверил, в одной папки одно название

Выдают ошибку “Error 2: File not found”


Код
Program prog;

Var f:File Of Char;
    ch:char;

Begin
  Assign(f, '2.bin');
  Reset(f);

  Seek(f,2);
  Read(f,ch);
  Writeln(ch);
  Readln;

End.


P.S Через free pascal работает(TP выдаёт ошибку ^ ), но надо через командную строку запускать exe а если в интерактивном режиме выдают runtime error. Что то постоянно такие не понятки

Автор: Sozialist 5.10.2008 18:58

Пиши полный адрес файла: 'Disk:\...\2.bin'. Видимо, все дело в настройках TP. Посмотри

Автор: Cube 8.10.2008 3:15

Вот можете помочь у меня такая задача есть файл fail.bin мне из него надо брать символ и значение символа записывать в массив в двоичном коде или в строку что бы в дальнейшем я мог его кодировать по определенному алгоритму

Автор: мисс_граффити 9.10.2008 3:57

А проблема на каком этапе?
То есть с чем нужна помощь?

Автор: Cube 9.10.2008 12:09

Цитата(мисс_граффити @ 8.10.2008 23:57) *

А проблема на каком этапе?
То есть с чем нужна помощь?


Проблема получить и поместить двоечный код символа в массив для дальнейшей работы.

Автор: Cube 11.10.2008 22:01

Вот есть переменная сh и тип у неё чар как я могу получить массив с двойным кодом символа который в этой переменой находиться