Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "CheckListBox" Добавление в Items 
:(
    Опции темы
Volkogriz
  Дата 15.7.2013, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 16.9.2007

Репутация: 1
Всего: 1



Доброе время суток!
Прошу помочь в ситуёвенки:
CheckListBox выводятся имена, если CheckListBox= Check дописывается к имени ' "Оплачено"'. Но там такая лабуда происходит что и не опишу))
Постоянно приписывается ещё одно или несколько ' "Оплачено"' )))
Вот как я пытался:
Код

procedure TForm1.ListBoxChecked;
var
i:Integer;
Str: string;
ini: TIniFile;
ichec:Integer;
begin
for i:=0 to CheckListBox1.Items.Count-1 do    { Запускается цикл}
if CheckListBox1.Checked[i]=true then
begin
if copy(CheckListBox1.Items.Strings[i],Length(CheckListBox1.Items.Strings[i])-12,12)=' "Оплачено"'then
else
CheckListBox1.Items.Strings[i]:= CheckListBox1.Items.Strings[i]+' "Оплачено"'
end
else
if CheckListBox1.Checked[i]=false then
begin
Str:= CheckListBox1.Items.Strings[i];
Delete(Str,Pos('"',Str),Length(Str));
CheckListBox1.Items.Strings[i]:=Str;
 end;  

где то 121 попытка добиться результата)))
Заранее благодарен!
С уважением,
Volkogriz! 
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
northener
Дата 15.7.2013, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



А почему 12?
Оплачено = 8. Плюс 2 кавычки = 10.
И не лучше ли вместо сравнения копий использовать функцию Pos?

Это сообщение отредактировал(а) northener - 15.7.2013, 21:42


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Volkogriz
Дата 15.7.2013, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 16.9.2007

Репутация: 1
Всего: 1



Прежде чем сюда писать я долго "Часа 4-5" искал решение не чего не выходит.
Я CheckListBox_ом первый раз столкнулся.
Может примерчик если есть какой нибудь в три строчки smile  
С уважением,
Volkogriz!  
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
Illusion Dolphin
Дата 15.7.2013, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 36
Всего: 63



У вас несколько проблем:
1) Оформление кода ужасное
2) Строка 9 и 16 это (facepaml)X2
3) Научитесь пользоваться отладчиком
4)
Код

const
  PayedStr = ' "Оплачено"';
var
  I: Integer;
  Str, EndsWithText: string;
begin
  for I := 0 to CheckListBox1.Items.Count - 1 do
  begin
    Str := CheckListBox1.Items.Strings[I];
    EndsWithText := Copy(Str, Length(Str) - Length(PayedStr) + 1 {Строки с 1 (единицы)}, Length(PayedStr));
    if CheckListBox1.Checked[I] then
    begin
      if EndsWithText <> PayedStr then
        CheckListBox1.Items.Strings[I] := Str + PayedStr;
    end else if EndsWithText = PayedStr then
    begin
      Delete(Str, Length(Str) - Length(PayedStr) + 1, Length(PayedStr));
      CheckListBox1.Items.Strings[I] := Str;
    end;
  end;
end;


Добавлено @ 22:02
Кстати в последних версиях есть замечательные helper'ы для строк типа Str.EndsWith("SomeText")

Добавлено @ 22:02
Цитата

А почему 12?
Оплачено = 8. Плюс 2 кавычки = 10.

Вообще таких магических чисел быть не должно

P.S. Подправил чуток

Это сообщение отредактировал(а) Illusion Dolphin - 15.7.2013, 22:13


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
northener
Дата 15.7.2013, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Volkogriz @  15.7.2013,  21:31 Найти цитируемый пост)
где то 121 попытка добиться результата

А не очень ли нескромно будет с моей стороны спросить вас сколько раз вам советовали на разных форумах использовать отладчик для поиска ошибок в алгоритмах? И сколько раз вы следовали этому совету? А ведь и одного раза бы хватило smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Volkogriz
Дата 15.7.2013, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 216
Регистрация: 16.9.2007

Репутация: 1
Всего: 1



Спасибо всем!
Я пишу только в два форума)))  programmersforum здесь один раз посоветовали))
а так пытаюсь сам))
С уважением,
Volkogriz!  

Это сообщение отредактировал(а) Volkogriz - 15.7.2013, 22:56
--------------------
("`-''-/").___..--''"`-._`6_6  ) ,,,`-.  ( ''' ).` "_-.__.')(_Y_.)'  ._''' )  `._ `. ``-.__'.-'_..`--'_..-_/'''/--'_.' ,'(il).-'''''(li).'  ((!.-'
PM MAIL ICQ   Вверх
Keeper89
Дата 16.7.2013, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 20
Всего: 58



Volkogriz
Такой вопрос - зачем смешивать бизнес-логику с GUI? По идее, если логика есть в отдельном классе/записи - отображение дожно происходить очень просто по индексу элемента при щелчке по галке.

Это сообщение отредактировал(а) Keeper89 - 16.7.2013, 03:06


--------------------
PM MAIL WWW   Вверх
northener
Дата 16.7.2013, 03:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 8
Всего: 20



Цитата(Keeper89 @  16.7.2013,  03:05 Найти цитируемый пост)
По идее, если логика есть в отдельном классе/записи - отображение дожно происходить очень просто по индексу элемента при щелчке по галке.

Я тоже сначала было об этом подумал.
Но вдруг автору надо сохранять/восстанавливать инфу из файла? Стандартные же методы SaveToFile/LoadFromFile ничего не знают о каких-то там галках :( 
А придумывать что-то своё, нестандартное, возможно лень. smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Qu1nt
Дата 16.7.2013, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 13.1.2007

Репутация: 18
Всего: 50



MVVM.
PM MAIL   Вверх
Poseidon
Дата 16.7.2013, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Illusion Dolphin @  15.7.2013,  22:00 Найти цитируемый пост)
Вообще таких магических чисел быть не должно
Вот это правильно. Через год потом будешь сидеть и гадать что это за 12. Если уж так нужно, то правильнее будет использовать Length("Оплачено"), хотя и это не правильно smile



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0794 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.