Форум: "Основная";
Текущий архив: 2003.05.12;
Скачать: [xml.tar.bz2];
Внизкодирование Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c