Текущий архив: 2004.10.10;
Скачать: CL | DM;
Вниз
Можно ли как-то оптимизировать этот код (для скорострельности)? Найти похожие ветки
← →
Aleksandr. (2004-09-27 12:50) [0]Он работает, но на большом количестве данных заметны тормоза. Смысл в том, что кодируемая строка "доливается" до заданной длины константной строкой и своей длиной, потом ксорится. Расшифровка в обратной последовательности. Id может быть разным:
function EncodeByID(const S : string; const ID : integer=3) : string;
var
mPos : byte;
i : integer;
begin
mPos:=length(s);
Result:=IntToHex(mPos,1)+Copy(DefCodeKeyStr,1,length(DefCodeKeyStr)-length(s))+s;
for i:=1 to length(Result) do
Result[i]:=Chr(Ord(Result[i]) XOR ID)
end;
function DecodeByID(const S : string; const ID : integer=3) : string;
var
mPos : byte;
i : integer;
begin
mPos:=StrToInt("$"+Chr(Ord(s[1]) XOR ID));
Result:=Copy(s,length(DefCodeKeyStr)-mPos+2,mPos);
for i:=1 to length(Result) do
Result[i]:=Chr(Ord(Result[i]) XOR ID)
end;
← →
PVOzerski © (2004-09-27 12:55) [1]Может, SetLength+Move вместо Copy и убыстрят, но это надо проверять. Еще вариант: если длины строк неикогда не больше 255, использование ShortString"ов позволит избежать динамического перевыделения памяти.
← →
Aleksandr. (2004-09-27 13:26) [2]Спасибо. Может, заодно подскажете, как сделать, чтобы результаты XOR"a всегда были в наборе допустимых символов? А то результаты попадают в таблицу BDE, которая хрен пропустит что-то из служебных?
← →
panov © (2004-09-27 13:34) [3]>Aleksandr. (27.09.04 13:26) [2]
Преобразуй в текстовый вид (HEX) и сохраняй в таком виде.
← →
Anatoly Podgoretsky © (2004-09-27 13:34) [4]Преобразовывать в воспринимаемый набор
← →
Aleksandr. (2004-09-27 14:20) [5]Удалено модератором
Страницы: 1 вся ветка
Текущий архив: 2004.10.10;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.064 c