ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

popular array a partir de um arquivo txt

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
rique_neves
Mestre
Mestre


Registrado: Sexta-Feira, 17 de Fevereiro de 2012
Mensagens: 873

MensagemEnviada: Sáb Abr 29, 2023 8:35 pm    Assunto: popular array a partir de um arquivo txt Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Dom Mai 07, 2023 3:48 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Dom Jun 11, 2023 3:37 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Jul 17, 2023 4:28 pm    Assunto: Responder com Citação

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
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Ago 25, 2023 7:23 am    Assunto: Responder com Citação

É 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
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB