Saber quantas colunas tem um campo memo

31/07/2019

0

Olá pessoal estou precisando saber a quantidade de colunas que um campo memo tem, estou carreagando matrizes de um txt nele, 2x2, 2x3, 2x4, 3x3 4x4 por exemplo

2 2 2
3 2 1


consigo pegar a quantidades de linhas usando o memo1.lines.count;

mas não sei como fazer para saber a colunas.

Meu código é esse :
var
arq: TextFile;
numero: string;
linha, coluna:integer;
matriz: array of array of integer; // estou utilizando uma matriz dinamica por isso preciso saber a quantidade de linhas e colunas
begin
linha:=0;
coluna:=0;
Memo1.Lines.LoadFromFile(EDcaminho.Text); // já usei o stringList mas não sabia como contar colunas em um vetor ai tive a ideia de usar o memo
AssignFile(arq,EDcaminho.Text); // TENTEI CONTAR A QUANTIDADE DE COLUNAS ABRINDO E ARQUIVO
reset(arq);
while not EOF(arq) do já usei o EOLN mas causa loop qnd eu utilizo
begin
read(arq,numero);
if numero <> '' then //porém meio que as vezes trava entra no loop e quando roda não conta certo;
inc(coluna);
end;
closefile(arq);
linha:= memo1.Lines.Count;
Edit2.Text:= InttoStr(coluna);
Edit1.Text:= InttoStr(linha);



por favor preciso muito de ajuda!
Maria Taisa

Maria Taisa

Responder

Posts

31/07/2019

Emerson Nascimento


length()

Responder

31/07/2019

Maria Taisa


length()

tentei usar mas não deu certo

coloquei length mas retorna o total de caracteres do memo, eu so quero a quantidade de linhas Emerson.
Responder

31/07/2019

Maria Taisa


length()

tentei usar mas não deu certo

coloquei length mas retorna o total de caracteres do memo, eu so quero a quantidade de linhas Emerson.



ja usei o o memo1.caretPos.X e está me retornando o valor zero;

procedure getMemoLinCol(Memo: TMemo; var lin,col : cardinal);
begin
with Memo do
begin
lin:= Perform(EM_LINEFROMCHAR, SelStart,0);
col:= SelStart - Perform(EM_LINEINDEX, lin,0);
end;
end;

essa função e tbm me retorna 0
Responder

31/07/2019

Emerson Nascimento

tente assim:
var
  arq, itens: TStringList;
  conteudo: string;
  linha, linhas, coluna: integer;
  matriz: array of array of integer; // estou utilizando uma matriz dinâmica por isso preciso saber a quantidade de linhas e colunas
begin
  arq := TStringList.Create;
  arq.LoadFromFile('c:\\temp\\teste.txt'); //EDcaminho.Text
  linhas := arq.Count;

  // configura o numero de linhas da matriz
  SetLength(matriz, linhas); 

  for linha := 0 to linhas-1 do
  begin
    // obtém o conteúdo da linha
    conteudo := trim(arq[linha]);

    // cria um 'array' com o conteúdo da linha, utilizando o caractere espaço como separador de elementos
    itens := TStringList.Create;
    itens.DelimitedText := conteudo;

    // configura o numero elementos da linha da matriz
    SetLength(matriz[linha], itens.Count);  

    // preenche as colunas no array
    for coluna := 0 to itens.Count-1 do
      matriz[linha,coluna] := strtoint(itens[coluna]);
  end;

  // libera os objetos da memória
  FreeAndNil(arq);
  FreeAndNil(itens);

  // agora que a matriz está pronta, a partir daqui faça o que quiser com ela

end;
Responder

31/07/2019

Maria Taisa

tente assim:
var
  arq, itens: TStringList;
  conteudo: string;
  linha, linhas, coluna: integer;
  matriz: array of array of integer; // estou utilizando uma matriz dinâmica por isso preciso saber a quantidade de linhas e colunas
begin
  arq := TStringList.Create;
  arq.LoadFromFile('c:\\\\temp\\\\teste.txt'); //EDcaminho.Text
  linhas := arq.Count;

  // configura o numero de linhas da matriz
  SetLength(matriz, linhas); 

  for linha := 0 to linhas-1 do
  begin
    // obtém o conteúdo da linha
    conteudo := trim(arq[linha]);

    // cria um 'array' com o conteúdo da linha, utilizando o caractere espaço como separador de elementos
    itens := TStringList.Create;
    itens.DelimitedText := conteudo;

    // configura o numero elementos da linha da matriz
    SetLength(matriz[linha], itens.Count);  

    // preenche as colunas no array
    for coluna := 0 to itens.Count-1 do
      matriz[linha,coluna] := strtoint(itens[coluna]);
  end;

  // libera os objetos da memória
  FreeAndNil(arq);
  FreeAndNil(itens);

  // agora que a matriz está pronta, a partir daqui faça o que quiser com ela

end;

MUITOOOOOOOOOOO obrigada funcionou perfeitamente o bom que com esse código eu consigo deixar a quantidade de células dinâmica, de acordo com o tamanho da matriz. muito obrigada mesmo Emerson!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar