Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Xor части файла [D3, XP]


Страницы:   1 2 3

KLAUS_ ©   (2007-08-05 20:15:00) 

Всем привет!
Возникла проблемка на могу заксорить нужную часть файла, делаю так:

fs := TFileStream.Create(path+srec.name,fmOpenReadWrite);
 fs.Seek($00000000,soFromBeginning);
 str:=inttostr(fs.Read(b,sizeof(b)));
  for i:=1 to length(str) do
   str[i]:=Chr(Ord(str[i]) xor 1);
       fs.Seek($000000000,soFromBeginning);
    fs.Write(str,sizeof(str));
    fs.Free;

Файл считывается и даже значения меняются но как-то криво, и обратно не возвращается, подскажите где ошибка???  
b:=byte;


{RASkov}   (2007-08-05 23:20:00) [1]

> [45] Anatoly Podgoretsky ©   (05.08.07 22:41)
> Так и не получилось, ты просто дал готовый код, остальное насмарку

:)
Не думаю, что все именно так.... судя по [43] - чел что-то делал, и если не мой код, то и остался бы при своем мнении, т.е. использовать код из [43]
Ведь он тоже рабочий... хоть и не так интуитивно понятный(по крайней мере мне), но рабочий.... А так ему есть что с чем сравнить и сделать выводы....
Впрочем я и в самом деле не ожидал, что именно это ему и надо, так как он толком не мог объяснить, что ему вообще нужно, оказалось - угадал.
Я не против давать код, лишь бы код пошел на пользу другим, не обязательно авторам ветки....
А учением с нуля и "словами" не всегда есть хорошо и не всегда на форуме этим заниматься... и поэтому частенько просто решаю проблему с автором и все...
Если я чем-то нарушаю правила форума(или еще чего), скажите.

ЗЫ Я ни кого не хочу ни чему учить, просто показываю иногда дорогу, И придерживаюсь мнения: Кто хочет - тот научится, а кому это не надо, тот один хер откуда-нибудь скопипастит себе кусок кода, не поняв сути в нем и останется тем же неучем, кем и был до копипаста.

ЗЫЫ Впрочем в данном случае, наверное [45] - верно :) Так, как этот код я дал еще в [17], а автор не удосужился чуть-чуть его подправить....:(


Anatoly Podgoretsky   (2007-08-05 22:41:00) [2]

> {RASkov}  (05.08.2007 22:19:42)  [42]

Так и не получилось, ты просто дал готовый код, остальное насмарку.


KLAUS_   (2007-08-05 22:26:00) [3]

Хотя смысл почти тот же.........
СПАСИБО ЗА ПОМОЩЬ!!!
Без тебя бы не получилось............


KLAUS_   (2007-08-05 22:25:00) [4]

Реально я сделал, уже так

var
b: array[1..5]of byte;
        BEGIN
   form1.ListBox1.items.Add(path+srec.name);
fs := TFileStream.Create(path+srec.name,fmOpenReadWrite);
fs.Seek($00000000,soFromBeginning);
fs.Read(b,sizeof(b));
for i:=1 to sizeof(b) do
b[i]:=b[i] xor 1;
fs.Seek($000000000,soFromBeginning);
fs.Write(b,sizeof(b));
fs.Free;

Но твой вариант по удачней оказался!!


{RASkov}   (2007-08-05 22:19:00) [5]

> [40] KLAUS_   (05.08.07 22:14)
> {RASkov} ВОТ!!
> СПАСИБО ДРУГ,

А сам бы до этого не додумался бы? Даже если перечитать пару раз ветку....?

реально помог!!

Я рад.... думал не получится уже :)


{RASkov}   (2007-08-05 22:15:00) [6]

> а можно fs.Seek(-1, soFromCurrent);

Можно.... разрешаю :)
Там еще много чего можно, делайте что хотите :о)


KLAUS_   (2007-08-05 22:14:00) [7]

{RASkov}ВОТ!!
СПАСИБО ДРУГ, реально помог!!

MetalFan
ТОЖЕ ПРИКОЛЬНО!!

ВСЕМ СПАСИБО!!!


MetalFan   (2007-08-05 22:08:00) [8]


> fs.Seek(fs.Position-1, soFromBeginning);

а можно fs.Seek(-1, soFromCurrent);


{RASkov}   (2007-08-05 21:58:00) [9]

> [37] KLAUS_   (05.08.07 21:55)

Еще раз:

fs := TFileStream.Create(path+srec.name,fmOpenReadWrite);
fs.Seek(<Начало>, soFromBeginning);
for i:=1 to <Длина> do begin
fs.Read(b,sizeof(b));
b:=b xor 1;
fs.Seek(fs.Position-1, soFromBeginning);
fs.Write(b, SizeOf(b);
end;
fs.Free;


KLAUS_   (2007-08-05 21:55:00) [10]

Ну я бы определил так, от начала файла 9+6, вот эти от 9 до 15 шифровал бы!!
НО ВОТ КАК!!! Ну получается у меня байты  заксорить......
Мог бы не обратился бы за помощью


{RASkov}   (2007-08-05 21:51:00) [11]

> [26] KLAUS_   (05.08.07 21:39)

<Вот это данные файла>
Например нужно зашифровать <данные>, так вот они находятся по смещению от начала файла 9 байт и имеют длинну 6 байт....
Как ты определяешь 9 и 6 ???? И зачем строки при этом использовать?? Ты-ж с байтами работаешь....


KLAUS_   (2007-08-05 21:50:00) [12]

Шикарный ответ!


Anatoly Podgoretsky   (2007-08-05 21:47:00) [13]

> KLAUS_  (05.08.2007 21:45:33)  [33]

В ветке есть вся необходимая информация, что бы правильно написать.
Иначе стоит задуматься.


KLAUS_   (2007-08-05 21:45:00) [14]

Anatoly PodgoretskyТОЧНО!!
Подскажи как исправить??


KLAUS_   (2007-08-05 21:44:00) [15]

Да мне вообще придётся пол файла ксорить......мне бы на примере хотя бб, чтоб один получилось, по нужному адресу!!


Anatoly Podgoretsky   (2007-08-05 21:44:00) [16]

При этом читаем один байт, пишем в строку три, а в файл записываем четыре, при том не их, а черт знает что.


KLAUS_   (2007-08-05 21:43:00) [17]

Тогда изменится только первый байт, и то, только в одну сторону.обратно не переводится.........и при смещении 1, получается вообще другое значение!


Anatoly Podgoretsky   (2007-08-05 21:42:00) [18]

KLAUS_   (05.08.07 21:39) [26]
Минимум три


{RASkov}   (2007-08-05 21:41:00) [19]

> [22] Anatoly Podgoretsky ©   (05.08.07 21:34)

Ага... та самая таблица, т.е. индексы
вместо Str[0] нужно Str[1])


{RASkov}   (2007-08-05 21:41:00) [20]

> [26] KLAUS_   (05.08.07 21:39)

Дык тебе один байт нужно сксорить????


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо