ler um arquivo txt DELPHI
11/07/2019
0
Maria Taisa
Post mais votado
11/07/2019
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;
Rafael Bosco
Mais Posts
11/07/2019
Emerson Nascimento
11/07/2019
Maria Taisa
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.
11/07/2019
Maria Taisa
12/07/2019
Maria Taisa
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.
12/07/2019
Maria Taisa
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.
Clique aqui para fazer login e interagir na Comunidade :)