Fórum Pessoal, ajuda ae com esse Copy()... #369092

16/03/2009

0

O Valor da String que tenho é retirada do Registry, semelhante a essa abaixo:

#?USBVid_0951&Pid_16070019E0014A165C8812120139{a5dcbf10-6530-11d2-901f-00c04fb951ed}

Quero colocar numa outra String o valor:

USB\Vid_0951&Pid_1607\0019E0014A165C8812120139

Só que, o valor de [b:61babd824d]Pid_[/b:61babd824d] acima muda, podendo ter mais de 4 casas ou menos, e no lugar de [b:61babd824d][/b:61babd824d] coloco [b:61babd824d]\[/b:61babd824d]

Eu sei que tenho de procurar por [b:61babd824d][/b:61babd824d] para localizar o Pid_

Algum fera saberia fazer esse copy para a string?

Ajuda ae que complicou a minha lógica aqui :lol:


Onjahyr

Onjahyr

Responder

Posts

16/03/2009

Woinch

Experimente utilizando essa função:

function CopiaStr(Texto: String; Posicao: Integer;
  Ocorrencia: String): String;
var
  I : Integer;

begin
  Result := ´´;
  I :=  0;

  while (Pos(Ocorrencia, Texto) > 0) do
  begin
    Result := Copy(Texto, 0, Pos(Ocorrencia, Texto)-1);
    Delete(Texto, 1, Pos(Ocorrencia, Texto)+ Length(Ocorrencia) -1);
    Inc(I);
    if (I = Posicao) then
      Exit;

    Result := Texto;
  end;
end;


Exemplo de utilização:

ShowMessage(CopiaStr(´#?USBVid_0951&Pid_16070019E0014A165C8812120139{a5dcbf10-6530-11d2-901f-00c04fb951ed}´ 5, ´´)); //Mostra mensagem "0019E0014A165C8812120139"


Espero ter ajudado...


Responder

Gostei + 0

16/03/2009

Onjahyr

E ae Woinch, funcionou sim.
Poxa, tava com a cabeça quente. Estou criando um programa de proteção. Faz 15 dias que estou desse jeito! É rotinas de baixo nível da API usando WMI, WbemScripting_TLB e XML. Ufaa!!!
Agora é só interface e criação de imagem ISO que tenho pronto, falta só adaptação...

Blz heim, sou grato pela ajuda.


Responder

Gostei + 0

16/03/2009

Marco Salles

ba que ta pronto vou mandar .

function OutraOpcao(const texto:String):string;
var
pi,pf:integer;

begin
result:=Texto;
pi:=pos(´USB´,texto);
pf:=pos(´{´,texto);
result:=copy(texto,pi,pf-pi-1);
result:=stringReplace(result,´#´,´\´,[rfReplaceAll, rfIgnoreCase]);
end;


Exemplo de usao

showmessage(OutraOpcao(
´?USBVid_0951&Pid_16070019E0014A165C8812120139{a5dcbf10-6530-11d2-901f-00c04fb951ed)´));


Responder

Gostei + 0

17/03/2009

Onjahyr

Gostei do [b:b47c881760]stringReplace[/b:b47c881760], pelo menos não vou ter que fazer na mão.

Grato.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar