![]() |
| ||
|
|
Новости |
Поиск |
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;
KLAUS_ (2007-08-05 21:39:00) [21]{RASkov}Длина этих данных по этому адресу будет явно БАЙТ!!
MetalFan (2007-08-05 21:38:00) [22]
> fs.write(Str[0], Length(Str));
ай опять за старую песню? Str[1], и если уж на то пошло, то лучше не использовать идентификатор Str!
{RASkov} (2007-08-05 21:36:00) [23]> [20] KLAUS_ (05.08.07 21:32)
> считываю данные в файле, пускай они будут по адресу $000000010
А длина этих данных какая??? откуда ты ее берешь?
И нафика столько всяких "переводов" туда-сюда??? Ты уже на этапе исходного кода пытаешься все "зашифровать"? :)
KLAUS_ (2007-08-05 21:35:00) [24]Вот вот!!Согласен...
Что за AV??
Anatoly Podgoretsky (2007-08-05 21:34:00) [25]> {RASkov} (05.08.2007 21:29:19) [19]
Это даже не откомпилируется.
Anatoly Podgoretsky (2007-08-05 21:33:00) [26]> KLAUS_ (05.08.2007 21:23:18) [18]
Про данные речь, тебе еще везет, а может наоборот, что AV не получаешь.
KLAUS_ (2007-08-05 21:32:00) [27]{RASkov}
Не понял, считываю данные в файле, пускай они будут по адресу $000000010
, получаю (допустим) FF, перевожу в INT , получаю 255, перевожу в STR, теперь ксорю со смещением 1, получаю 344, перевожу в HEx, получаю 158 - вот я их и хочу записать!!
{RASkov} (2007-08-05 21:29:00) [28]> [18] KLAUS_ (05.08.07 21:23)
> Но вот как
ЧТО Как???
Строки писать нужно, например, так:
fs.write(Str[0], Length(Str));
а не указатель на строку в виде 4 байт, как это делаешь ты....
KLAUS_ (2007-08-05 21:23:00) [29]turbouserПолностью согласен!!
Но вот как, пока не могу понять, поэтому и обратился!!
Anatoly Podgoretsky
Что именно, данные которые записываю, или место в файле куда хочу записать??
{RASkov} (2007-08-05 21:21:00) [30]> [14] KLAUS_ (05.08.07 21:12)
> т.е. смысл ясен думаю
Нет :(
Откуда у тебя значение смещения? Или оно постоянное для файлов?
fs := TFileStream.Create(path+srec.name,fmOpenReadWrite);
for i:=1 to 5 do begin //Это и был вопрос про смещение, так как ты не ответал, то пусть будет 5 байт
fs.Read(b,sizeof(b));
b:=b xor 1;
fs.Seek(fs.Position-1);
fs.Write(b, SizeOf(b);
end;
fs.Free;
Так что ли? b: byte;
Anatoly Podgoretsky (2007-08-05 21:19:00) [31]Нужно обращение к буферу, а не использование переменной в качестве буфера. Можно через приведение к PChar
turbouser (2007-08-05 21:13:00) [32]
> KLAUS_ (05.08.07 21:10) [12]
Эхх.
str:=inttostr(fs.Read(b,sizeof(b)));
Ты читаешь 1 байт (символ), при этом в str что оказывается? Правильно - кол-во
причитанных байт. Т.е. 1.
fs.Write(str,sizeof(str));
И что тут должно записАться в файл? Правильно - 4 байта непонятно чего.
Все-таки последуй совету из [7]
{RASkov} (2007-08-05 21:12:00) [33]> [12] KLAUS_ (05.08.07 21:10)
Ответь на [11]
KLAUS_ (2007-08-05 21:12:00) [34]
fs.Seek($000000000,soFromBeginning);
могу указать так <codefs.Seek($000000010,soFromBeginning);
т.е. смысл ясен думаю
KLAUS_ (2007-08-05 21:10:00) [35]{RASkov}Да байты байты, опечатался!
Хм, кажись и так уж всё расписал:
Нужно в нужном месте считать быйты и сксорить их.......
Покажите где я ошибся или подскажите что изменить, но только давайте не будем ПОЧИТАЙ и т.п.
Давайте подскажем где и как!!
{RASkov} (2007-08-05 21:08:00) [36]> [8] KLAUS_ (05.08.07 21:01)
> Хм, планировалось так, от начала файла до нужного места:
А как "нужное место" определяешь?
{RASkov} (2007-08-05 21:06:00) [37]> [8] KLAUS_ (05.08.07 21:01)
Вообще ничего не понял :(
> str:=inttostr(fs.Read(b,sizeof(b))); - как мне казалось считываю файлы
???? Может байты?
> Косячу да??
Походу...:)
[7] - почитай.
> [9] KLAUS_ (05.08.07 21:04)
Еще раз [7] почитай внимательно ) Или разъясняйся толковей...
KLAUS_ (2007-08-05 21:04:00) [38]turbouser
Да как бы работал раньше, но дело не в этом ты по поводы вопросы говори, если есть что!
KLAUS_ (2007-08-05 21:01:00) [39]Хм, планировалось так, от начала файла до нужного места:
str:=inttostr(fs.Read(b,sizeof(b))); - как мне казалось считываю файлы, а затем их ксорю!!
Косячу да??
turbouser (2007-08-05 21:00:00) [40]
> KLAUS_ (05.08.07 20:51) [4]
Посмотрел бы ты в хелпе - что такое sizeof и пример использования TFileStream