gandarez 0 Denunciar post Postado Setembro 26, 2006 Ola pessoal, Sei quem é bem simples porém não me recordo qual é a função. O Seguinte, tenho strings assim 066X088, 077X112 e quero separa-las em um vetor ou duas variaveis que seja, da seguinte forma var[0] := 77var[1] := 112 Deu para entender ? Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Setembro 26, 2006 Você pode fazer isto usando o copy str1:=copy(str_valor,1,3);str2:=copy(str_valor,5,3);No caso o valor 077X112 fica:str1 = 077 str2 = 112 Compartilhar este post Link para o post Compartilhar em outros sites
gandarez 0 Denunciar post Postado Setembro 26, 2006 Mas no caso ficou uma string = 077, então vou fazer um strtoInt logo após. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Setembro 26, 2006 Pode fazer assim então: Retorno em variável string str1:=IntToStr(StrToInt(copy(str_valor,1,3)));str2:=IntToStr(StrToInt(copy(str_valor,5,3))); Retorno em variável integer str1:=StrToInt(copy(str_valor,1,3));str2:=StrToInt(copy(str_valor,5,3)); Compartilhar este post Link para o post Compartilhar em outros sites
gandarez 0 Denunciar post Postado Setembro 26, 2006 Usando esse copy esta dando mensagem de violação de acesso a memória; Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Setembro 26, 2006 Possivelmente a sua string esta vindo com menos de 7 caracters... No caso este copy ele esta trabalhando para funcionario com 7 caracters... Compartilhar este post Link para o post Compartilhar em outros sites
gandarez 0 Denunciar post Postado Setembro 26, 2006 no caso não é isso, pois eu ate fix o teste setando uma string qualquer de tamanho 7 e me deu o mesmo erro; Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Setembro 26, 2006 Coloca o fonte que você esta usando... Compartilhar este post Link para o post Compartilhar em outros sites
gandarez 0 Denunciar post Postado Setembro 26, 2006 achei o erro, o COPY trabalha com o numero inicial indexado, então tem que ser assimcopy(aux, 0, 3) Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Setembro 26, 2006 Uma forma mais dinâmica, independente da posição do X seria assim: procedure TForm1.SeparaValor(str: string; var ret1, ret2: integer);var x: integer;beginret1:=0;ret2:=0;x:=1;while x <= Length(str) do begin if str[x] <> 'X' then ret1:=StrToInt(IntToStr(ret1) + str[x]) else begin str:=copy(str,x + 1,Length(str) - x); if str <> '' then ret2:=StrToInt(str); x:=Length(str); end; Inc(x); end;end; Declara esta procedure, para chamar precisa ser assim: Declara duas variáveis do tipo integer var valor1, valor2: integer; e chama: SeparaValor(edit1.Text,valor1,valor2); No caso indiferente do local do X ele vai lhe retornar algo, caso não encontre algum valor retorna 0. Compartilhar este post Link para o post Compartilhar em outros sites
gandarez 0 Denunciar post Postado Setembro 26, 2006 De qq maneira continua dando o erro esta assim o fonte var aux : string; tam_resma : array of string;begin tam_resma[0] := copy(DBLookupComboBox5.Text, 0, 3); //pau quando executa esta linha tam_resma[1] := copy(DBLookupComboBox5.Text, 4, 3);end; Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Setembro 26, 2006 Faz um teste com a procedure que lhe passei, e no caso não precisa usar este array, como menos memória declarando as duas variáveis. Compartilhar este post Link para o post Compartilhar em outros sites
gandarez 0 Denunciar post Postado Setembro 26, 2006 nao tinha carregado aki seu post, vou dar uma olhada antes de continuar Compartilhar este post Link para o post Compartilhar em outros sites
gandarez 0 Denunciar post Postado Setembro 26, 2006 agora funfou!valeu Compartilhar este post Link para o post Compartilhar em outros sites