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