Показать сообщение отдельно
  #163  
Старый 15.11.2012, 11:48
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Заметил, что недавно выпущенная софтина жрет память со скоростью мегабайт в минуту. Задумался... Потом еще раз задумался...
В итоге нашел в коде одного из потоков вот такой вот парсер:
Код:
procedure TMVCThread.ParceData(AData: RawByteString);
var
  sl:TStringList;
  i: Integer;
begin
  Delete(AData,1,3);
  FParameters.criticalsection.Enter;
  try
    sl:=TStringList.Create;
    sl.Delimiter:=' ';
    sl.DelimitedText:=AData;
    for i := 0 to 15 do
      begin
        try
          FParameters.voltagedata^.Data[i]:=GetVoltage(sl[ports[i]]);
        except
          ThreadSendMessage(THREAD_ERROR_PARCE_ANSWER);
        end;
      end;
    FParameters.voltagedata^.Time:=Now;
  finally
    FParameters.criticalsection.Leave;
  end;
end;
потока 3 штуки, вызов парсера 4 раза в секнду, память улетает просто с фантастической скоростью
Как говорится: "и на старуху бывает проруха"
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием