ler um arquivo txt DELPHI
Gostaria de LER um arquivo txt que contém uma matriz 3x3 e jogar o conteúdo em um stringGrid, alguém poderia me ajudar, eu não tenho muito conhecimento em delphi, li alguns posts, consultei alguns arquivos, mas não encontrei nada relacionado a matrizes.
Maria Taisa
Curtidas 0
Melhor post
Rafael Bosco
11/07/2019
Boa tarde!
Você pode usar a classe TStringList, que contém um método chamado LoadFromFile (só passar o caminho do arquivo), ele vai te retornar uma lista com todas as linhas desse arquivo, depois como você disse o ESPAÇO EM BRANCO está presentes em cada número da sua matriz, você usa a função SPLIT (que nada mais SEPARA a linha a cada ESPAÇO, transformando em um Array<String>), depois só percorrer o array que sobrou e adicionar no seu StringGrid.
Abaixo está o código que pode ajudar:
P.S: Não cheguei a testar complemente o código com um arquivo de texto e tals, mas a sintaxe ta correta.
Você pode usar a classe TStringList, que contém um método chamado LoadFromFile (só passar o caminho do arquivo), ele vai te retornar uma lista com todas as linhas desse arquivo, depois como você disse o ESPAÇO EM BRANCO está presentes em cada número da sua matriz, você usa a função SPLIT (que nada mais SEPARA a linha a cada ESPAÇO, transformando em um Array<String>), depois só percorrer o array que sobrou e adicionar no seu StringGrid.
Abaixo está o código que pode ajudar:
P.S: Não cheguei a testar complemente o código com um arquivo de texto e tals, mas a sintaxe ta correta.
procedure OpenAndReadFile(const AFilePath: UnicodeString); var Loop: Integer; StringList: TStringList; ArrayStr: TArray<String>; I: Integer; begin StringList := TStringList.Create; try StringList.LoadFromFile(AFilePath); for Loop := 0 to StringList.Count - 1 do begin ArrayStr := StringList[Loop].Split([' ']); for I := Low(ArrayStr) to High(ArrayStr) do begin StringGrid.Cell[Loop, I] := ArrayStr[I]; end; end; finally FreeAndNil(StringList); end;
GOSTEI 1
Mais Respostas
Emerson Nascimento
11/07/2019
apresente ao menos uma parte do conteúdo do arquivo, e diga o que e como você espera que seja o resultado da extração de dados.
GOSTEI 0
Maria Taisa
11/07/2019
apresente ao menos uma parte do conteúdo do arquivo, e diga o que e como você espera que seja o resultado da extração de dados.
o arquivo vai conter uma matriz como essa por exemplo
2 2 2
0 1 2
3 1 0
eu não irei alterar o arquivo, será somente leitura, no caso eu queria saber como fazer para colocar
cada caractere que tem no arquivo no stringGrind.cell[j,i] := string; e como ignorar os espaços em branco.
o resultado que quero é a matriz do arquivo preencher o stringGrind.
Desde já agradeço.
GOSTEI 0
Maria Taisa
11/07/2019
a extração de dados será somente os elementos numéricos da matriz que tem no arquivo txt .
GOSTEI 0
Maria Taisa
11/07/2019
Boa tarde!
Você pode usar a classe TStringList, que contém um método chamado LoadFromFile (só passar o caminho do arquivo), ele vai te retornar uma lista com todas as linhas desse arquivo, depois como você disse o ESPAÇO EM BRANCO está presentes em cada número da sua matriz, você usa a função SPLIT (que nada mais SEPARA a linha a cada ESPAÇO, transformando em um Array<String>), depois só percorrer o array que sobrou e adicionar no seu StringGrid.
Abaixo está o código que pode ajudar:
P.S: Não cheguei a testar complemente o código com um arquivo de texto e tals, mas a sintaxe ta correta.
Você pode usar a classe TStringList, que contém um método chamado LoadFromFile (só passar o caminho do arquivo), ele vai te retornar uma lista com todas as linhas desse arquivo, depois como você disse o ESPAÇO EM BRANCO está presentes em cada número da sua matriz, você usa a função SPLIT (que nada mais SEPARA a linha a cada ESPAÇO, transformando em um Array<String>), depois só percorrer o array que sobrou e adicionar no seu StringGrid.
Abaixo está o código que pode ajudar:
P.S: Não cheguei a testar complemente o código com um arquivo de texto e tals, mas a sintaxe ta correta.
procedure OpenAndReadFile(const AFilePath: UnicodeString); var Loop: Integer; StringList: TStringList; ArrayStr: TArray<String>; I: Integer; begin StringList := TStringList.Create; try StringList.LoadFromFile(AFilePath); for Loop := 0 to StringList.Count - 1 do begin ArrayStr := StringList[Loop].Split([' ']); for I := Low(ArrayStr) to High(ArrayStr) do begin StringGrid.Cell[Loop, I] := ArrayStr[I]; end; end; finally FreeAndNil(StringList); end;
Muito Obrigada Rafael, deu certo.
GOSTEI 0
Maria Taisa
11/07/2019
Boa tarde!
Você pode usar a classe TStringList, que contém um método chamado LoadFromFile (só passar o caminho do arquivo), ele vai te retornar uma lista com todas as linhas desse arquivo, depois como você disse o ESPAÇO EM BRANCO está presentes em cada número da sua matriz, você usa a função SPLIT (que nada mais SEPARA a linha a cada ESPAÇO, transformando em um Array<String>), depois só percorrer o array que sobrou e adicionar no seu StringGrid.
Abaixo está o código que pode ajudar:
P.S: Não cheguei a testar complemente o código com um arquivo de texto e tals, mas a sintaxe ta correta.
Você pode usar a classe TStringList, que contém um método chamado LoadFromFile (só passar o caminho do arquivo), ele vai te retornar uma lista com todas as linhas desse arquivo, depois como você disse o ESPAÇO EM BRANCO está presentes em cada número da sua matriz, você usa a função SPLIT (que nada mais SEPARA a linha a cada ESPAÇO, transformando em um Array<String>), depois só percorrer o array que sobrou e adicionar no seu StringGrid.
Abaixo está o código que pode ajudar:
P.S: Não cheguei a testar complemente o código com um arquivo de texto e tals, mas a sintaxe ta correta.
procedure OpenAndReadFile(const AFilePath: UnicodeString); var Loop: Integer; StringList: TStringList; ArrayStr: TArray<String>; I: Integer; begin StringList := TStringList.Create; try StringList.LoadFromFile(AFilePath); for Loop := 0 to StringList.Count - 1 do begin ArrayStr := StringList[Loop].Split([' ']); for I := Low(ArrayStr) to High(ArrayStr) do begin StringGrid.Cell[Loop, I] := ArrayStr[I]; end; end; finally FreeAndNil(StringList); end;
Muito Obrigada Rafael, deu certo.
GOSTEI 0