Показать сообщение отдельно
  #3  
Старый 14.03.2021, 15:25
Shaft Shaft вне форума
Новичок
 
Регистрация: 15.05.2013
Сообщения: 74
Версия Delphi: 7/10.4
Репутация: 12
По умолчанию

Код:
function Encrypt_(s:string; EncodeTable:array of Integer):string;
var
  i,KeyL:Integer;
begin
  Result:='';
  KeyL:=0;
  for i:=1 to Length(s) do
  begin
    if KeyL>2 then KeyL:=0;
    Result:=Result+Char(Ord(s[i])+EncodeTable[KeyL]);
    Inc(KeyL);
  end;
end;

function Encrypt(s:string):string;
const Key1:array[0..2] of Integer=(1,2,0);
      Key2:array[0..2] of Integer=(2,3,1);
      Key3:array[0..2] of Integer=(3,4,2);
var
  ParsSTR,NumT:string;
begin
  Result:='';
  if Length(s)<4 then Exit;
  ParsSTR:=(Encrypt_(s,Key1));
  NumT:=Copy(ParsSTR,1,Pos('-',ParsSTR)-1);
  try
    StrToInt(NumT);
    Result:='"'+Trim(ParsSTR)+'"';
  except
    try
      ParsSTR:=(Encrypt_(s,Key2));
      NumT:=Copy(ParsSTR,1,Pos('-',ParsSTR)-1);
      StrToInt(NumT);
      Result:='"'+Trim(ParsSTR)+'"';
    except
      try
        ParsSTR:=(Encrypt_(s,Key3));
        NumT:=Copy(ParsSTR,1,Pos('-',ParsSTR)-1);
        StrToInt(NumT);
        Result:='"'+Trim(ParsSTR)+'"';
      except
        Result:='"Error: s1 '+s[1]+' s4 '+s[4]+'"';
      end;
    end;
  end;
end;

Файл загружается например в StringList и построчно в цикле обрабатывается

Код:
var
  i:Integer;
  s:string;
begin
  for i:=0 to sl.count-1 do
    s:=Encrypt(sl[i]);//s расшифрованная строка
end;
Ответить с цитированием