 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
rique_neves Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012 Mensagens: 873
|
Enviada: Sáb Abr 29, 2023 8:35 pm Assunto: popular array a partir de um arquivo txt |
|
|
Tudo bem pessoal tenho este array dentro da aplicação, porem gostaria de popula-lo em tempo de execução lendo um arquivo txt, poderiam mim auxiliar quanto a isto?
Código: | Arraycabecalho: Array[0..30] of String = ('NOME','FANTASIA','TIPOPESSOA','DOCUMENTO','RGOUINSCRICAOESTADUAL',
'INSCRICAOMUNICIPAL','CLIENTE','FORNECEDOR','TRANSPORTADORA',
'FUNCIONARIO','CONTRIBUINTE','EMAIL','MALADIRETA',
'TELEFONE','TIPO','CEP','ENDERECO','NUMERO',
'BAIRRO','CODCIDADE','CODESTADO','CODPAIS',
'NASCIMENTO','OBSERVACAO','MATRICULA','LIMITE','CONVENIO',
'CRIADO_EM','ATUALIZADO_EM','DELETADO_EM','ID'); |
Ler o arquivo txt é tranquilo. Usarei a virgula como delimitador. Tentei usar o SplitString, mas não consegui.
Código: | Try
MeuTexto := SplitString(TStaticTextStyleHook,',');
Finally
End;
MinhaString := sTexto;
MeuArray := MinhaString.Split([',']);
for I := 0 to Length(MeuArray)-1 do
begin
ShowMessage(MeuArray[i]);
end; |
Esta é estruturado do TXT
Citação: | NOME,FANTASIA,TIPOPESSOA,DOCUMENTO,RGOUINSCRICAOESTADUAL,INSCRICAOMUNICIPAL,CLIENTE, |
_________________ Atrás de todo problema a uma oportunidade brilhantemente disfarçada!
Compartilhar Imagens .: http://s124.photobucket.com/ |
|
Voltar ao Topo |
|
 |
marcieldeg Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011 Mensagens: 1054 Localização: Vitória - ES
|
Enviada: Dom Mai 07, 2023 3:48 pm Assunto: |
|
|
Algum motivo especial para você estar usando um array ao invés de uma lista? Listas são mais fáceis de manipular. Especificamente para String, temos a TStringList onde você consegue carregar diretamente o arquivo txt.
Se é necessário carregar em um array, supondo que o tamanho do array não é fixo, você precisa incrementar o array com SetLenght() a cada interação.
https://stackoverflow.com/questions/3183851/can-i-resize-a-delphi-array-without-losing-its-previous-contents _________________ "Olha a interface da IDE! Será que ela é? Será que ela é? DELPHI!" |
|
Voltar ao Topo |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Dom Jun 11, 2023 3:37 pm Assunto: |
|
|
Provavelmente o arquivo a ser analisado é do tipo csv onde tem o registros dos dados extruturado por linha e cada dado separado por virgula ou ponto e virgula o TStringList até pode ser usado sem problema quando ao array Arraycabecalho acredito que isso seja apenas o cabeçalho do arquivo csv ou seja o nome de cada coluna e muito provavelmente é um array constante.
Para ler arquivos csv pode fazer sem problema com o TstringList lembrado que cada linha do TstringList é um registro de 30 dados segundo a extrutura do Arraycabecalho então desta forma precisa também fazer o uso do Split para conseguir separar cada dado da linhas de registro.
vai precisar realizar um extrutura de fors interlacadas
Código: |
var
{...}
dados:Tarray<string>;
arqcsv:Tstringlist;
begin
arqcsv:=tstirnglist.create;
{...}
for y:=0 to arqcsv.count-1 do // corre todas as linhas do arquivo csv
begin
dados:=arqcsv.string[y].Split([',']); // cria um array com dados extraido da linhas
for x:=low(dados) to high(dados) do // corre os ddos da linha y
begin
// trabalho com o array dados
// no caso mencioado dados tem index de 0 a 30
//sendo
// dados[00] <-- Nome
// dados[30] <-- ID
// cada dados neste laço fica condicionado a posição do registro ( linhas de numero y )
{..}
end;
end; |
_________________ Tudo podemos quando tudo sabemos! |
|
Voltar ao Topo |
|
 |
natanbh1 Colaborador

Registrado: Terça-Feira, 15 de Março de 2011 Mensagens: 3093 Localização: Belo Horizonte - MG
|
Enviada: Seg Jul 17, 2023 4:28 pm Assunto: |
|
|
Código: | var
itens: string;
lista: TStringList;
I: Integer;
MeuArray: Array of String;
begin
lista := TStringList.Create;
try
itens := 'NOME,FANTASIA,TIPOPESSOA,DOCUMENTO,RGOUINSCRICAOESTADUAL,INSCRICAOMUNICIPAL,CLIENTE';
// Usando stringlist para pegar cada item separado por vírgula
lista.StrictDelimiter := True;
lista.Delimiter := ',';
lista.DelimitedText := itens;
// Definindo o tamanho do array dinamico usando o tamanho do stringlist
SetLength(MeuArray, lista.Count);
// Preenchendo o array com os itens do stringlist
for I := 0 to lista.Count - 1 do
MeuArray[I] := lista[I];
// Percorrendo o Array para verificar se os itens foram preenchidos corretamente
for I := Low(MeuArray) to High(MeuArray) do
ShowMessage(MeuArray[I]);
finally
lista.Free;
end;
end; |
_________________ ''A persistência é o caminho para o êxito.''
Charlie Chaplin |
|
Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Sex Ago 25, 2023 7:23 am Assunto: |
|
|
É possível abrir arquivos CSV via ado utilizando o driver do excel 8.0, assim dá para trabalhar como se fosse uma tabela normal.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|