dicas show delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais
sombra
Artigos Show Delphi

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais
sombra
iniciantes show delphi

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais
sombra
downloads show delphi

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
sombra
voltar

PARA QUEM GOSTA DE DELPHI

Função para gerar um ID único em String

Muitas vezes é necessário criar algum indexificador único
em nossas aplicações.

Para resolver de modo fácil este problema, é possível
fazer uso da função abaixo:

Obs: É necessário estas declarado System.SysUtils na seção uses.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function GetNewID(Prefix: String): string;
var
  reg: array [1 .. 7] of word;
  i: integer;
begin
  { EDIT: Vou por mais estas linhas abaixo, para que o prefixo nunca
  tenha mais de 2 caracteres, e assim fique fixo o tamanho 16 bytes  }
  if length(Prefix) > 2 then
    Prefix := Copy(Prefix, 1, 2)
  else
    while length(Prefix) < 2 do
      Prefix := ' ' + Prefix;
 
  Result := '';
  DecodeDate(Date, reg[1], reg[2], reg[3]);
  reg[1] := StrToInt(Copy(IntToStr(reg[1]), 3, 2));
 
  { Esta corrige o ano para apenas dois digitos, por forma a ser inferior a
  255. em vez de reg[1] estava a variavel ano. }
  DecodeTime(Time, reg[4], reg[5], reg[6], reg[7]);
  reg[7] := reg[7] div 4; // esta corrige os milisegundos
  randomize;
  for i := 1 to 7 do
  begin
    if (i >= 2) and (i <= 6) then
      reg[i] := reg[i] + random(100);
 
    { O random é uma segurança adicional, pois como o ano e os milisegundos não
    são usados na totalidade, havia uma pequena possibilidade de sair
    duplicado... Assim é quase impossivel }
    Result := Result + IntToHex(reg[i], 2);
  end;
  Result := Prefix + Result;
end;

Veja um exemplo de uso:

1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage( GetNewID('SD') );
end;

no meu caso funcionou perfeitamente e acredito que o código seja compatível
com qualquer versão do Delphi ou Lazarus.

Referência: https://www.portugal-a-programar.pt/forums/topic/44358-criar-id-%C3%BAnico-delphi/

Caso tenha alguma dúvida ou sugestão deixe seu comentário.

  • Giovani Da Cruz
  • 2 comentários
  • 7 de abril de 2018

2 respostas para “Função para gerar um ID único em String”

  1. Ivan disse:

    eu utilizo dessa forma, acho que também serve

    uses
    System.DateUtils,…

    function GenerateUniqueName(const pPrefix: string = ”): string;
    var
    LMilsSince: Int64;
    begin
    if pPrefix.Trim.IsEmpty then
    Result := ‘xyz’
    else
    Result := pPrefix.Trim;
    Sleep(1);
    LMilsSince := MilliSecondsBetween(DateDelta, Now);
    Result := Result + LMilsSince.ToString;
    end;

  2. Obrigado Ivan, vamos criar outra dica com sua sugestão.

Deixe um comentário

Ir ao topo

© 2026 Infus Soluções em Tecnologia - Todos os Direitos Reservados