RAD Studio 12.3 May Patch
RAD Studio 12.3 May パッチのリリース (en)
とりあえず Embarcadero RAD Studio/Delphi/C++Builder 関係のあれやこれや。 Prism.jsによるコードのハイライトのテスト中。
uses
..., System.NetEncoding.Sqids;
type
TSqidsEncodingHelper = class helper for TSqidsEncoding
public
function EncodeFromString(const AStr: String): String;
function DecodeToString(const AHash: String): String;
end;
function TSqidsEncodingHelper.EncodeFromString(const AStr: String): String;
var
Values: TArray;
I: Integer;
begin
SetLength(Values,Length(AStr));
for I := 0 to Length(AStr) - 1 do
begin
Values[I] := UInt16(AStr[I + 1]);
end;
Result := Encode(Values);
end;
function TSqidsEncodingHelper.DecodeToString(const AHash: String): String;
var
Values: TArray;
I: Integer;
begin
Values := Decode(AHash);
SetLength(Result,Length(Values));
for I := 0 to Length(Result) - 1 do
begin
Result[I + 1] := Char(Values[I]);
end;
end;
文字列の難読化としてXORやROT13などがよく使われますが、このほうがまだましな気がしますね。
uses
..., System.NetEncoding.Sqids;
var
Sqids: TSqidsEncoding;
begin
Sqids := TSqidsEncoding.Create;
try
Edit2.Text := Sqids.Encode(Edit1.Text);
finally
Sqids.Free;
end;
end;
デコードするには
var
Sqids: TSqidsEncoding;
begin
Sqids := TSqidsEncoding.Create;
try
Edit3.Text := Sqids.DecodeToStr(Edit2.Text);
finally
Sqids.Free;
end;
end;
とするだけです。Sqidsのソースは数値ですが、エンコードではInreger、TArray<Integer>、Stringを受け取るoverloadが用意されています(Stringは単独またはカンマ区切りの数値表現)。