Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.01.2011, 17:07
kampeador kampeador вне форума
Прохожий
 
Регистрация: 18.01.2011
Сообщения: 5
Репутация: 10
Печаль Hex редактор и Delphi

Доброго времени суток.
Есть два архива с форматами Zip и V Конвертер(бинарник консольного приложения у меня есть), но нужно написать обратный конвертер.
Файлы легко конвертируются вручную, через Hex редактор. Но на ручную конвертацию больших архивов уйдет целая вечность.
Отличия между Zip и V лишь одна:
Это цифры в ячейках:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

0 в V это 5
1 это 4
2 - 7
3 - 6
4 - 1
5 - 0
6 - 3
7 - 2
8 - D
9 - C
A - F
B - E
C - 9
D - 8
E - B
F - A
Нужно чтобы программа прошла по каждой ячейке и провела замену.
Или может есть еще какой-нибудь альтернативный способ быстрой замены?
Ответить с цитированием
  #2  
Старый 18.01.2011, 17:45
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Загрузить файл как бинарный (или File Of Byte) и менять. Потом сохранять.
Ответить с цитированием
  #3  
Старый 18.01.2011, 17:59
kampeador kampeador вне форума
Прохожий
 
Регистрация: 18.01.2011
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Загрузить файл как бинарный (или File Of Byte) и менять. Потом сохранять.
А по подробнее?
На счет файлов я умею только текстовые файлы используя Open Dialog открыть, сохранять... А загружать, как бинарный или какой-нибудь еще - ниразу не сталкивался и команд к сожалению по данной теме не знаю.
Ответить с цитированием
  #4  
Старый 18.01.2011, 19:18
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ну примерно так:
Код:
Const
 ZipToV: Array[0..15] of Byte = (5,4,7,6,1,0,3,2,$D,$C,$F,$E,9,8,$B,$A);
Var
 V,Zip: File of byte;
 B: Byte;
begin
 AssignFile(Zip, 'Input.zip');
 Reset(Zip);
 AssignFile(V, 'Output.v');
 Rewrite(V);
 while not Eof(Zip)
 do begin
     Read(Zip, B);
     Write(V, ZipToV[b]);
     end;
 CloseFile(V);
 CloseFile(Zip);
end.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 18.01.2011 в 19:20.
Ответить с цитированием
  #5  
Старый 18.01.2011, 22:03
kampeador kampeador вне форума
Прохожий
 
Регистрация: 18.01.2011
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
Ну примерно так:
Код:
Const
 ZipToV: Array[0..15] of Byte = (5,4,7,6,1,0,3,2,$D,$C,$F,$E,9,8,$B,$A);
Var
 V,Zip: File of byte;
 B: Byte;
begin
 AssignFile(Zip, 'Input.zip');
 Reset(Zip);
 AssignFile(V, 'Output.v');
 Rewrite(V);
 while not Eof(Zip)
 do begin
     Read(Zip, B);
     Write(V, ZipToV[b]);
     end;
 CloseFile(V);
 CloseFile(Zip);
end.

Переписал немного программу:
Код:
procedure TForm3.Button2Click(Sender: TObject);
Const
 ZipToV: Array[0..15] of Byte = (5,4,7,6,1,0,3,2,$D,$C,$F,$E,9,8,$B,$A);
Var
 V: File of byte;
 B: Byte;
begin
 AssignFile(V, '1.v');
 Reset(V);
 while not Eof(V)
 do begin
     Read(V, B);
     case B of
       0:Write(V, ZipToV[0]);
       1:Write(V, ZipToV[1]);
       2:Write(V, ZipToV[2]);
       3:Write(V, ZipToV[3]);
       4:Write(V, ZipToV[4]);
       5:Write(V, ZipToV[0]);
       6:Write(V, ZipToV[6]);
       7:Write(V, ZipToV[7]);
       8:Write(V, ZipToV[8]);
       9:Write(V, ZipToV[9]);
       $A:Write(V, ZipToV[10]);
       $B:Write(V, ZipToV[11]);
       $C:Write(V, ZipToV[12]);
       $D:Write(V, ZipToV[13]);
       $E:Write(V, ZipToV[14]);
       $F:Write(V, ZipToV[15]);
     end;
     end;
 CloseFile(V);
end;
end.
Оригинал:
http://s39.radikal.ru/i083/1101/52/27d51aa8cee1.jpg
Стало после работы программы:
http://s013.radikal.ru/i325/1101/b2/8d133f5e259a.jpg

Но мне нужно, чтобы проверяло каждую цифру:
Например(см первый скрин)
Программа начинается на:
05 1E 56 51 41 55 55 55 и так далее...
После работы программы должно быть:
50 4B 03 04 14 00 00 00 и так далее...

В чем может быть проблема?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:34.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025