Em certo programa, uso a função “length” para verificar se ainda há espaço em uma variável (tipo char) para receber mais dados. Sem motivo aparente a função “length” começou a falhar. Quando o comprimento (da variável) passa de (aproximadamente) 7.500 bytes o Progress informa o erro “Tentativa de atualizar dados excedendo 32000. (12371)”. Coloquei mensagens para me certificar da quantidade de bytes armazenados na variável, e realmente estava em torno de 7.500 bytes. Fiz uma copia do programa e: - Criei uma variável auxiliar “vds-gest-resp-long” do tipo longchar para receber os dados. - Após o “for each” tentei atribuir o conteúdo de “vds-gest-resp-long” para “vds-gest-resp”. - O sistema deu o erro “Tentativa de atualizar dados excedendo 32000. (12371)”. - Verifique o “tamanho” vds-gest-resp-long e estava em torno de 7.500 bytes. Gostaria de saber se alguém já teve problemas com a função “length”. Um trecho do programa esta em anexo. Obrigado
Bom dia, A variável char suporta até 32000bytes... você tentou verificar o conteúdo que está sendo armazenado? talvez haja algum "lixo" que esteja proporcionando o erro...... fiz uma adapatação no seu teste ( pois nao conseguia rodá-lo devido ao fato de nao ter a tabela utilizada) ...e nao apresentou problema algum ( até o tamanho de 32000).segue: /*--- Rev: vds-gest-resp ---*/ Def Var cdsecao As Char Init "abcdefghijklmnopqrstuvwxyz" No-undo. Def Var vds-gest-resp As Char No-undo. assign vds-gest-resp = "". Repeat: process events. if vds-gest-resp = "" then do: assign vds-gest-resp = trim(cdsecao) + "," + trim(cdsecao). end. else do: if length(vds-gest-resp) > 31966 then do: /*--- Não funciona com mais de 7500 bytes. Não sei porque. ---*/ message 'A variável "vds-gest-resp" contém mais de 7.460 caracteres.' view-as alert-box error buttons ok. Leave. end. else do: assign vds-gest-resp = trim(vds-gest-resp) + "," + trim(cdsecao) + "," + trim(cdsecao). end. end. end. MESSAGE vds-gest-resp VIEW-AS ALERT-BOX INFO BUTTONS OK. assign vds-gest-resp = vds-gest-resp + "," + " " + "," + " ".
Boa tarde Obrigado pela atenção. Amanhã vou verificar se há caracteres especiais (lixo) nos meus dados. Assim que eu tiver uma posição eu retorno. Sds