Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
1

Как просуммировать цены в ListBox-e?

18.08.2010, 12:03. Показов 2956. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здарова всем!
решил задачу "супермаркет". остался непонятным один вопросик.
В Эдит1 вводится код товара, в Эдит2 кол-во, в LB-e появляется список купленных товаров с ценами. надо посчитать теперь итог покупки, как это сделать (выводиться в Lable)???
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.08.2010, 12:03
Ответы с готовыми решениями:

Подсчет цены по выбранным элементам Listbox
Всем привет. Помогите решить проблему. Делаю калькулятор цен. У меня в listbox 4 пункта. В...

Обработать цены из прайса поставщика по группе правил, в зависимости от величины цены
Задача следующая: нужно обработать цены из прайса поставщика по группе правил, в зависимости от...

Цены на два виды товаров выросли на р процентов. Вывести старые и новые цены
Помогите

Цены на два вида товаров возросли на P процентов . Вывести старые и новые цены
Цены на два вида товаров возросли на P процентов . Вывести старые и новые цены.

37
Фрилансер
452 / 433 / 117
Регистрация: 01.06.2010
Сообщений: 1,314
18.08.2010, 12:34 21
Author24 — интернет-сервис помощи студентам
iama, а может проще воспользоваться для строки ЛистБокса функциями Trim и LastDelimiter???
С помощью LastDelimiter найти последний пробел и от него уже отсчитывать значение стоимости?
0
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 12:36 22
Zabiyak, говорю ж, синтаксис подзабыл
if (not s[i] in ['0']..['9']) then begin
Добавлено через 53 секунды
Mad_Dog, да способов масса, пишу первое, что пришло в голову. а LastDelimiter разве не #10#13 ?
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.08.2010, 12:38  [ТС] 23
Zabiyak, там там пробел (и не один )

Добавлено через 59 секунд
Mad_Dog, мысли в код пожалста
0
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
18.08.2010, 12:40 24
Love_and_Peace, Как просуммировать цены в ListBox-e? должно работать, протесть
0
КотЪ
219 / 219 / 60
Регистрация: 26.05.2009
Сообщений: 688
18.08.2010, 12:42 25
iama, ваш код к стати совершенно не рабочий - кроме указанной мной ошибки, также перепутаны счётчики i и j при проверке символов.

Вот так всё будет отлично работать, если цены стоят в конце и отделяются от остальной части пробелом:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
  var
    i,j: integer;
    s: string;
  begin
    Label1.Caption:= '0';
    for i:= 0 to ListBox1.Items.Count-1 do begin   // идем по листбоксу
      s:= ListBox1.Items[i];
      for j:= Length(s)-1 downto 1 do              // с конца до начала строки
        if s[j] = ' ' then begin                   // проверяем, является ли символ пробелом
          s:= Copy(s,j+1,Length(s)-j+1);           // если да, то отрезаем от этого символа до конца строки
          break;                                   // выходим из цикла
        end;
      Label1.Caption:= FloatToStr(StrToFloat(Label1.Caption)+StrToFloat(s));
    end;
  end;
1
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.08.2010, 12:44  [ТС] 26
Цитата Сообщение от iama Посмотреть сообщение
Love_and_Peace, в последнем посте я уже с конца смотрю, ведь цена в конце листбокса?
iama, цена везде по списку. список такой:
код наименование цена
12 хлеб 15 и.тд.
0
Фрилансер
452 / 433 / 117
Регистрация: 01.06.2010
Сообщений: 1,314
18.08.2010, 12:45 27
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
Mad_Dog, мысли в код пожалста
Пжалста!!!
Delphi
1
2
3
4
S:=ListBox.Items[i];
Trim(S);
S:=Copy(S,LastDelimiter(' ',S)+1,Length(S)-LastDelimiter(' ',S)+1);
Cena:=StrToInt(S);
1
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.08.2010, 12:49  [ТС] 28
спасибо вам ребята.
к сожалению проверить щас не могу (прога на компе дома). вечером будим
0
Puporev
18.08.2010, 12:49
  #29

Не по теме:

Что-то из простой задачи, которую в Паскале 20 минут писать, холивар вышел..

0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.08.2010, 12:51  [ТС] 30
но если у кого какие мысли есть пишите

