Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Кодирование файла [D5, D6, Win95/98]


иван ©   (2002-07-23 14:32:00) 

Есть файл на диске С: 1.тхт шрифт у него нормальный, а как сделать так, чтобы то что в нем написано не было понятно (т.е. закодировать, шифровать и тд). Заранее благодарен.


Viewer   (2002-07-23 16:29:00) [1]

Вот так "знания" и распространяются.
Чему удивляться..


Skier   (2002-07-23 15:25:00) [2]

>иван
Лови класс для кодирования/декодирования файла
(by Marco Cantu)


unit EncodStr;

interface

uses
Classes;

type
TEncodedStream = class (TFileStream)
private
FKey: Char;
public
constructor Create(const FileName: string; Mode: Word);
function Read(var Buffer; Count: Longint): Longint; override;
function Write(const Buffer; Count: Longint): Longint; override;
property Key: Char read FKey write FKey default "A";
end;

implementation

constructor TEncodedStream.Create(
const FileName: string; Mode: Word);
begin
inherited Create (FileName, Mode);
FKey := "A";
end;

function TEncodedStream.Write(const Buffer;
Count: Longint): Longint;
var
pBuf, pEnc: PChar;
I, EncVal: Integer;
begin
// allocate memory for the encoded buffer
GetMem (pEnc, Count);
try
// use the buffer as an array of characters
pBuf := PChar (@Buffer);
// for every character of the buffer
for I := 0 to Count - 1 do
begin
// encode the value and store it
EncVal := ( Ord (pBuf[I]) + Ord(Key) ) mod 256;
pEnc [I] := Chr (EncVal);
end;
// write the encoded buffer to the file
Result := inherited Write (pEnc^, Count);
finally
FreeMem (pEnc, Count);
end;
end;

function TEncodedStream.Read(var Buffer; Count: Longint): Longint;
var
pBuf, pEnc: PChar;
I, CountRead, EncVal: Integer;
begin
// allocate memory for the encoded buffer
GetMem (pEnc, Count);
try
// read the encoded buffer from the file
CountRead := inherited Read (pEnc^, Count);
// use the output buffer as a string
pBuf := PChar (@Buffer);
// for every character actually read
for I := 0 to CountRead - 1 do
begin
// decode the value and store it
EncVal := ( Ord (pEnc[I]) - Ord(Key) ) mod 256;
pBuf [I] := Chr (EncVal);
end;
finally
FreeMem (pEnc, Count);
end;
// return the number of characters read
Result := CountRead;
end;



end.


VID   (2002-07-23 15:23:00) [3]

UBPFD. Подраздел "Шифрование строк".
http://delphibase.endimus.com/?action=viewtopic&topic=strcode


Viewer   (2002-07-23 15:14:00) [4]

Если ты программист - сказанного достаточно.
А если нет - то и примера мало.

si - входная строка
so- выходная строка
s1 := "ABCDEFGH..XYZ";
s2 := "EFGH..XYZABCD"; // сдвиг на 4-ре символа

Цикл по строке
j := pos(si[i],s1);
if j>0 then so[i] := s2[j];


иван   (2002-07-23 14:55:00) [5]

Viewer!!!! А на примерчике можно...Спасибо!


Viewer   (2002-07-23 14:43:00) [6]

О ! Если шрифт нормальный тогда все просто..
Напиши две таблицы (массива) со всеми символами алфавита
Одна нормальная, другая перемешенная
Символ из текста находи в первой и по аналогичному индексу меняй на символ из второй.
На первый раз достаточно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо