Ir para conteúdo
Fórum Script Brasil
  • 0

Concatenar Mais Rapidamente


ramon

Pergunta

Bom tenho tres matrizes e gostaria de salvar em um arquivo porem gostaria de criptografalo antes de salvar ele

Então pensei em fazer

For Y = 0 To 100

For X = 0 To 50

For Z = 0 To 20

conteudo = conteudo & banco(Y, X, Z)

Next Z

Next X

Next Y

conteudo = criptografia(conteudo)

Open caminho For Output As #1

print #1, conteúdo

Close #1

porem eu to concatenando e ta ficando muito lento para salvar, alguém poderia me ajudar a melhorar este codigo para ficar mais rápido a sua gravação

Este assunto já foi discutido aqui mas eu gostaria de uma ajudinha para concatenar mais rapidamente teria algum jeito

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0
não entendi esta parte conteúdo = string(200*20*13, chr(0))

como que eu faco para esta variavel ficar sem um limite especifico

Ela não tem limite, mas você tem. Veja:

For Y = 0 To 100
  For X = 0 To 50
    For Z = 0 To 20
      conteudo = conteudo & banco(Y, X, Z)
    Next Z
  Next X
Next Y
Uma vez que você definiu os valores nos Fors ali o número de iterações (loops) *é* fixo, ou seja, 101*51*21. Então, sua string deverá ter este tamanho, ou seja:
conteúdo = string(101*51*21, chr(0))
Se você fizer algo como:
For Y = 0 To limite1
  For X = 0 To limite2
    For Z = 0 To limite3
      conteudo = conteudo & banco(Y, X, Z)
    Next Z
  Next X
Next Y
Sua string será então:
conteúdo = string(limite1*limite2*limite3, chr(0))

Dá no mesmo.

Sacou? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
mas você ta fazendo a comparacao como se a minha matrix tive-se 1byte em cada vetor

E seu tive-se uma palavra com 20 caracteres "Este site é bom" ai aumentaria o limite

Ah, sim! De fato. Nesse caso então, a solução acima não é viável. Mas, já experimentou escrever diretamente no arquivo ao invés de concatenar em uma string para depois fazer isso?

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
já mas antes de gravar no arquivo eu quero criptografar para depois salvar num arquivo

ae que ta o problema

Criptografa cada parte, ué?! Não vai dar no mesmo? Ou seja:

print #n, criptografia(banco(x, y, z))

A não ser que a sua função de criptografia utilize o tamanho da string nos cálculos para criptografar. Nesse caso, aí complica.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Nessa função o tamanho da string não influencia em nada. Ele é utilizado apenas para percorrer a string. Portanto, não existe problema algum em concatenar as partes separadas, juntar tudo e depois descriptografar. Veja esse teste que fiz aqui:

    k = Criptografia("teste1")
    j = Criptografia("teste2")
    Debug.Print Criptografia(k & j)

Veja que juntei k e j antes de descriptografar e a saída é correta.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

bom então mais rapido do que isso não dá?

outra teria como gravar no arquivo tudo em uma linha continua pois a o print grava linha por linha e o arquivo figa muito grande

ou teriei que usar na forma binaria

Link para o comentário
Compartilhar em outros sites

  • 0

bom então mais rapido do que isso não dá?

Veja a quantidade strings que você está manipulando... acho que realmente vai ficar difícil acelerar esse processo (a não ser fazendo ele em C... biggrin.gif).

outra teria como gravar no arquivo tudo em uma linha continua pois a o print grava linha por linha e o arquivo figa muito grande

ou teriei que usar na forma binaria

Sim, nesse caso seria melhor utilizar o modo binário e a instrução Put ao invés do Print.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

a instrucao put consegue concatenar o conteudo de uma variavel para um arquivo não existe uma funcao que concatena o conteudo de uma variavel para uma outra

pois pelo que vi a gravacao é rapida e na verdade a instrucao put esta sim concatenando não é?

Link para o comentário
Compartilhar em outros sites

  • 0
a instrucao put consegue concatenar o conteudo de uma variavel para um arquivo não existe uma funcao que concatena o conteudo de uma variavel para uma outra

pois pelo que vi a gravacao é rapida e na verdade a instrucao put esta sim concatenando não é?

Na verdade ela não concatena, apenas insere no final do arquivo. Quando você faz:

a = "tes"
a = a & "te"

Ao fazer a & "te" você estará gerando uma *nova string* e estará atribuindo a mesma à a. O processo *não é* simplesmente chegar no final de "a" e enxertar o novo pedaço, por isso é que o processo vai ficando cada vez mais demorado a medida que a string vai crescendo. Isso se tratando de strings. No caso do Put, a nova string simplesmente é colocada no final do arquivo e não importa o que havia antes (ela nem sequer olha isso), por isso que o processo é bem mais rápido.

Sacou? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

beleza so mais uma duvida

Para gravar uso

Open Caminho For Binary As #1

For Y = 0 To 100
For X = 0 To 50
For Z = 0 To 20
Put #1, , Criptografia(banco(Y, X, Z) & "@")
Next Z
Next X
Next Y

Close #1
E para carregar ta dando pau
Open Caminho For Binary As #1
Dados = Split(Input(LOF(1), 1), "@")
Close #1
I = 0

For Y = 0 To 100
For X = 0 To 50
For Z = 0 To 20
banco(Y, X, Z)  = dados(I)
Next Z
Next X
Next Y

Eu teria que descriptografar ae é to me apertando para fazer isto você teria alguma sugestão para funcionar

Link para o comentário
Compartilhar em outros sites

  • 0

Bom usei este agora


Open Caminho For Binary As #1
Dados = Input(LOF(1), 1)
Dados = Criptografia(Dados)
Close #1

mas ta muito lento teria como acelerar isto

esta lento na descriptografia uma vez que eu to descriptografando tudo de uma vez só gostaria saber se da para melhorar a descriptografia

Link para o comentário
Compartilhar em outros sites

  • 0

O problema na outra rotina é que falta incrementar o I dentro do loop mais interior. Caso contrário, ele não vai sair de 0. Quanto a acelerar o processo, como a rotina de descriptografia é a mesma que a de criptografia, continua valendo o que eu disse 5 posts acima.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

mas se eu não descriptografar antes ai que acontece o erro então eu gostaria descriptografar pedacos por pedaco para prencher a matiz como aconteceu no processo de salvar fui salvando cada vetor e criptografando agora eu tenho que descriptogrfar pedaco por pedaco e ao mesmo tempo preencher a matriz

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...