Vou ser mais expecífico:

problema:

Tenho vários arquivos .txt. que nao tem um padrão de campo....posso encarar 
todos como os valores como string, mas o campo nome pode ser o último ou o 
primeiro, dependendo do arquivo.

Alguns arquivos tem mais ou menos campos....
Preciso de uma rotina que leia esses arquivos...
A leitura linha-a-linha eu ja consegui fazer...

O meu problema é quando vou criar os campos em tempo de execucao no 
ClientDataSet... Eu não consigo!

Alguém me ajude por favor! (Ah! se fosse em xml!!!)



Obrigado


Francisco Thiago de Almeida
Enter&Plug Informática
Divisão: Desenvolvimento e Banco de dados
MSN: [EMAIL PROTECTED]
Skype: enterplug_thiago
----- Original Message ----- 
From: "Walter Alves Chagas Junior" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Wednesday, April 06, 2005 2:24 PM
Subject: RES: [delphi-br] Criar campos no CDS em tempo de execucao 2



Ao exemplo bão aí ó!

Dá uma estudada no código e atente para a string que é passada como
parâmetro por referência na função partetexto. é essa a alma deste rotina.

function ParteTexto(var Frase: string; Parte: string): string;
//
// Retorna uma parte de um texto antes de um caractere especificado
//
var
  i,max: integer;
  buff: string;
begin
  i := 1;
  buff := '';
  max := length(parte);
  while (i <= length(Frase)) and (buff <> parte) do
  begin
    buff := buff + Frase[i];
    if length(buff) > max then
      buff := copy(buff,2,max);
    inc(i);
  end;
  if buff = Parte then
  begin
    Result := copy(Frase,1,i - max -1);
    Frase := copy(Frase,i,length(Frase)+1 -i);
  end
  else
  begin
    Result := Frase;
    Frase := '';
  end;
end;


procedure TfDlgImportaDados.btnImportarClick(Sender: TObject);
var
 qryImportFunc: TQuery;
 sFile: Textfile;
 sFileImportFunc, sStrData,
 sMes, sAno, sDataInicio, sRetornoTrab, sMotivoAfast,
 sDataInicioAfast, sRetornoTrabAfast : String;
 sChapaFunc, sBakFileImportFunc: string;
 vDatabaseFunc : array[0..7] of String;
 iFoundRegister: integer;
