![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Xor части файла [D3, XP]
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)
Дык тебе один байт нужно сксорить????