Dica aleatória para gerar string unica.

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Dica aleatória para gerar string unica.

Mensagem por rochinha »

Amiguinhos,

Uma segunda função que gera uma string com montagem a partir de dois conjuntos simples. Util para montar uma senha de acesso específica que não se repete:

Código: Selecionar todos

function scrumble2()
   cPrimeiraString := "0123456789"
   cSegundaString  := "ABCDEFGHIJ"
   cTerceiraString := ""
   DO WHILE len(cPrimeiraString) > 0 // Vou diminuir o tamanho a cada passagem
       // A cada passada o Random vai diminuindo o range de atuacao
       cQualDigito1 := subStr( cPrimeiraString, Random( len(cPrimeiraString) ), 1 )
       cQualDigito2 := subStr( cSegundaString , Random( len(cSegundaString) ) , 1 )

       cPrimeiraString := StrTran( cPrimeiraString, cQualDigito1, "" )
       cSegundaString  := StrTran( cSegundaString , cQualDigito2, "" )

       cTerceiraString := cTerceiraString + cQualDigito1 + cQualDigito2 + "|"

   ENDDO
   return cTerceiraString
Uso:
FUNCTION MAIN()
? "scrumble2()", scrumble2()
RETURN .T.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
clodoaldomonteiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 821
Registrado em: 30 Dez 2006 13:17
Localização: Teresina-PI
Contato:

Dica aleatória para gerar string unica.

Mensagem por clodoaldomonteiro »

Ótima dica, Rochinha e aproveitando ela, fiz um ajuste para informar por parâmetro o tamanho da Senha a ser retornada.

Código: Selecionar todos

   /////////////////////////////////////////////////////////////////////////////
   //Alterando Dica do Rochinha
   // n = Tamanho da string senha
function scrumble3( n )
   Local i, r := '', cString := "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" //pode incluir qq caractere permitido em senhas.

   For i := 1 To n
       r += SubStr( cString, HB_RandomInt( Len( cString ) ), 1 )
   Next
   
   return r
Abraços
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Dica aleatória para gerar string unica.

Mensagem por Fernando queiroz »

Código: Selecionar todos

FUNCTION create_Txid(  ) 
Local cRetorno:="";
    , nCont;
    , equivalente:= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',;
                    '0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y',;
                    'Z','0','1','2','3','4','5','6','7','8','9'}

    For nCont:=1 to 32
        cRetorno += equivalente[HB_RandomInt(1, 62)]
    next

return cRetorno
fiz assim , ficou legal , consigo gerar o TXID do PIX com isso, gera uma senha de 32 caracteres
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Responder