Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-34361
Silver_
2003-04-21 09:47
2003.05.12
ID только-что добавленой записи


3-34359
AleksChern
2003-04-22 16:09
2003.05.12
Нестандартная сортировка. Помогите !!!!


3-34357
jocko
2003-04-21 15:55
2003.05.12
Фильтрация ADODateSet


14-34564
Vint45
2003-04-23 14:16
2003.05.12
Распределение элементов с учетом приоритетов


14-34555
Ru
2003-04-23 12:04
2003.05.12
Задорнов отдыхает или как?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский