Страница 12 из 12

Re: Текущие вопросы по Delphi

Добавлено: 09 мар 2008, 13:00
Medved
&quot писал(а):Да ЩАС!! Встроенного куда?! В nix*/Линукс? А кто Вам про Линукс сказал?!... А у препода Unix/Линукс, да? ;-)))
У меня линукс, я по привычке... Но под винду его тоже можно вставить... Потом от нажатия правой кнопки мыши появляется опция "edit with vim"

Re: Текущие вопросы по Delphi

Добавлено: 09 мар 2008, 20:33
C_O_D_E
Serge_Bliznykov писал(а):C_O_D_E, а вот это зря!
Мне лично очень импонирует подход, который предложил Вам MOTOCoder
Эх... в очередной раз Вы правы...Я разобралась в коде, который предложил мне MOTOCoder, да, это действительно то, что нужно. спасибо MOTOCoder'у и Вам тоже.
Serge_Bliznykov писал(а):по любому из пунктов тут Вам окажут помощь.
А за это низкий полнон. Спасибо.

Re: Текущие вопросы по Delphi

Добавлено: 09 мар 2008, 21:44
C_O_D_E
Serge_Bliznykov писал(а): Встроенного куда?! В nix*/Линукс? А кто Вам про Линукс сказал?!... А у препода Unix/Линукс, да? ;-)))
Препод с простенькой ХР на "Вы " разговаривает, а если ему еще и Линукс поставить, то это получиться легкий симбиоз КВН и ComedyClab, не, детская психика бедных студентов, этого не выдержит!

Re: Текущие вопросы по Delphi

Добавлено: 13 мар 2008, 23:33
MOTOCoder
Вот как раз самому понадобилась функция шифрования - написал модуль.
Алгоритм немного улучшенный. Если интересно, вот:
[syntax='Delphi']
unit RandCpt;

interface

uses Classes, SysUtils;

const
BufSize=1024;

Function Crypt(Source,Dest,Pass:string):Int64;

implementation

{преобразование строкового пароля в значение RandSeed}
Function PassToRS(Pass:string):integer;
var
i,r:integer;
begin
r:=0;
for i:=1 to Length(Pass) do
if r+ord(Pass)<MaxInt then
inc(r,ord(Pass)) else
Dec(r,Ord(Pass));
result:=r;
end;

{шифрование/дешифрование}
Function Crypt(Source,Dest,Pass:string):Int64;
var
iFS,oFS:TFileStream;
RBUF,WBUF:array[0..BufSize-1] of byte;
S:integer;
I:integer;
RB:byte;
begin
oFS:=TFileStream.Create(Dest,fmCreate);
oFS.Free;
oFS:=TFileStream.Create(Dest, fmOpenWrite);
iFS:=TFileStream.Create(Source, fmOpenRead);
RandSeed:=PassToRS(Pass);
while iFS.Position<iFS.Size do
begin
S:=iFS.Read(RBUF,SizeOf(RBUF));
for I:=0 to S-1 do
begin
RB:=Random(255);
WBUF:=RBUF XOR RB;
end;
oFS.Write(WBUF,S);
end;
Result:=oFS.Size;
oFS.Free;
iFS.Free;
end;

end.

[/syntax]

Re: Текущие вопросы по Delphi

Добавлено: 14 мар 2008, 09:08
somewhere
&quot писал(а):RBUF,WBUF:array[0..BufSize-1] of byte;
Зачем здесь два буфера?

Re: Текущие вопросы по Delphi

Добавлено: 14 мар 2008, 17:20
MOTOCoder
somewhere писал(а):Зачем здесь два буфера?
Впринципе Вы правы, можно обойтись и одним, однако я привык не изменять данные в буфере чтения(мало ли понадобятся). Хоть в данном алгоритме это не нужно, все равно сделал по привычке.

Re: Вопросы шифрования

Добавлено: 14 мар 2008, 20:04
C_O_D_E
2 MOTOCoder в очередной раз спасибо.