Ir para conteúdo
Fórum Script Brasil

Guinho.TI

Membros
  • Total de itens

    36
  • Registro em

  • Última visita

Tudo que Guinho.TI postou

  1. Ultimamente, devido a vida corrida, eu só tenho tempo para estudar Java na Faculdade. Gostaria mesmo de ter mais tempo para me dedicar, pois eu me interesso e gosto de programar. Assim que eu der uma "aliviada" já sei onde e a quem recorrer, rsrsrs! Abc e valeu, mais uma vez, pela atenção
  2. Valeu pela dica! Verei o que posso fazer! Abc
  3. Sou novo em Java e estou tentando montar um projeto. Estou criando Interface Gráfica e gostaria de associar os métodos das minhas classes que estão prontas a ela. Alguém sabe onde posso achar um tutorial que me auxilia e fazer isso?
  4. Guinho.TI

    Chat Em Rmi

    valeu mesmo pela dica! Eu pedi logo pra baixar porque eu estive tentando fazer e não consegui e as pesquisas eu eu fiz na Net não estavam sendo suficientes.... Consegui achar muito material em sites estrangeiros, e acredito que com mais estas informações eu consiga o que eu quero. Abc
  5. Esperei um dia para ver como ficaria a atualização dos LOGS e deu certo! Os Logs que estavam dando erro atualizaram e os que iniciaram ontem e finalizaram hoje atualizaram normalmente após a alteração do código. Espero que não ocorra mais erros. Valeu mesmo pela atenção, Jhonas! Abc
  6. Jhonas, ficou muito boa esta estrutura. Era isso que eu estava tentando montar mas não conseguia. Vou fazer as alterações necessárias e ver o que ocorre! Tomara que desta vez funcione.
  7. Vamos ver se eu entendi ou piorei a situação. No meu caso, quando o a String "Exit Status" é encontrada, significa que o LOG finalizou. Se o log finalizou, devem ser coletados os outros dados, Status e data Término, ou seja, vai até o final. Se não finalizou, pula para leitura do outro log. Sendo assim, este trecho está correto? if completo=true then begin func := Funcoes.Create; temp := Trim(AnsiRightStr(linha, Length(linha) - Pos(':', linha))); temp := StrtoInt(temp); break; end else begin completo:=false; continue; end; Quanto ao While eu vou tentar desvinculá-los e digo como ficou. Abc
  8. De acordo com o que aprendi até agora, modifiquei algumas linhas do código. Enquanto eu tento fazer alguns testes por aqui, gostaria que vocês analisassem desde já, se pelo menos a estrutura está certa, mesmo que ainda não funcione do jetio que eu preciso. Se possível, gostaria que alguém pudesse me explicar também a diferença do BREAK e do CONTINUE. while (indice > arquivo.Count - 10) do begin indice := indice - 1; linha := arquivo[indice]; //Se a string for encontrada, significa que o arquivo está completo if (AnsiContainsText(linha, '= Exit Status') = True) then completo:= True; if completo=true then begin func := Funcoes.Create; temp := Trim(AnsiRightStr(linha, Length(linha) - Pos(':', linha))); temp := StrtoInt(temp); break; end else begin completo:=false; continue; end; if (func.IsInteger(temp) = True) then begin self.Status := StrToInt(temp); break; end else completo := False; //Data de término while (indice < arquivo.Count) do begin linha := arquivo[indice]; temp := AnsiMidStr(linha, Pos('/', linha) - 2, LastDelimiter(':', linha) - Pos('/', linha) + 8); if (func.IsDate(temp) = True) then begin self.Termino := StrToDateTime(temp); completo := True; Break; end else completo := False; indice := indice + 1; end; end; end; //TÉRMINO DO WHILE DE LEITURA DO ARQUIVO - RODAPÉ
  9. Bom, a estrutura para a leitura sequencial do todos os Logs já estah pronta e funcionando. O único erro é nesta parte, pois o antiga rotina nem sempre está coletando o FIM dos Scripts. Eles já estão como terminados, ou seja, com a String "Exit Status", mas o BD não tem os dados "Status" e "data Término", o que faz o usuário imaginar que o Script está em andamento ainda. O que eu estou fazendo é recontruir a Procedure que foi feita por outro estagiário. Segue abaixo a que está dando erro(que foi feita por outra pessoa): procedure ArquivoLog.Atualizar(dirArqLog: String); var arquivo:TStringList; //Variável que vai carregar e manipular o arquivo linha:String; //Variável em que será colocada a linha lida do arquivo cont:integer; //Contador para informar qual o número da linha corrente; indice:integer; //Indice para coleta dos dados na lista temp:String; //Variável onde ficarão as informações temporárias da linha lida do arquivo completo:Boolean; //Variável para informar se o arquivo de log está completo (True) ou não (False), //Muda para true quando encontra o rodapé padrão dos arquivos de log arqErro:TStringList; //Objeto para carregar os erros existentes no arquivo de erro e salvá-los junto com os novos erros:TStringList; //Objeto para guardar os erros gerados pelo sistema e passá-los para o objeto arqErro func:Funcoes; nomeArq:String; begin nomeArq := ExtractFileName(dirArqLog); arquivo := TStringList.Create; completo := False; Writeln('>> Atualizando dados do arquivo...'); cont := 0; self.CaminhoLog := dirArqLog; try CopyFile(PChar(dirArqLog), Pchar('CopyLogTWS_Log_' + nomeArq), false); arquivo.LoadFromFile('CopyLogTWS_Log_' + nomeArq); DeleteFile(Pchar('CopyLogTWS_Log_' + nomeArq)); {LENDO DADOS DO ARQUIVO DE LOG - CABECALHO} indice := 0; while (indice < arquivo.Count - 1) do begin cont := cont + 1; linha := arquivo[indice]; //Nome do script if ((cont = 4) and (completo = False)) then begin temp := AnsiRightStr(linha, Length(linha) - Pos(':', linha) - 1); if (AnsiContainsText(temp, ' ')=True) then temp := AnsiLeftStr(temp, Pos(' ', temp) - 1); temp := AnsiRightStr(temp, Length(temp) - LastDelimiter('\', temp)); if (AnsiContainsText(temp, '.')=True) then temp := AnsiLeftStr(temp, pos('.', temp) - 1); self.NomeScript := temp; end //Número do job else if ((cont = 5) and (completo = False)) then begin temp := AnsiRightStr(linha, Length(linha) - LastDelimiter(':', linha)); self.Job := StrToInt(Trim(temp)); Break; {DEPOIS DE LER O NUMERO DO JOB, NÃO É NECESSÁRIO LER OS OUTROS DADOS DO CABEÇALHO PORQUE O NOME DO SCRIPT E O NUM DO JOB FORMAM A CHAVE PRIMÁRIA DA TABELA} end; indice := indice + 1; end; //TÉRMINO DO WHILE DE LEITURA DOS DADOS DO CABEÇALHO {LENDO OS DADOS DO ARQUIVO DE LOG - RODAPÉ} indice := arquivo.Count; while (indice > arquivo.Count - 10) do begin indice := indice - 1; linha := arquivo[indice]; //Se a string for encontrada, significa que o arquivo está completo if (AnsiContainsText(linha, '= Exit Status') = True) then begin completo := True; func := Funcoes.Create; temp := Trim(AnsiRightStr(linha, Length(linha) - Pos(':', linha))); END; if (func.IsInteger(temp) = True) then self.Status := StrToInt(temp) else begin completo := False; break; end;//fim do IF //Data de término while (indice < arquivo.Count) do begin linha := arquivo[indice]; temp := AnsiMidStr(linha, Pos('/', linha) - 2, LastDelimiter(':', linha) - Pos('/', linha) + 8); if (func.IsDate(temp) = True) then begin self.Termino := StrToDateTime(temp); completo := True; Break; end else completo := False; indice := indice + 1; end; Break; end; end; //TÉRMINO DO WHILE DE LEITURA DO ARQUIVO - RODAPÉ {VERIFICANDO SE O TERMINO DO ARQUIVO FOI ENCONTRADO, CASO NEGATIVO O PROCESSO DE ATUALIZAÇÃO É ABORTADO} if (completo = True) then begin //Lendo todo o conteúdo do arquivo de log self.LogScript := arquivo.Text; end else begin Writeln('-- MSG: A atualizacao dos dados do arquivo de log não foi realizada'); Writeln('-- MSG: O log ainda esta em andamento'); exit; //Saindo da função sem atualizar o arquivo end; except //TRATAMENTO DA EXCEÇÃO - O log ainda está em andamento, os dados não podem ser atualizados on e:EFileStreamError do begin Writeln('-- MSG: A atualizacao dos dados do arquivo de log não foi realizada'); Writeln('-- MSG: O log ainda esta em andamento'); Exit; end; on e:Exception do begin temp := DateTimeToStr(Now, formatoData); Writeln('## ' + temp); Writeln('-- ERRO: Ocorreu um erro durante a atualizacao dos dado do arquivo'); Writeln('-- MSG: ' + e.Message); if (self.config.DiretorioArqErro <> '') then begin arqErro := TStringList.Create; erros := TStringList.Create; erros.Append(''); erros.Append('## ' + temp); erros.Append('-- ERRO: Ocorreu um erro quando o sistema tentava atualizar o arquivo de log ' + dirArqLog); erros.Append('-- MSG: ' + e.Message); if (FileExists(self.config.DiretorioArqErro) = True) then arqErro.LoadFromFile(self.config.DiretorioArqErro); arqErro.AddStrings(erros); arqErro.SaveToFile(self.config.DiretorioArqErro); erros.Destroy; arqErro.Destroy; end; self.numErros := self.numErros + 1; Exit; end; end; {A PARTIR DESSE PONTO TODOS OS DADOS PARA ATUALIZAÇÃO FORAM COLETADOR DO ARQUIVO, O CÓDIGO ABAIXO FARÁ A ATUALIZAÇÃO NO BANCO DE DADOS} try with self.modConn.queryUpdateArqLog.Parameters do begin ParamByName('NomeScr').Value := self.NomeScript; ParamByName('Job').Value := self.Job; ParamByName('Termino').Value := self.Termino; ParamByName('Status').Value := self.Status; ParamByName('LogScript').Value := arquivo.Text; end; //Atualizando os dados do arq de log no Banco de Dados self.modConn.queryUpdateArqLog.ExecSQL; //Mostrando os dados do Arquivo de Log atualizado Writeln('>> OS DADOS DO ARQUIVO DE LOG FORAM ATUALIZADOS COM SUCESSO'); Writeln('>> NOME SCRIPT: ' + self.NomeScript); Writeln('>> No DO JOB: ' + IntToStr(self.Job)); Writeln('>> TERMINO: ' + DateTimeToStr(self.Termino, self.formatoData)); Write('>> STATUS: ' + IntToStr(self.Status)); if (self.Status = 0) then Writeln(' (OK)') else Writeln(' (ERRO)'); except on e:Exception do begin Writeln('## ' + DateTimeToStr(Now, formatoData)); Writeln('-- ERRO: Ocorreu um erro durante a atualizacao dos dados do arquivo no BD'); Writeln('-- MSG: ' + e.Message); end; end; end; Acredito então estar indo no caminho certo. Aceito sugestões! Abc
  10. Ainda tenho uma dúvida: Este caso funcionou direito pois eu estou fazendo a leitura de somente um arquivo. A real intenção deste programa é ler uma série de arquivos de logs. Todos os Logs são salvos no Banco de Dados, mas alguns dados como Data de Término e Status só podem ser atualizados após o término de um Script, ou seja, quando programa insere no mesmo a String " = Exit Status" . Esta rotina que estou tentando criar vai servir para isso: Ler todos os logs, salvar no BD, verificar os que finalizados, inserir no BD as informações dos finalizados e reler até que todos estejam finalizados. Então a lógica que eu quero é essa: -Se tiver finalizado, salva os dados no BD e passa para o próximo Log . -Se não tiver finalizado, passa para o próximo Log. Será um Loop diário até que todos os arquivos estejam finalizados e inseridos no BD. Neste caso, a rotina acima funcionará corretamente ou eu terei que fazer ainda algumas alterações? Desde já agradecido...
  11. Guinho.TI

    Chat Em Rmi

    Ouvi dizer que é possível criar uma espécie de chat utilizando RMI. Alguém saberia onde tem um codigo pronto para eu baixar?
  12. É o seguinte, Depois de muito custo, consegui montar uma rotina que lê um arquivo e procura nele uma String que indica que houve o fim na execução de um script.Agora estou tendo dois problemas: 1. Não consigo inserir múltiplos comandos dentro do If. Quando eu faço isso, ele só resolve o que estiver no Else. Temporariamente, criei vários If´s pra solucionar isto. 2. Quando eu incluo a linha "if completo=false then break;" o programa me devolve para os dois casos (true/false) a Mensagem "Script em andamento", mas se eu retiro novamente, o programa funciona corretamente. Arq: TStringList; i: Integer; FileName:string; linha:String; temp:String; completo:boolean; begin Arq := TStringList.Create; (*** INSTANCIA A VARIÁVEL ***) try FileName := 'C:\log.txt'; if FileExists(FileName) then Arq.LoadFromFile('C:\log.txt'); for i := 0 to Arq.Count - 1 do (*** PERCORRE AS LINHAS (ÍNDICES) ***) begin linha:=Arq[i]; {se esta string estiver no LOg, significa que a execução terminou} if (AnsiContainsText(linha, '= Exit Status) = True) then completo:= True; {Se a o Log finalizou, recebe o número do Status. Se não finalizou, completo é false} if completo=true then temp := Trim(AnsiRightStr(linha, Length(linha) - Pos(':', linha))) else completo:=false; if completo=false then break; end; //End For if completo=true then Showmessage('Script Finalizado!') else showmessage('Script em Andamento); finally FreeAndNil(Arq); // LIBERA A VARIÁVEL DA MEMÓRIA end;//end do try/finally end.
  13. Cara, pior que foi isso mesmo! Olhei com calma e vi que o que você falou está correto! Brigadão mesmo! Porém ainda não funciona do jeito que eu queria. Estive dando uma olhada sobre como fazer o que eu queria com TStringList e consegui. Vou postar para quem tiver as mesmas dúvidas: var (*** VARIÁVEL DE MANIPULAÇÃO DO ARQUIVO ***) Arq: TStringList; i: Integer; //x: Integer FileName:string; aff:boolean; linha:String; begin Arq := TStringList.Create; (*** INSTANCIA A VARIÁVEL ***) try FileName := 'C:\log.txt'; (*** ATRIBUI O NOME DO ARQUIVO COM O DIRETÓRIO ***) if FileExists(FileName) then (*** VERIFICA SE O ARQUIVO EXISTE ***) begin Arq.LoadFromFile('C:\log.txt'); for i := 0 to Arq.Count - 1 do (*** PERCORRE AS LINHAS ***) begin linha:=Arq[i]; aff:=ansicontainstext(linha,'error'); If aff=true Then Showmessage('LOG executado com erro') Else Showmessage('LOG executado com sucesso!') end;//fim for end;//fim else finally FreeAndNil(Arq); // LIBERA A VARÁVEL DA MEMÓRIA end; end.
  14. Preciso criar uma rotina que leia uma determinada String dentro de um arquivo txt e retorne se foi encontrada ou não. Eu havia feito o seguinte: var nomeDoArquivo: String; aff:boolean; arq: TextFile; linha: String; begin AssignFile ( arq, 'C:\log.txt'); Reset ( arq ); ReadLn ( arq, linha ); while not Eof ( arq ) do begin ReadLn ( arq, linha ); aff:=ansicontainstext(arq,'error'); If aff=true then Showmessage('ERRO encontrado no Log!') else showmessage('Log finalizado com sucesso!') end; CloseFile ( arq ); end; Quanso eu executo, aparece o seguinte erro: Incompatible Types 'String' and 'Text' O que fazer para consertar e fazer o que eu quero???
  15. Consegui resolver! da forma mais "boba" possível. Depois de fazer vários testes, inclusive o que o nosso amigo indicou, inseri um ON ERROR RESUME NEXT antes da conexão com o Banco de Dados, que era a linha que indicava erro. Desta forma, as mensagens de erro voltaram a ser exibidas como eu havia feito! valeww pela ajuda!
  16. É o seguinte: Possuo um formulário de consulta onde o usuário escolhe seus parâmetros de busca e as realiza. Dentre estes campos, eu possuo um campo HORAS, onde o usuário pode digitar o intervalo de horas desejado na consulta. Ocorre que, eu estava tentando criar alguns tratamentos de erros que caso o usuário digitasse algum valor inválido, por exemplo: 25:59, exibiria uma mensagem solicitando que ele retornasse a página e corrigisse o erro. Executei a mesma consukta em dois Servidores diferentes, não sei porque em um funciona e no outro não... Analisem! Ao invés de exibir a minha mensagem, o navegador exibe The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. A linha eque ele exibe o erro corresponde a da conexão: iRS.Open SQLStmt, oConn, 3, 1 Gostaria que vocês me ajudassem se possível
  17. Descobri o problema. Realmente as duas lógicas estão corretas, mas estive lendo alguns tutoriais e olha o que eu vi: Não utilize includes para estruturar o site, se uma página possuir um If ou um Select Case para escolher qual include utilizar, então, está na hora de você pensar em transformá-la em duas ou mais páginas distintas. Provavelmente deve ser por isso q não consigo e nem conseguirei resolver o problema. Valeu pela ajuda, Kuroi! Até a próxima!
  18. Fala, pessoal! Fiz a seguinte rotina: A Aplicação roda em dois Servidores diferentes. Então na página 1, é requisitado o Servidor Local (que pode ser serva/servb) e esta informação é enviada via Querystring para uma página no servc. Página 1 Na página 2, deve ser exibido o Menu relacionado ao Servidor da página anterior.Então, criei uma Session para armazenar este valor e criei um IF para inserir o menu correto: Página 2 O problema é que não importa qual dos dois servidores foi requisitado, o IF, sempre segue para o ELSE, ou seja, em ambas as páginas exibe o "Menu_servb.asp". Já dei Response.write para verificar se o nome do Servidor estava correto e estava. Inseri o "menu_Serva" no Else para ver se o problema estava no include, mas não estava. O que eu faço agora?
  19. Guinho.TI

    Varíavel / Operador

    Ok! Entendi e já corrigi! Ouvi dizer que eu posso utilizar o bufferedreader para ler as variávies e dei uma pesquisada na NET. Eu poderia fazer desse jeito: InputStreamReader valor; BufferedReader a; BufferedReader b; valor = new InputStreamReader(); a = new BufferedReader(valor); valor = new InputStreamReader(); b = new BufferedReader(valor);
  20. Guinho.TI

    Varíavel / Operador

    Conseguir fazer isso a mão. Não rodei pois não possuo nenhum software em casa. Estou no caminho certo?
  21. fala, pessoal! Estou iniciando com Java e fui solicitado a criar uma rotina que leia duas variáveis e após informar o operador aritmético, executar o cálculo. A lógica eu entendi, mas como eu faço isso em Java??? Se alguém puder me ajudar ficarei imensamente grato! Abc
  22. Micheus, Obrigado mesmo pela informação. Ela já me deu uma luz! O que eu fiz, então: * Criei um arquivo .txt chamado "teste" * Fui em variáveis do sistema, criei uma variável de nome "teste", que aponta para o diretório onde eu inseri o arquivo teste.txt. * Alterei as referências do código, referente a "'Variavel_Ambiente_JOB'" e substituí por teste. E funcionou!!!!!! Esta questão está resolvida! Caso haja outras subseqüentes, voltarei outra vez! Abc e fica com Deus!
  23. Sou novo na área e fui solicitado a alterar uma aplicação Delphi. Para testá-la, fiz uma cópia da mesma para um Servidor de Teste, e automaticamente eu deveria alterar a aplicação para se conectar a ele. A conexão com o Banco é feita na varíavel de ambiente, mas como eu troquei a aplicação de Servidor, eu não a encontro! Desta forma, eu não consigo alterar a conexão e não tenho como testar. Gostaria de saber como eu faço para criar uma nova e fazer a chamada a ela, ou como descobrir onde está localizada a existente... function Configuracao.CarregarDados: Boolean; var arqConfig:TStringList; temp:String; cont:Integer; func:Funcoes; retorno:Boolean; //Valor do retorno da função (se carregou os dados com sucesso ou não) begin retorno := True; arqConfig:= TStringList.Create; try //Lendo a variável do ambiente com o diretório do arquivo de configuração temp := GetEnvironmentVariable('Variavel_Ambiente_JOB'); arqConfig.LoadFromFile(temp); //Lendo os dados do arquivo de configuração for cont := 0 to arqConfig.Count - 1 do //Lendo a connection string if (AnsiContainsText(arqConfig[cont], '#CONN_STRING#') = True) then begin temp := arqConfig[cont]; temp := AnsiReplaceText(temp, '#CONN_STRING#', ''); self.connString := temp; end //Lendo o número de dias para varredura else if (AnsiContainsText(arqConfig[cont], '#NUM_DIAS#') = True) then begin temp := arqConfig[cont]; temp := AnsiReplaceText(temp, '#NUM_DIAS#', ''); func := Funcoes.Create; if (func.IsInteger(temp) = True) then self.numDias := StrToInt(temp); func.Destroy; end //Lendo o endereço da fila else if (AnsiContainsText(arqConfig[cont], '#END_FILA#') = True) then begin temp := arqConfig[cont]; temp := AnsiReplaceText(temp, '#END_FILA#', ''); self.endFila := temp; end //Lendo o diretório do arquivo de erros else if (AnsiContainsText(arqConfig[cont], '#DIR_ERRO#') = True) then begin temp := arqConfig[cont]; temp := AnsiReplaceText(temp, '#DIR_ERRO#', ''); self.DiretorioArqErro := temp; end else begin Writeln(''); Writeln('-- ERRO: Existem informacoes erradas no arquivo de configuracao.'); retorno := false; end; except on e:exception do begin Writeln(''); Writeln('-- ERRO: Ocorreu um erro quando o sistema tentava ler o arquivo de configuracoes.'); Writeln('-- MSG: ' + e.Message); retorno := false; Halt(1); end; end; result := retorno; end; A Variável de Ambiente contém os seguintes dados: #CONN_STRING#Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BANCO_DE_DADOS;Data Source=SERVIDOR;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=USUARIO;Use Encryption for Data=False;Tag with column collation when possible=False #NUM_DIAS#3 #END_FILA#cotovia\private$\logtws #DIR_ERRO#C:\Temp\JOB_Erro.txt
  24. Guinho.TI

    Problema Com Horas

    Como o código é muito grande, vou inserir somente as partes que utilizam esta parte 1. Página do Form: <FORM name=""JobsMF"" id=""JobsMF"" action=""Result.asp"" method=post> INTERVALO DE HORAS entre : <input class=""textarea"" type=""text"" name=""H_INI"" id=""H_INI"" size=6 value="&StrValue("H_INI",4)&" > e: <input class=""textarea"" type=""text"" name=""H_FIM"" id=""H_FIM"" size=6 value="&StrValue("H_FIM",5)&" > IfNull("H_INI") IfNull("H_FIM") 2. Pagina de Functions: * Cria uma session para os camos textbox não nulos. Public Sub IfNull(Nome) If (Request.Form(""&Nome&"") <> "") Then Session(""&Nome&"") = Trim(Request.Form(""&Nome&"")) Else Session.Contents.Remove(""&Nome&"") End If End Sub * Formata o campo, criando uma função de horas Public Function StrValue(nSession,op) Select case op case 4 StrValue = THora(CStr(Trim(Session(nSession))),1) case 5 StrValue = THora(CStr(Trim(Session(nSession))),2) End Select End Function * Função que trabalha com as horas, inserindo os campos não digitados (lembrando que, somente o case 2 não funciona) Public Function THora(PHora,opcao) Dim aux Dim conth Dim temp Dim hora Dim hFormat If (PHora <> "") Then conth = Len(PHora) aux = Split(PHora,":",-1) If (aux(0) = "24") then hora = "00" End If Select case conth case 8 If (aux(0) = "24") then hFormat = "00:"&aux(1)&":"&aux(2) Else hFormat = PHora End If case 5 If (aux(0) = "24") then hFormat = "00:"&aux(1)&":00" Else hFormat = PHora&":00" End If case 2 If (aux(0) = "24") then hFormat = "00:00:00" Else hFormat = PHora&":00:00" End If End Select Else If (opcao = 1) Then hFormat = "" Else hFormat = "23:59:59.997" End If End If THora = hFormat * Query (este é o trecho que usa esta parte) .... WHERE data_hora BETWEEN '"&Session("Data_Inicio")&" "&Session("H_INI")&"' AND '"&Session("Data_fim")&" "&Session("H_FIM")&"'" ** Não fui eu quem desenvolvi esta parte da aplicação, por isto estou tendo estes problemas. Uma vez, eu tentei criar uma session para receber o valor de THORA e enviar este valor para Query e não consegui. Pode ser este o problema... desde já agradecido
  25. Amigos, Sou novo na área e possuo uma rotina (criada por outra pessoa) que cria nomes a partir de outros. Ex: **Arquivo: OPCMASTER#C01DAAE98661D0C0.J_002_A-07-025 {LENDO DADOS DO ARQUIVO DE LOG - CABEÇALHO} while (indice <= arquivo.Count - 1) do begin cont := cont + 1; linha := arquivo[indice]; if (cont = 2) then begin temp := AnsiRightStr(linha, length(linha) - LastDelimiter('_', linha)); temp := AnsiReplaceStr(temp, '-', '#'); temp := Trim(temp); self.SiglaSist := AnsiMidStr(temp, Pos('#', temp) + 1, LastDelimiter('#', temp) - Pos('#', temp)-1); modConn.querySelectIdAplic.Parameters.ParamByName('NomeAplic').value := temp; end ** Ao final deste trecho ele retorna dois valores: temp = A#07#25 Self.SiglaSist = 07 e grava no Banco. Ocorre que, surgiu um nome de arquivo maior que os comuns e por algum motivo o trecho está retornando um novo valor: OPCMASTER#C01D119C207A1280.J_002_A-07-025-POS9030 temp = A#07#25#POS9030 Self.SiglaSist = 07#025 (quando deveria ser somente 07). Gostaria de obter ajuda para fazer com que a rotina retorne o valor correto. Desde já agradecido.
×
×
  • Criar Novo...