Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2009, 22:49   #1
kitty19
Пользователь
 
Регистрация: 02.11.2009
Сообщений: 24
Восклицание Изменение порядка байт в файле

Прошу прощения за беспокойство, но!
Есть задание: "Написать программу, изменяющую порядок байтов в файле на противоположный (первый байт становится последним и наоборот)". Язык программирования любой (но признаюсь честно сама я более менее разбираюсь лишь в Pascal'е - Delphi). В мою голову ни одного более менее сносного варианта решения не пришло...
Если у кого то есть идеи, буду очень благодарна!
kitty19 вне форума Ответить с цитированием
Старый 02.11.2009, 23:06   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

через TFileStream читаем в массив байт, и потом пишем по байту начиная с конца массива
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.11.2009, 23:30   #3
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
f:tfilestream;
a:array of byte;
i:integer;
begin
f:=tfilestream.Create('c:\my.file',fmOpenReadWrite);
setlength(a,f.size-1);
for i:=0 to f.Size do
f.Read(a[i],1);
f.Size:=0;
for i:=length(a) downto 0 do
f.Write(a[i],1);
setlength(a,0);
f.Free;
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 03.11.2009, 20:23   #4
kitty19
Пользователь
 
Регистрация: 02.11.2009
Сообщений: 24
По умолчанию

спасибои еще вопрос(сразу прошу прощения если он глупый)
Если таким образом изменять текст формата txt, или pas, то просто изменяется порядок букв на противоположный. А вот если открывать картинки к примеру, то исходный файл в символьном виде(открытый блокнотом), и полученный файл таким принципом не связаны(порядок символов не изменен на противоположный, а просто совсем другой набор символов).
Это ошибка или так и должно быть?
kitty19 вне форума Ответить с цитированием
Старый 03.11.2009, 20:39   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
f.size-1
минус один не надо тут.
длинна массива равна размеру файла.

вроде нормально помоему.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.11.2009, 20:42   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,762
По умолчанию

Так и должно быть.
FaTaL вне форума Ответить с цитированием
Старый 03.11.2009, 21:23   #7
kitty19
Пользователь
 
Регистрация: 02.11.2009
Сообщений: 24
По умолчанию

А почему так должно быть?
kitty19 вне форума Ответить с цитированием
Старый 03.11.2009, 21:29   #8
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Допустим в файле 6 байт, а массив начинается с нуля. То есть [0..5]
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 03.11.2009, 21:32   #9
kitty19
Пользователь
 
Регистрация: 02.11.2009
Сообщений: 24
По умолчанию

я имела ввиду почему при изменении порядка байт в картинке к примеру при открытии через блокнот символы получаются совсем разные а не в обратном порядке?
kitty19 вне форума Ответить с цитированием
Старый 03.11.2009, 21:37   #10
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Вас не поймешь, вы просили менять порядок БАЙТ, а не СИМВОЛОВ. Это разные вещи.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение в текстовом файле nina_kh Общие вопросы Delphi 3 21.10.2009 16:33
Изменение переменных в самом exe файле. DTL Общие вопросы Delphi 6 02.06.2009 14:51
изменение порядка следования символов в строке Arteom Помощь студентам 4 10.10.2008 09:34
прочитать последние х байт в файле!! vitalik007 Общие вопросы Delphi 3 08.12.2007 18:39