![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Доброго времени суток.
Есть два архива с форматами 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
|
|||
|
|||
|
Загрузить файл как бинарный (или File Of Byte) и менять. Потом сохранять.
|
|
#3
|
|||
|
|||
|
Цитата:
На счет файлов я умею только текстовые файлы используя Open Dialog открыть, сохранять... А загружать, как бинарный или какой-нибудь еще - ниразу не сталкивался и команд к сожалению по данной теме не знаю. |
|
#4
|
||||
|
||||
|
Ну примерно так:
Код:
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
|
|||
|
|||
|
Цитата:
Переписал немного программу: Код:
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 и так далее... В чем может быть проблема? |