Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.12;
Скачать: CL | DM;

Вниз

кодирование   Найти похожие ветки 

 
maza   (2003-04-28 15:19) [0]

как можно текст из memo сохранить в файл, заменив рус и англ буквы на соответствующий им код в двоичной системе (напр), но потом восстанавливать текст из того же файла?


 
Zirus ©   (2003-04-28 15:32) [1]

читай построчно из memo в какой-нибудь string -> string:=code(string) -> savetofile(string) -> следующая строка.


Вот так можно записать в файл. в завершении алгоритма - closefile(f). Читать из файла подобным образом.

var f: textfile;
assignfile(f,"c:\txt.txt")
rewrite(f);
closefile(f);
append(f);
writeln(string);


 
mrcat ©   (2003-04-28 16:52) [2]

maza (28.04.03 15:19)

какой Вы видите смысл в этой операции?


 
maza   (2003-04-28 20:35) [3]

mrcat
нужно сделать так, чтобы этот текст был виден только из программы (без применения "спецсредств" ессно), а в FAR или чем-то подобном отображался закодированным.


 
Separator ©   (2003-04-29 07:26) [4]

function CodeStr(Value: string): string;
begin
Кодируй строку
end;

function DecodeStr(Value: string): string;
begin
Декодируй строку
end;

procedure TForm1.btnLoadClick(Sender: TObject);
var
Temp: TStringLis;
begin
Temp:= TStringList.Create;
try
Temp.LoadFromFile(FileName);
Memo1.Lines.Text:= DecodeStr(Temp.Text)
finally
Temp.Free
end
end;

procedure TForm1.btnSaveClick(Sender: TObject);
var
Temp: TStringLis;
begin
Temp:= TStringList.Create;
try
Temp.Text:= CodeStr(Memo1.Lines.Text);
Temp.SaveToFile(FileName)
finally
Temp.Free
end
end;


 
Ru ©   (2003-04-29 10:53) [5]

смысла действительно не заметно:
1. считать символ
2. ord
3. dectobin (or hextobin)
4. write(f,XXX)
кажись так


 
Shirson ©   (2003-04-29 15:05) [6]

Лучше всего обрабатывать XOR-ом. Просто и надёжно.


 
Ru ©   (2003-04-29 15:18) [7]

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


 
mrcat ©   (2003-04-29 16:21) [8]

Ru © (29.04.03 15:18)

почему считаете что xor --- "глючно"?


 
Anatoly Podgoretsky ©   (2003-04-29 16:26) [9]

Действительно, почему? Пока в глючности не замечен


 
mrcat ©   (2003-04-29 16:34) [10]

maza (28.04.03 20:35)

так вот и спрашиваю: с какой целью это делается?
Если целью явяется защита данных, то это чушь, так делать нельзя.


 
Ru ©   (2003-04-29 17:21) [11]

>mrcat © (29.04.03 16:21)
>Anatoly Podgoretsky © (29.04.03 16:26)

xor символов с одним кодом дает пустой символ в результате, при кодировании строк на выходе строки несколько короче чем ожидается


 
Anatoly Podgoretsky ©   (2003-04-29 17:37) [12]

Как ты догадался?
А ты не пробовал после этого сделать Length(S)
И о каких строках можно вести речь после кодирования, большинство алгоритмов выдают кодв в диапазоне 0..255 с ними нельзя уже работать как со строками, надо как с двоичными значениями.
И ты наверно еще делал и SaveToFile/LoadFromFile :-)

Ну наверно после этого догадываешься где глюки в XOR или одно из двух.


 
Ru ©   (2003-04-29 18:00) [13]

>Anatoly Podgoretsky © (29.04.03 17:37)

сохранять даже и не пытался :)
Edit3.Text:=VernamCoDec(Edit1.Text,Edit2.Text);
я только потом выяснил что глючу :)


 
Anatoly Podgoretsky ©   (2003-04-29 18:57) [14]

Ну вот другое дело, а то XOR


 
maza   (2003-04-29 21:21) [15]

>mrcat © (29.04.03 16:34)

да мне только надо, чтобы нельзя было быстро прочитать етот файл и все тут! Нафиг не надо защищать инфу (maza (28.04.03 20:35)).


 
Babay ©   (2003-04-30 06:30) [16]

Я так понимаю сделать надо что бы с файлом можно было по прежнему как с текстовым работать, но в блокноте чтоб непонятно было что там написано?
тогда так (грубый алгоритм и при этом длина файла удваивается)

Берем исходный файл и для каждого символа делаем так
1 переводим симол в его числовое представление ord(символ)
2 переводим числовое в шестнадцатиричное InttoHex(число,2)
3 собираем это в строку
4 записываем файл

В итоге в файле получаем набор шестдцатиричных обозначений каждой буквы 2 симола на букву.(отсюда и удвоение длины)

затем открываем наш файл
1 считываем по 2 симола и переводим их из шестнадцатиричного представления в десятичное StrToInt("$"+<2 символа>)
2 переводим десятичное представление в букву chr(..)
3 собираем символы в строку

примерно так у меня это работает (правда я не для файлов использовал и текст у меня был не очень длинный)


 
Babay ©   (2003-04-30 06:35) [17]

да при таком решении надо предусмотреть вариант что пользователь взял и подправил файл (он же текстовый значит в болноте можно), тогда может быть ошибка при обратной конвертации это надо учесть.


 
Separator ©   (2003-04-30 06:51) [18]


> Babay © (30.04.03 06:35)

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


 
Babay ©   (2003-04-30 07:02) [19]

To Separator

:=))# точно! :=))))))))#
но что спросили то и ответили, а дальше ему решать.


 
Shirson ©   (2003-04-30 10:37) [20]

>Ru © (29.04.03 17:21)
>xor символов с одним кодом дает пустой символ в результате, при >кодировании строк на выходе строки несколько короче чем ожидается

(ошалело перечитывает раза четыре) Может я ужу совсем от старости с катушек съехал, и мне кто-нибудь объяснит, что такое "пустой символ" и как он может повлиять на длину строки? Это что за прогоны такие?


var s:string;
begin
s:="";
s:=s+#0;
s:=s+#1;
s:=s+#10+#13;
s:=s+#8;
s:=s+#9;
s:=s+#255;
Form1.Caption:=inttostr(length(s));
end;


В каком месте тут должна укоротиться строка и почему она не укорачивается?
В каком месте должна укоротиться строка, если её записать в файл и почему она не укорачивается?



Страницы: 1 вся ветка

Текущий архив: 2003.05.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.056 c
3-34369
Сидоров
2003-04-22 17:06
2003.05.12
BDE


1-34395
Tapchyk
2003-04-29 01:29
2003.05.12
Реестр


11-34383
ODUVAN
2002-08-01 20:23
2003.05.12
Не могу поймать сообщения от мыши в SysTray!!!


3-34378
galexis
2003-04-21 15:58
2003.05.12
Выгрузка в файл XML


14-34575
Dimaz-z
2003-04-23 22:53
2003.05.12
Какая Install яшалка по вашему мнению лучше?