Добавлено через 56 секунд
Цитата Сообщение от Puporev Посмотреть сообщение
Что-то из простой задачи, которую в Паскале 20 минут писать, холивар вышел..
а ты напиши
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
18.08.2010, 12:53 31
Love_and_Peace, Да нет проблем, я таких на форуме за 2 года не один десяток писал, просто тебе же в Делфи нужно, а я это плохо знаю, в смысле процедуры и функции, а писать в Делфи по паскалевски дурной тон.
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.08.2010, 12:57  [ТС] 32
Mad_Dog, а что делает ф-я Trim? (никогда не сталкивался)

Добавлено через 1 минуту
Puporev, когда писал в БД, там было понятно (каждая вещь в свем столбце) и получается.
а тут не понятно просто как отделить 3 вещи в одной строке

Добавлено через 1 минуту
блин, не хватает спосбов мышления. может по алгоритмам кто оставит ссылки
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
18.08.2010, 12:57 33
Про trim даже я знаю...
 Trim(const S: string): string — возвращает часть строки S без лидирующих и завершающих пробелов и управляющих символов.
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.08.2010, 12:58  [ТС] 34
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
а тут не понятно просто как отделить 3 вещи в одной строке
то что ответили проверю сегодня
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
18.08.2010, 12:59 35
Вот, держите под рукой.
0
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
18.08.2010, 13:01  [ТС] 36
Цитата Сообщение от Puporev Посмотреть сообщение
Trim(const S: string): string — возвращает часть строки S без лидирующих и завершающих пробелов и управляющих символов
о, теперь понятно...

Добавлено через 1 минуту
Puporev, вэри мач
0
Фрилансер
452 / 433 / 117
Регистрация: 01.06.2010
Сообщений: 1,314
18.08.2010, 14:19 37
Love_and_Peace, ваще в твоем случае достаточно использовать функцию TrimRight().
{Функция удаляет пробелы и управляющие символы, стоящие в конце строки S}
А вместо предложенной мной строчки:
Delphi
1
S:=Copy(S,LastDelimiter(' ',S)+1,Length(S)-LastDelimiter(' ',S)+1);
я бы предложил такой вариант:
Delphi
1
S:=AnsiRightStr(S,Length(S)-LastDelimiter(' ',S));
оно как-то изящнее смотрится...

Добавлено через 20 минут
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
а тут не понятно просто как отделить 3 вещи в одной строке

блин, не хватает спосбов мышления. может по алгоритмам кто оставит ссылки
Вообще-то, это элементарная задача парсинга строки, тем более структура твоей строки переменной длины известна... Разделяй и властвуй!!!
Вот примерчик парсинга строк в Memo... Думаю, что не сложно перенести все это на ListBox...
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure MemoParser;
var
  Stream: TMemoryStream;
begin
   Form1.MemoResult.Clear;
   // Создаем поток
   Stream := TMemoryStream.Create;
   // Загружаем в него текст из Memo
   Stream.WriteBuffer( Form1.MemoCode.Text[1], Length( Form1.MemoCode.Text ) );
   Stream.Position := 0;
   with TParser.Create( Stream ) do
      // Пока не дошли до конца потока...
      while Token <> toEof do
      begin
         if Token = toInteger then
            Form1.MemoResult.Lines.Add( TokenString );
         NextToken;
      end;
   Stream.Free;
end;
Все составляющие разобранного текста TParser автоматически причисляет к одному из предопределенных в нем типов: toFloat - вещественное число, toInteger - целое число, toSymbol - символ, toString - строка, toWString - Unicode-строка, toEOF - конец потока
1
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
19.08.2010, 12:19  [ТС] 38
Zabiyak, прокатило
Спасибо всем!
0
19.08.2010, 12:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.08.2010, 12:19
Помогаю со студенческими работами здесь

Подставление вида цены и цены из регистра сведений
Такое дело... Есть док - Продажи. ТЧ - Товары. Нужно, чтобы При Изменении Номенклатуры в ВидЦены...

Как просуммировать список???
В узлы первого списка записаны цифры первого числа,а в узлы второго списка записаны цифры второго...

Как просуммировать значения в столбцах????
Проблема такая: имеются стобцы в таблице содержащие числовые значения и значения NULL. При...

Как просуммировать строки с числами?
доброго времени суток. к проблеме у меня есть файл состоящий к примеру из 50 строк с числами, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru