Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизCombobox.Items.AddObject( Текст , Текст ) Найти похожие ветки
← →
Slaviq (2005-11-22 22:17) [0]Версия с целочисленным объектом работает аж бегом:
З.Ы. Такой вопрос уже подымался тут http://delphimaster.net/view/1-1132312500/, но есть изюминка.
line.Items.AddObject(fieldbyname("nm").AsString, TObject(pchar(fieldbyname("id").AsInteger)));
<--- Забиваем значение Объектаshowmessage(IntToStr(integer(line.Items.Objects[line.ItemIndex])));
<-- Получаем значение Объекта
или
showmessage(IntToStr(line.Perform(CB_GETITEMDATA, line.ItemIndex, 0)));
Нужно забить и получить текстовый обьект. Следующий вариант не работает:<--- Забиваем значение Объекта
grp.Items.AddObject(fieldbyname("LongName").AsString, TObject(pchar(fieldbyname("Shortname").AsString)));showmessage(String(grp.Items.Objects[grp.ItemIndex])));
<-- Получаем значение Объекта
У кого нибуть есть варианты? Заранее 10х!
← →
Reindeer Moss Eater © (2005-11-22 22:37) [1]TObject(pchar(fieldbyname("Shortname").AsString)));
У тебя передана ссылка на ансистроку. Все правильно.
За исключением того, что сама строка после выхода за пределы видимости уничтожается.
И ссылка начинает указывать в открытый космос.
← →
Reindeer Moss Eater © (2005-11-22 22:40) [2]TObject(StrNew(pchar(fieldbyname("Shortname").AsString))));
Но после этого ты сам будешь ответственен за освобождение памяти.
← →
Slaviq (2005-11-22 22:45) [3]Спасибо, работает!
Но, можно ли поподробней про память?
← →
Slaviq (2005-11-22 23:12) [4]Да уж, чтото у меня вапще каша уже получилась :)
теперь еще и индекс не возвращается :(
grp.ItemIndex:=grp.Items.IndexOfObject(TObject((pchar(Edit1.Text))));
или
grp.ItemIndex:=grp.Items.IndexOfObject(TObject(StrNew(pchar(Edit1.Text))));
ЛистАутОфБаундс(0) :(
А!!! Спасите! Будите в Киеве поставлю пиво :)
← →
Fay © (2005-11-22 23:30) [5]2 Slaviq (22.11.05 23:12) [4]
Дя-а... Тяжёлый случай.
У тебя в Object хранится просто НЕКИЙ АДРЕС.
TObject((pchar(Edit1.Text))) - тоже просто НЕКИЙ АДРЕС, по которому лежит какая-то хрень, а не строка (в общем случае).
1) строки, полученныеfieldbyname("LongName").AsString
давно сдохла.
2) в случае, когда в всё-таки Object лежит нечто адекватное, оно точно не совпадёт сTObject(pchar(Edit1.Text))
.
Ку?
← →
Fay © (2005-11-22 23:36) [6]2 Slaviq (22.11.05 23:12) [4]
Вот примерчикprocedure TForm1.Button1Click(Sender : TObject);
const
a : array[Boolean] of string = ("не равны", "равны");
var
s1, s2 : string;
begin
s1 := Caption;
s2 := Caption;
ShowMessage(a[PChar(s1) = PChar(s2)]);
end;
← →
Reindeer Moss Eater © (2005-11-23 09:43) [7]К чему этот пример?
В Objects в любом случае лежат четыре байта.
Как их интепретировать - дело автора.
Рассматривать это как указатель на строку терминированную нулем так же допустимо.
← →
icWasya © (2005-11-23 10:34) [8]Читать на RSDN.RU статью про строки в Delphi
← →
Reindeer Moss Eater © (2005-11-23 11:35) [9]procedure TForm1.Button2Click(Sender : TObject);
const
a : array[Boolean] of string = ("не равны", "равны");
var
s1, s2 : string;
begin
s1 := Caption;
s2 := Caption;
ShowMessage(a[StrComp(PChar(s1),PChar(s2)) = 0]);
end;
← →
slaviq (2005-11-24 11:41) [10]2Fay
Ку :)
Впринципе так и думал, что стринг туда никак не поместится.
Забью поле ID в базу. Проще, и нервные окончания сэкономлю.
Всем спасибо!
Тема закрыта.
Вывод: варианты возможны, но проще найти обходной путь :)
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.039 c