Показать сообщение отдельно
  #4  
Старый 22.11.2018, 17:48
val-tal val-tal вне форума
Прохожий
 
Регистрация: 21.11.2018
Сообщения: 3
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

Не знаю уместно ли здесь выложить свой код, рискну.Прошу сильно ногами не пинать, не кодил уж лет цать, все забыл напрочь. В коментах в коде описал свой затык, помогите разобраться, ткните носом в ошибки
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
List_prod: TStrings;
i,i_f:Integer;
kol_f,s_text,str,str_f,str2,str_kol:string;

begin
  List_prod :=TStringList.Create;
  for i:=0 to Memo1.Lines.Count-1 do
    begin
      str:=Copy(Memo1.Lines.Strings[i], 1, Pos(' ' ,Memo1.Lines.Strings[i])-1); //до  разделителя
      str2:=Copy(Memo1.Lines.Strings[i], Pos(' ',Memo1.Lines.Strings[i])+1,Length(Memo1.Lines.Strings[i])); //после разделителя
      Delete(str2, Pos('=',str2),MaxInt);
      str_kol:=Copy(str2, Pos('*',str2)+1,Length(str2));
    ////////

    List_prod.LoadFromFile('prodano.txt');
    for i_f := 0 to List_prod.Count - 1 do
     begin
      s_text:=Copy(List_prod.Strings[i_f], 1, Pos('=' ,List_prod.Strings[i_f])-1);
      str_f:=Copy(s_text, 1, Pos('=' ,s_text)-1);
      kol_f:=Copy(List_prod.Strings[i_f], Pos('=',List_prod.Strings[i_f])+1,Length(List_prod.Strings[i_f]));
 // вот здесь if проверка не правильная, не знаю как реализовать поиск слова целиком, а так ищет любую букву
 // допустим str= булка, условие выполнистся если даже если str=улк
     if (Pos(str, List_prod.Strings[i_f]) > 0)  then
//    если в условии еще пытаюсь проверить длину str_f и str то нифига не работает-ошибка
//if (Pos(str, List_prod.Strings[i_f]) > 0)  and (Length(str_f)=Length(str)) then     
        begin
         //showmessage('слово найдено в файле');
         List_prod.Delete(i_f);
         List_prod.Insert(i_f, s_text+'='+FloatToStr(StrToFloat(str_kol)+StrToFloat(kol_f)));
         //сохраняем лист в файл и выходим из цикла
         List_prod.SaveToFile('prodano.txt');
        Break;
     end;
        //Если слово не найдено в файле
     if Pos(str, List_prod.Strings[i_f]) = 0 then
        begin
          //showmessage('слова нет');
          List_prod.Add(str+'='+str_kol);
          List_prod.SaveToFile('prodano.txt');
          Break;
        end;
        List_prod.Free;
    /////////


    end;


 end;
 end;
end.
Ответить с цитированием