GARANTIR DESCONTO

Fórum Divisão de TStringList #396034

20/02/2011

0

Eu tô fazendo manipulção para jogar números em um txt e depois somar os números contido ali


Me dêem uma ajuda aqui com esse código

if FileExists(Edit1.Text + '.txt') then
  begin
    verifica := true;
  end else
  begin
      ShowMessage(Edit1.Text + ' não cadastrado!');
  end;

  if verifica = true then
  begin
    AssignFile(arquivo, Edit1.Text + '.txt');
    Append(arquivo);
    Reset(arquivo); //abre o arquivo para leitura;
    Read(arquivo,leitor);
    campo := TStringList.Create;
    try
      Split(' ', leitor, campo);
    finally

    // verifica
    if ((campo[0] = Edit1.Text) and (campo[1] = Edit2.Text)) then
    begin
      Form2.Close;
    end;
    end;
  end;
  Closefile(arquivo);
end;

Como eu sei quantos (vetores array) campo no caso do código é criado

tipo neste txt que tem o nome de Ewerton.txt tá assim
Ewerton 123

campo nome e senha

ai confere nome e senha e libera o acesso beleza
mais agora eu quero inserir números depois disto?
Como eu vou saber quantos campos foram divididos
ex.
campo[0]
campo[1]
campo[2]
campo[3]
quantos têm?
para saber até onde somar a lista de Strings ?

grato destde Já
Ewerton Rodrigues

Ewerton Rodrigues

Responder

Posts

20/02/2011

Marco Salles

Maneira fácil é colocar o Arquivo Num Padrao que o TStrings Possa entender   Por exemplo  Arquivo TXT Nome=Ewerton Senha=123 Rua=Tal Cidade=Muriae Estado=Mg Telefone=111111 Assim qnd vc carregar o Tstring vc tem acesso a todaas as informações Exemplo
var
campo : TStrings;
  i:integer;
begin
if not FileExists(Edit1.Text + '.txt') then
  begin
      ShowMessage(Edit1.Text + ' não cadastrado!');
      exit;
  end;
campo := TStringList.Create;
try
  campo.LoadFromFile(Edit1.Text+'.txt');
  for i := 0 to pred(campo.Count) do
    showmessage(campo.Names[i]+'='+campo.ValueFromIndex[i]);  //Teste ai
finally
  campo.Free;
end;
end;



   
Responder

Gostei + 0

21/02/2011

Ewerton Rodrigues

me explique na teoria o que vc fez aqui ???
for i := 0 to pred(campo.Count) do
na verdade quero saber o que vc fez no to pred(campo.count)

Eu já estudei com C++ mas agora tô no Delphi á 1 mês
então quase tudo para mim ta sendo meio que novidade

Vlw


Responder

Gostei + 0

21/02/2011

Wilson Junior

O "pred" pega o valor predecesor do valor passado como parâmetro.
Se você tiver incluído 5 registros, o seu Campo.Count será 5, mas para você acessar os registros, você deve começar da posição zero até a posição 4 ( pred(Campo.Count) ).

Espero ter colaborado.
Responder

Gostei + 0

21/02/2011

Ewerton Rodrigues

E quando se coloca o nome do campo.count é quando vc não sabe quantos registros são???

ex: se eu soubesse que seria 10 registros eu colocaria assim

pred(9)


Responder

Gostei + 0

21/02/2011

Marco Salles

O Pred Retorna o Antecessor de um Tipo Ordinal  
E quando se coloca o nome do campo.count é quando vc não sabe quantos registros são???
ex: se eu soubesse que seria 10 registros eu colocaria assim
pred(9)
    campo.count não é um Nome .. Count é uma property da TStrings que retona essa quantidade de "linhas" que o Objeto Campo do Tipo TStrings possui ..   Outros exemplos com o pred  
type
MyTipoEnum = (ftUm , ftDois , FtTres);
procedure TForm1.Button1Click(Sender: TObject);
var
tipoEnum:MyTipoEnum;
Tipoboll:Boolean;
TipoNum:Integer;
TipoChar:Char;
begin
TipoNum:=5;
TipoChar:='B';
showmessage(inttostr(TipoNum)+' -> Antecessor =  '+inttostr(pred(TipoNum))+sLineBreak+
            Tipochar+' -> Antecessor = '+pred(Tipochar));
TipoBoll:=True;
showmessage(inttostr(integer(TipoBoll))+sLineBreak+
           inttostr(integer(pred(TipoBoll))));
tipoEnum:=ftDois;
if pred(tipoEnum) = ftUm then
  showmessage('retornou o Antecessor');
end;

Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar