Знак "=" и строки
Модератор: Модераторы
Знак "=" и строки
Мне нужно слить строки из листбокса в одну большую строку. Загвоздка в том, что в этом самом листбоксе есть символы "=", а Лазарус, в отличие от Делфи, игнорирует его и копирует строку только после этого знака. Как можно отключить эту "фичу", или хотя бы скопировать всю строку нормально?
То есть вместо a=b получается просто b
ОС Win7 x64, Lazarus последний.
То есть вместо a=b получается просто b
ОС Win7 x64, Lazarus последний.
Если обращаться к строкам ListBox через
то у меня всё работает как положено, т.е. получаю "a=b".
Так что без примера кода будет сложно понять в чём проблема.
P.S.
И "Lazarus последний" -- довольно растяжимое понятие. Последний релиз, т.е. 0.9.28.x, или последняя ночная сборка, или последняя ревизия из репозитория? Если это не релиз, то через пару часов "последней" может быть уже другая версия. Поэтому лучше указывать версию и ревизию, их можно посмотреть в окошке "О программе".
Код: Выделить всё
ListBox1.Items[i]то у меня всё работает как положено, т.е. получаю "a=b".
Так что без примера кода будет сложно понять в чём проблема.
P.S.
И "Lazarus последний" -- довольно растяжимое понятие. Последний релиз, т.е. 0.9.28.x, или последняя ночная сборка, или последняя ревизия из репозитория? Если это не релиз, то через пару часов "последней" может быть уже другая версия. Поэтому лучше указывать версию и ревизию, их можно посмотреть в окошке "О программе".
Последний раз редактировалось Odyssey 13.05.2010 22:13:59, всего редактировалось 1 раз.
*чешет в затылке*
тоже можно, значит? А я ValueFromIndex использовал. А в чем тогда между ними разница?
Код: Выделить всё
ListBox1.Items[i]Разница в том, что для строки a=b
Неужели Delphi возвращает ValueFromIndex[i] = 'a=b'? О_о
Код: Выделить всё
Items[i] = 'a=b'
Items.Strings[i] = 'a=b'
Items.Names[i] = 'a'
Items.Values['a'] = 'b'
Items.ValueFromIndex[i] = 'b'Неужели Delphi возвращает ValueFromIndex[i] = 'a=b'? О_о
Последний раз редактировалось Odyssey 13.05.2010 22:27:51, всего редактировалось 2 раза.
Спасибо, буду знать. Просто я что-то перепутал (с lazarus встречаюсь впервые) и посчитал, что невозможно использовать items[i], а первое, что попалось на глаза - Items.ValueFromIndex[i], который я никогда и не использовал.
Познай силу LCL!
ListBox.Items - это TStringList, а что такое TStringList, лучше всего описано здесь. После этого все вопросы пропадут.
Climber
Спасибо за ссылку.
Я тут столкнулся с проблемой, но создавать очередную тему с нубским вопросом неохота)
Собсно, работает ли свойство Duplicates класса TStringList в Lazarus вообще и, если да, как его вызвать в ComboBox?
Спасибо за ссылку.
Я тут столкнулся с проблемой, но создавать очередную тему с нубским вопросом неохота)
Собсно, работает ли свойство Duplicates класса TStringList в Lazarus вообще и, если да, как его вызвать в ComboBox?
Код: Выделить всё
(ComboBox1.Items as TStringList).Duplicates:=dupIgnore;Mr.Smart
Только сейчас появилось время попробовать - не выходит, ошибку выдает.
Только сейчас появилось время попробовать - не выходит, ошибку выдает.
Basileus
К сожалению при использовании виджетов Win32/Win64 свойство Items имеет тип TWin32ComboBoxStringList, а он (класс) в свою очередь не наследуется от TStringList. По этому и возникает ошибка.
В свою очередь TWin32ComboBoxStringList не имеет методов и свойств подобным методам и свойствам класса TStringList....
В данном случае опирайтесь и изучайте базовый класс TStrings
з.ы. Нужно было сразу проверить и не вводить в заблуждение, но если судить о свойстве Items класса TComboBox, то оно инициализируется именно как FItems:=TStringList.Create, а это в свою очередь вводит в заблуждение. Я даже удивился такому повороту
К сожалению при использовании виджетов Win32/Win64 свойство Items имеет тип TWin32ComboBoxStringList, а он (класс) в свою очередь не наследуется от TStringList. По этому и возникает ошибка.
В свою очередь TWin32ComboBoxStringList не имеет методов и свойств подобным методам и свойствам класса TStringList....
В данном случае опирайтесь и изучайте базовый класс TStrings
з.ы. Нужно было сразу проверить и не вводить в заблуждение, но если судить о свойстве Items класса TComboBox, то оно инициализируется именно как FItems:=TStringList.Create, а это в свою очередь вводит в заблуждение. Я даже удивился такому повороту
Спасибо. Наверное, тогда проще будет заполнять ComboBox через переменную типа TStringList)
Заполнить проще всего будет следующим способом:
Код: Выделить всё
var
s: TStringList;
begin
...
ComboBox1.Items.Assign(s);
...
А в какой именно части это вставлять? И заполнять s или ComboBox?
Basileus
Заполняешь s, а после делаешь присваивание Combobox1.Items.
Заполняешь s, а после делаешь присваивание Combobox1.Items.
