Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2010, 22:30   #21
Devostator
Пользователь
 
Регистрация: 05.02.2010
Сообщений: 45
По умолчанию

Дописал в LoadFromFile и SaveFromFile "TEncoding.Unicode"
Все равно не дешифрует... ПО идее функцией TEncoding.Unicode я преобразовываю свой текст в Юникод? Или я что-то путаю?
Вот код:
Код:
function TForm2.XORString(str:String):string;
var e:integer;
    XORKey:byte;
begin
 result:='';
 XORKey:=20;
    //********* FOR ******************
    for e :=1  to length(str) do
    begin
      result:=result+chr(byte(str[e]) xor XORKey);
    end;
    //******* END FOR ****************{}
end;

procedure TForm2.Button1Click(Sender: TObject);
var
 f:TStringList;
 i:integer;
begin
f:=TStringList.Create();
f.LoadFromFile('test.txt', TEncoding.Unicode);     //заносим текст в переменную
for I := 0 to f.Count - 1 do
begin
  f.Strings[i]:=XORString(f.Strings[i]); //построчно кодируем
end;

f.SaveToFile('test_code.txt', TEncoding.Unicode);
end;


procedure TForm2.Button2Click(Sender: TObject);
var
 f: TStringList;
 i:integer;
begin
f:=TStringList.Create();

f.LoadFromFile('test_code.txt', TEncoding.Unicode);
for I := 0 to f.Count - 1 do
begin
  f.Strings[i]:=XORString(f.Strings[i]); //построчно декодируем
end;

f.SaveToFile('test_decode.txt', TEncoding.Unicode);
end;
Devostator вне форума Ответить с цитированием
Старый 29.09.2010, 23:21   #22
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) думаю, что проблема (как абсолютно справедливо заметил Black Fregat чуть выше - про полную мешанину) всё таки в строчке, которая посимвольно делает XOR

ничего не обещаю, но...

а если попробовать кодировку написать вот так:
Код:
    for e :=1  to length(str) do
    begin
      result:=result+chr(ord(str[e]) xor XORKey);
    end;
или вот так:

Код:
var  b : byte;
  ...

    for e :=1  to length(str) do
    begin
      b := Ord(Copy(str,e,1));
      result:=result+chr(b xor XORKey);
    end;
Кстати, а действительно, а почему бы не расмотреть вариант работы с файлом как с обычным бинарным? Поверьте, все эти проблемы со строками и кодировками сразу уйдут...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.09.2010, 08:42   #23
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Оффтоп:
Я вообще свой пример рассчитывал не для юникода, так что звиняйте если чё...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.09.2010, 09:44   #24
Devostator
Пользователь
 
Регистрация: 05.02.2010
Сообщений: 45
По умолчанию

Есть вот такой способ шифрования.
http://www.delphisources.ru/pages/so...eam_coder.html
Но он мне не подходит, т.к. при работе с файлом другие пользователи не могут работать с ним (файлом). А мне нужно чтобы неограниченое число пользователей могли одновременно просматривать файл.

Вот в этом примере у TFileStream есть свойство "Size", а есть ли аналогичное свойство у TStringList?

Все разобрался..... кажись. При открытий файла нужно указать права, с которыми будет открыт файл:
f:=TFileStream.Create('test.txt',fm OpenRead, fmShareCompat);

Е моЁ! Теперь проблема с внесением данный в файл.
Делаю f.Write('бла-бла-бла', ????); И сколько я должен байт выделить?
Или есть какой-то метод для определения числа байт?

Последний раз редактировалось Stilet; 01.10.2010 в 09:20.
Devostator вне форума Ответить с цитированием
Старый 30.09.2010, 20:06   #25
KoBRaAndrey
Форумчанин
 
Регистрация: 01.10.2009
Сообщений: 302
По умолчанию

Вот процедура под Delphi 2010
Код:
function XORString(str:ansiString):ansistring;
var e:integer;
    XORKey:byte;
begin
 result:='';
 XORKey:=200;
    //********* FOR ******************
    for e :=1  to length(str) do
    begin
      result:=result+ansichar(byte(str[e]) xor XORKey);
    end;
    //******* END FOR ****************{}
end;
KoBRaAndrey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
шифрование текста Sparky Помощь студентам 2 01.06.2010 18:24
Шифрование текста(Assembler) Anutka2611 Помощь студентам 0 25.04.2010 21:41
Шифрование текста XOR'ом nec117 Общие вопросы .NET 8 22.12.2009 17:53
Шифрование текста XOR'ом nec117 Общие вопросы C/C++ 6 05.12.2009 15:21
Шифрование текста SoundMan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 15.08.2008 22:39