begin
 iCancel := False;
 sFileImportFunc := eFileName.Text;
 btnImportar.Visible := False;
 btnInterromp.Visible := True;
 pBar.Position := 0;
 pBar.Max := NumLinhasArq(sFileImportFunc);
 AssignFile(sFile, sFileImportFunc);
 Reset(sFile);
 //
 qryImportFunc := TQuery.Create(nil);
 qryImportFunc.Databasename := corporeRM.Databasename;
 qryImportFunc.SQL.Add('insert into ZVTLMPRODUCAO (CODCOLIGADA, CODFILIAL,
MESCOMP, ANOCOMP, CHAPA, PLACA, CODOPERADORA,');
 qryImportFunc.SQL.Add('DIASPARADOSFUNC, DIASPARADOSVEIC, CODEVENTO) values
(:CODCOLIGADA, :CODFILIAL, :MESCOMP, :ANOCOMP, :CHAPA, :PLACA,
:CODOPERADORA,');
 qryImportFunc.SQL.Add(':DIASPARADOSFUNC, :DIASPARADOSVEIC, :CODEVENTO)');
 qryImportFunc.Prepare;
 while (not Eof(sFile)) and (not iCancel) do
 begin
  ReadLn(sFile, sStrData);
  //
  qryImportFunc.ParamByName('CODCOLIGADA').AsInteger := CorporeRM.Coligada;;
  qryImportFunc.ParamByName('CODFILIAL').AsInteger := Param.Filial;
  qryImportFunc.ParamByName('MESCOMP').AsString := ParteTexto(sStrData,
';');
  qryImportFunc.ParamByName('ANOCOMP').AsString := ParteTexto(sStrData,
';');
  qryImportFunc.ParamByName('CHAPA').AsString := ParteTexto(sStrData, ';');
  qryImportFunc.ParamByName('PLACA').AsString := ParteTexto(sStrData, ';');
  qryImportFunc.ParamByName('CODOPERADORA').AsString := ParteTexto(sStrData,
';');
  qryImportFunc.ParamByName('DIASPARADOSFUNC').AsString :=
ParteTexto(sStrData, ';');
  qryImportFunc.ParamByName('DIASPARADOSVEIC').AsString :=
ParteTexto(sStrData, ';');
  qryImportFunc.ParamByName('CODEVENTO').AsString := ParteTexto(sStrData,
';');
  qryImportFunc.ExecSQL;

  pBar.Position := (pBar.Position + 1);
  Application.ProcessMessages;
 end;
 CloseFile(sFile);
 if FileExists(sFileImportFunc) then
 begin
   sBakFileImportFunc :=
ChangeFileExt(ExtractFileName(sFileImportFunc),'.old');
   if FileExists(sBakFileImportFunc) then DeleteFile(sBakFileImportFunc);
   if not RenameFile(sFileImportFunc,sBakFileImportFunc) then
     MessageDlg (format('Erro criando arquivo
"%s"!',[sBakFileImportFunc]),mtError,[mbOk],0);
 end;
 //
 qryImportFunc.Close;
 FreeAndNil(qryImportFunc);
 btnImportar.Visible := False;
 btnInterromp.Visible := True;
end;



 []s

 Walter Alves Chagas Junior
 Projeto e desenvolvimento
 Telemont Engenharia de telecomunicações
 [EMAIL PROTECTED]
 Fone: (31) 3389-8215 Fax: (31) 3389-8200

 "Pra que usar OOP, se existe Ctrl+C & Ctrl+V?"



> -----Mensagem original-----
> De: Francisco Thiago [mailto:[EMAIL PROTECTED]
> Enviada em: quarta-feira, 6 de abril de 2005 14:16
> Para: delphi-br@yahoogrupos.com.br
> Assunto: [delphi-br] Criar campos no CDS em tempo de execucao 2
> Prioridade: Alta
>
>
>
> Pra falar a verdade, eu preciso ler um arquivo separado por ";"
>
> Alguém sabe uma maneira fácil de se fazer isso?
>
>
> Thiago
> ----- Original Message ----- 
> From: "cchirolli" <[EMAIL PROTECTED]>
> To: <delphi-br@yahoogrupos.com.br>
> Sent: Wednesday, April 06, 2005 1:49 PM
> Subject: [delphi-br] Delphi 2005 x ZeosDbo x PostGreSql
>
>
>
>
> Olá pessoal, alguém ai usa os compoentes da biblioteca Zeos com
> Postgresql? estou com problema de salvamento, quando tento salvar os
> dados em uma tabela os dados não são realmente salvos fica com se
> tivesse com cacheupdate true, os dados até aparecem no grid mas
> quando fecho a aplicação vai tudo pro espaço, so consigo salvar
> quando tenho queries que executam um exesql.Alguém pode ma ajudar.
>
> Obrigado,
> Carlos.
>
>
>
>
>
> -- 
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
> Para ver as mensagens antigas, acesse:
>  http://br.groups.yahoo.com/group/delphi-br/messages
>
> Para falar com o moderador, envie um e-mail para:
>  [EMAIL PROTECTED] ou [EMAIL PROTECTED]
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>
>
>
>
>
>
> -- 
> <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>
>
> Para ver as mensagens antigas, acesse:
>  http://br.groups.yahoo.com/group/delphi-br/messages
>
> Para falar com o moderador, envie um e-mail para:
>  [EMAIL PROTECTED] ou [EMAIL PROTECTED]
>
> Links do Yahoo! Grupos
>
>
>
>
>
>
>
>


[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]

Links do Yahoo! Grupos













-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 



Responder a