Fórum TStringList soma de valores #415351

12/04/2012

0

Boa tarde pessoal,
Tenho uma StringList que recebe um arquivo de texto com o codigo do produto e a quantidade separada por ,
a duvida é... preciso varrer a lista e identificar os valores iguais (no caso os codigos dos produtos repetidos)
nos que forem repetidos eu preciso eliminar a linha e calcular a quantidade.
Ex:
ListaOrigem:
00587,10
00587,5
00256,1

ListaCalculada:
00587,15
00256,1

Grato pela atenção...
Jeferson Cruz

Jeferson Cruz

Responder

Posts

14/04/2012

Marco Salles

var
Lista_Arquivo:Tstrings;
Lista_Correta:TStrings;
I, index: Integer;
begin
    lista_Arquivo:=TStringList.Create;
    Lista_Correta:=TStringList.Create;

    try
      Lista_Correta.NameValueSeparator:=,;
      Lista_Arquivo.NameValueSeparator:=,;

    lista_Arquivo.Add(00587,10);
    lista_Arquivo.Add(00587,5);
    lista_Arquivo.Add(00256,1);


    for I := 0 to pred(Lista_Arquivo.Count) do
    begin
     Index:=  Lista_Correta.IndexOfName(Lista_Arquivo.Names[i]);
     if index < 0 then

        Lista_Correta.Add(Lista_Arquivo.Strings[i])
     else
       Lista_Correta.ValueFromIndex[Index]:= floattostr(
       (strtofloat(Lista_Correta.ValueFromIndex[Index])+
       strtofloat(Lista_Arquivo.ValueFromIndex[i])));
    end;


    for I := 0 to pred(Lista_Correta.Count) do
      Showmessage(Lista_Correta.Strings[i]);

    finally
      Lista_Arquivo.Free;
      Lista_Correta.Free;
    end;

Responder

Gostei + 0

16/04/2012

Jeferson Cruz

Funcionou perfeito... Obrigado, como fecho esse post?
Responder

Gostei + 0

16/04/2012

Marco Salles

Funcionou perfeito... Obrigado, como fecho esse post?


Boa pergunta..

Entre em contato com os responsáveis tecnicos..

seria muito importante por questões de visibilidade do forum que pudesse alterar o ststus para resolvido

Afinal quando se procura no google e se acha algo como Resolvido é o primeiro que nos clicamos

não é mesmo ???
Responder

Gostei + 0

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

Aceitar