ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Problema com ifthen ?
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 20, 2019 10:13 am    Assunto: Problema com ifthen ? Responder com Citação

Queria mudar esta rotina
Código:

if bCSV then
            Fnome := Trim(CropStrRight(lStringListLine[iniContatoNome], 50))
          else
            Fnome := Trim(CropStrRight(DM.FDQueryAccess.Fields[iniContatoNome].Value, 50));


Por essa

Código:
Fnome := Trim(CropStrRight(IfThen(bCSV, lStringListLine[iniContatoNome],
              DM.FDQueryAccess.Fields[iniContatoNome].Value), 50));


Mais não está dando certo. Pois da erro se seleciono um ou outro.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Ago 20, 2019 11:45 am    Assunto: Responder com Citação

Bom dia,

Qual mensagem de erro está sendo exibida?
Ocorre sempre o mesmo erro?


Editado pela última vez por imex em Dom Out 01, 2023 3:42 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 20, 2019 11:56 am    Assunto: Responder com Citação

imex escreveu:
Bom dia,

Qual mensagem de erro está sendo exibida?
Ocorre sempre o mesmo erro?


Bom dia, então Imex, se eu escolher por exemplo o que vem do dm.fdquery da erro do primeiro de index, se eu escolher o primeiro ai da erro no dm.fdquery
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 20, 2019 1:06 pm    Assunto: Responder com Citação

adriano_servitec escreveu:
imex escreveu:
Bom dia,

Qual mensagem de erro está sendo exibida?
Ocorre sempre o mesmo erro?


Bom dia, então Imex, se eu escolher por exemplo o que vem do dm.fdquery da erro do primeiro de index, se eu escolher o primeiro ai da erro no dm.fdquery


Resumindo as mensagens

Com o bcsv true
o erro
Código:
---------------------------
Debugger Exception Notification
---------------------------
Project Teste1.exe raised exception class EArgumentOutOfRangeException with message 'Argument out of range'.
---------------------------
Break   Continue   Help   
---------------------------



Com o bcsv false
Código:
---------------------------
Debugger Exception Notification
---------------------------
Project Teste1.exe raised exception class EStringListError with message 'List index out of bounds (1)'.
---------------------------
Break   Continue   Help   
---------------------------


Informando que o campo boolean bCSV, quando true vem de uma lista de arquivo CSV para ser gerado, ja quando a variavel form False vem de uma base Access que chama o DM.FDQuerryAccess

Ja testei no modo tradicional

if
else

E funciona, só não no modo ifthen

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Ago 20, 2019 2:14 pm    Assunto: Responder com Citação

Acho que você teria que colocar um BreakPoint logo no início da função CropStrRight para ver se está entrando na função e que valor que ela está recebendo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 20, 2019 3:03 pm    Assunto: Responder com Citação

imex escreveu:
Acho que você teria que colocar um BreakPoint logo no início da função CropStrRight para ver se está entrando na função e que valor que ela está recebendo.


Então Imex, mesmo assim
Código:
 Fnome := IfThen(bCSV, lStringListLine[iniContatoNome],
              DM.FDQueryAccess.Fields[iniContatoNome].Value);


O erro continua.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Ago 20, 2019 3:15 pm    Assunto: Responder com Citação

Pode ser problema no valor da variável iniContatoNome. Você já verificou essa variável?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 20, 2019 4:02 pm    Assunto: Responder com Citação

imex escreveu:
Pode ser problema no valor da variável iniContatoNome. Você já verificou essa variável?


Então esta variavel é um campo INI que vem da leitura do mesmo.

Uso ela para definir qual a coluna CSV ou Campo access que deve ser lida.

Ela ja vem preenchida da leitura, no caso ai o numero definido é o "1" para ambos.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Ago 20, 2019 4:53 pm    Assunto: Responder com Citação

Se aquela variável está igual a 1, teria que verificar se lStringListLine tem pelo menos 2 linhas e se a query retorna pelo menos 2 campos.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Ter Ago 20, 2019 5:19 pm    Assunto: Responder com Citação

imex escreveu:
Se aquela variável está igual a 1, teria que verificar se lStringListLine tem pelo menos 2 linhas e se a query retorna pelo menos 2 campos.


Desculpe não entendi?
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Ago 20, 2019 5:32 pm    Assunto: Responder com Citação

Acho que você precisa verificar quantas linhas tem a TStringList lStringListLine e quantos campos retornam a query de FDQueryAccess para ver se são compatíveis com o valor da variável iniContatoNome.
Se, por exemplo, a TStringList tiver apenas uma linha e a variável for igual a 1 vai ocorrer erro, pois nesse caso o único índice permitido seria 0.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Ago 21, 2019 7:57 am    Assunto: Responder com Citação

imex escreveu:
Acho que você precisa verificar quantas linhas tem a TStringList lStringListLine e quantos campos retornam a query de FDQueryAccess para ver se são compatíveis com o valor da variável iniContatoNome.
Se, por exemplo, a TStringList tiver apenas uma linha e a variável for igual a 1 vai ocorrer erro, pois nesse caso o único índice permitido seria 0.


Acho que vou deixar da forma que está então Imex, muito complicado isso.

Ja que funciona normal desta forma
Código:
if bCSV then
          Fnome := Trim(CropStrRight(lStringListLine[iniContatoNome], 50))
        else
          Fnome := Trim(CropStrRight(DM.FDQueryAccess.Fields[iniContatoNome].AsString, 50));


Vou deixar do modo tradicional mesmo.

Obrigado pela ajuda.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qua Ago 21, 2019 12:46 pm    Assunto: Responder com Citação

Não seria assim:

Tente desta forma para ver se dá certo:

Código:
Fnome := Trim(CropStrRight(IfThen(bCSV = True, lStringListLine[iniContatoNome],
              DM.FDQueryAccess.Fields[iniContatoNome].Value), 50));





bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Ago 21, 2019 1:41 pm    Assunto: Responder com Citação

johnny-walker escreveu:
Não seria assim:

Tente desta forma para ver se dá certo:

Código:
Fnome := Trim(CropStrRight(IfThen(bCSV = True, lStringListLine[iniContatoNome],
              DM.FDQueryAccess.Fields[iniContatoNome].Value), 50));





bye
Mesma coisa amigo, mais eu decidi deixar como esta hj.

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qui Ago 22, 2019 7:12 am    Assunto: Responder com Citação

Qual o escopo desta variável bCSV?



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB