Recent

Author Topic: TStringGrid: erro ao exibir Strings, altera ordem dos caracteres  (Read 1969 times)

Geovane

  • New member
  • *
  • Posts: 8
Caros, preciso de uma ajuda.

Não estou conseguindo entender porque um componente TStringGrid está modificando as strings que estou passando por meio de um array.

Já fiz um teste abrindo uma caixa de mensagem com os dados a serem impressos no TStringGrid. E tudo está conforme conforme deveria.

Code: Pascal  [Select][+][-]
  1. for i:=low(azimutes) to high(azimutes)do
  2.      begin
  3.           memo[i].azimute:= GrausDecParaSexagesimais(azimutes[i]);
  4.           // IMPRIMI O RESULTADO DO RECORD
  5.           //ShowMessage(memo[i].id+', '+FloattoStr(memo[i].x)+', '+FloattoStr(memo[i].y)+', '+memo[i].alinhamento+', '+memo[i].azimute+', '+FloattoStr(memo[i].distancia));
  6.  
  7.           // coloca as propriedades do Record em um array de String de 6 posições;
  8.           Slinhas[0]:= memo[i].id;
  9.           Slinhas[1]:= FloattoStr(memo[i].x);
  10.           Slinhas[2]:= FloattoStr(memo[i].y);
  11.           Slinhas[3]:= memo[i].alinhamento;
  12.           Slinhas[4]:= memo[i].azimute;
  13.           Slinhas[5]:= FloattoStr(memo[i].distancia);
  14.  
  15.           // i+1 para não eliminar ou sobreescrever a linha 0 com o cabeçalho
  16.           StringGrid1.DeleteRow(i+1);
  17.           StringGrid1.InsertRowWithValues(i+1, Slinhas);
  18.  
  19.      end;

Gustavo 'Gus' Carreno

  • Hero Member
  • *****
  • Posts: 1033
  • Professional amateur ;-P
Re: TStringGrid: erro ao exibir Strings, altera ordem dos caracteres
« Reply #1 on: January 11, 2024, 01:33:21 am »
Boas Geovane,

Tive de ler, pelo menos, umas 3 vezes o teu post a fim de tentar ver se havia alguma informação que eu conseguisse pegar para perceber o erro que te aflige.

Infelizmente, não consegui discernir onde vc tem a comparação do resultado desejado e o resultado em erro.

Dava para indicar a coisa melhor?

Muitíssimo obrigado!!

Grande abraço,
Gus
Lazarus 3.99(main) FPC 3.3.1(main) Ubuntu 23.10 64b Dark Theme
Lazarus 3.0.0(stable) FPC 3.2.2(stable) Ubuntu 23.10 64b Dark Theme
http://github.com/gcarreno

Geovane

  • New member
  • *
  • Posts: 8
Re: TStringGrid: erro ao exibir Strings, altera ordem dos caracteres
« Reply #2 on: January 11, 2024, 01:52:49 am »
Obrigado pela Resposta.

Então, estou usando um record para representar um registro topográfico de um vertice (id, coordenada x, coordenada y, alinhamento(ponto x - ponto x+1), azimute (angulo em relação ao norte) e distancia.

Os dados estão sendo recuperados de um arquivo csv.

E até aqui tudo está funcionando bem. Fiz um teste com uma caixa de mensagem (em anexo) e os dados estão de acordo com o desejado.

Então faço um loop para percorrer o record e coloco as dados em um Array de String para inserir do TStringGrid através da função InsertRowWithValues.

O problema ocorre no TStringGrid, que exibe a variável alinhamento 3-2 ,quando a string estava 2-3, ou no azimute que exibe "276º18'26, colocando as aspas duplas, na frente. Neste contexto as aspas indicam os segundos do ângulo.
« Last Edit: January 11, 2024, 02:11:31 am by Geovane »

Gustavo 'Gus' Carreno

  • Hero Member
  • *****
  • Posts: 1033
  • Professional amateur ;-P
Re: TStringGrid: erro ao exibir Strings, altera ordem dos caracteres
« Reply #3 on: January 11, 2024, 02:31:44 am »
Boas Geovane,

Ok, muito obrigado pela clarificação!!
Agora a coisa faz mais sentido. Pelo menos no contexto de: Qual é o erro?

Agora a coisa complica ainda mais:
  • Completa inversão de uma string na coluna 4
  • Estranha ocorrência de aspas duplas na frente do valor na coluna 5

Assim, de repente, nada de muito óbvio me ocorre.

A única coisa que me ocorre é perguntar se mexeste nas opções de formatação das colunas 4 e 5?
Pra ser bem franco, não sou mestre de TStringGrids. Alias, detesto os caras com a maior das paixões  :D

Prefiro muito mais tabelas em memória: TestMemoryDataset e TestRxMemoryData como exemplos.

Faz uma investigação por esta ordem:
  • As opções de formatação das colunas na TStringGrid
  • As propriedades da TStringList que mexem com aspas duplas e ou separadores

Eu sei que isto é bem genérico, mas temos de começar por algum lado para descobrir o fio à meada, certo?

Grande abraço,
Gus
Lazarus 3.99(main) FPC 3.3.1(main) Ubuntu 23.10 64b Dark Theme
Lazarus 3.0.0(stable) FPC 3.2.2(stable) Ubuntu 23.10 64b Dark Theme
http://github.com/gcarreno

Geovane

  • New member
  • *
  • Posts: 8
Re: TStringGrid: erro ao exibir Strings, altera ordem dos caracteres
« Reply #4 on: January 11, 2024, 02:53:28 am »
Obrigado pelas sugestões Gustavo.

Vou estudar o uso de tabelas em memória, como novato desconhecia essas possibilidades.

Além disso, vou revisar as configurações do componente TStringGrid, como você sugeriu. Cheguei a pensar que fosse algum problema do componente. Mas fiz um teste bem rápido e o resultado sai como esperado, segue um print.

Assim que chegar a uma conclusão trarei o resultado.

Obrigado pelo apoio.

Gustavo 'Gus' Carreno

  • Hero Member
  • *****
  • Posts: 1033
  • Professional amateur ;-P
Re: TStringGrid: erro ao exibir Strings, altera ordem dos caracteres
« Reply #5 on: January 11, 2024, 03:16:45 am »
Boas Geovane,

Obrigado pelas sugestões Gustavo.

De nada, sempre às ordens!!

Vou estudar o uso de tabelas em memória, como novato desconhecia essas possibilidades.

O que me levou a pensar nesta solução foi ver a merda que é tentar filtrar ou ordenar uma TStringGrid!!!
Tudo tem de ser feito pela besta de carga que é o programador, ou seja, tu e eu. NOPE!!
Com tabelas em memória, podemos usar os componentes com ligação a banco de dados, e isso é bem mais bonito!!
E coisas complicadas, agora são somente respostas a eventos da grelha/tabela. YUP!!

Além disso, vou revisar as configurações do componente TStringGrid, como você sugeriu. Cheguei a pensar que fosse algum problema do componente. Mas fiz um teste bem rápido e o resultado sai como esperado, segue um print.

Claro, a nossa mente começa a duvidar até que a realidade existe a um certo ponto LOL  :D

Ok, pegando no contexto de realidade retorcida: Baixei teu .zip no outro fio e cada vez que tento abrir, meu IDE explode.
Primeiro, antes de apagar o .lps e o .res o meu IDE simplesmente congelava.
Depois de apagar os ficheiros acima citados, as versões 2.2.6, 3.0 e 3.99: Boom
As versões 2.0.10 e 2.0.12 não explodem, mas o painel de código desaparece e tenho 0 ficheiros listados no Project Manager!!

Que raio de versão do Lazarus estás a usar?!?!?

Só esta impossibilidade de abrir o teu projeto, bota muitas dúvidas se o erro é do programa ou de alguma coisa muito estranha nos ficheiros do projeto  :D

Assim que chegar a uma conclusão trarei o resultado.

Oba!! Cá te espero!!

Obrigado pelo apoio.

Yeaps, sempre às ordens !!

Grande Abraço,
Gus
Lazarus 3.99(main) FPC 3.3.1(main) Ubuntu 23.10 64b Dark Theme
Lazarus 3.0.0(stable) FPC 3.2.2(stable) Ubuntu 23.10 64b Dark Theme
http://github.com/gcarreno

Geovane

  • New member
  • *
  • Posts: 8
Re: TStringGrid: erro ao exibir Strings, altera ordem dos caracteres
« Reply #6 on: January 11, 2024, 03:40:11 am »
SOLUCIONADO.

Para resolver eu eliminei o StringGrid e coloquei um novo com as configurações padrões.

Fiz algumas poucas alterações, como nome das colunas e cor da linha fixa e as Strings foram impressas como planejado.

Resumo: No começo do projeto fiz tantas alterações nas configurações do Grid que acabei setando alguma errada. Como fiz muitas alterações não sabia mais qual desfazer. Então, pegar um componente com configuração padrão. (exatamente como tu me disseste).

Segue um print da tela em acordo.

Gustavo, muito obrigado mais uma vez.

Gustavo 'Gus' Carreno

  • Hero Member
  • *****
  • Posts: 1033
  • Professional amateur ;-P
Re: TStringGrid: erro ao exibir Strings, altera ordem dos caracteres
« Reply #7 on: January 11, 2024, 03:58:01 am »
Boas Geovane,

Resumo: No começo do projeto fiz tantas alterações nas configurações do Grid que acabei setando alguma errada. Como fiz muitas alterações não sabia mais qual desfazer. Então, pegar um componente com configuração padrão. (exatamente como tu me disseste).

SHIII, a coisa tava tão confusa que nem dava pra abrir o teu projeto, LOL  :o  :D

Macaco de cu pelado sempre tem bichinho atrás da orelha, amirite!?

Super feliz que a coisa se resolveu!! Boa sorte no resto do projeto!!

Gustavo, muito obrigado mais uma vez.

De nada camarada, sempre às ordens !!

Grande Abraço,
Gus
Lazarus 3.99(main) FPC 3.3.1(main) Ubuntu 23.10 64b Dark Theme
Lazarus 3.0.0(stable) FPC 3.2.2(stable) Ubuntu 23.10 64b Dark Theme
http://github.com/gcarreno

 

TinyPortal © 2005-2018