![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Combobox.Items.AddObject('Текст','Текст') [D7, WinXP]
Slaviq © (2005-11-22 22:17:00)Версия с целочисленным объектом работает аж бегом:
З.Ы. Такой вопрос уже подымался тут http://www.delphimaster.ru/cgi-bin/forum.pl?id=1132312500&n=0, но есть изюминка.
line.Items.AddObject(fieldbyname('nm').AsString, TObject(pchar(fieldbyname('id').AsInteger)));
slaviq (2005-11-24 11:41:00) [1]2Fay
Ку :)
Впринципе так и думал, что стринг туда никак не поместится.
Забью поле ID в базу. Проще, и нервные окончания сэкономлю.
Всем спасибо!
Тема закрыта.
Вывод: варианты возможны, но проще найти обходной путь :)
Reindeer Moss Eater (2005-11-23 11:35:00) [2]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;
icWasya (2005-11-23 10:34:00) [3]Читать на RSDN.RU статью про строки в Delphi
Reindeer Moss Eater (2005-11-23 09:43:00) [4]К чему этот пример?
В Objects в любом случае лежат четыре байта.
Как их интепретировать - дело автора.
Рассматривать это как указатель на строку терминированную нулем так же допустимо.
Fay (2005-11-22 23:36:00) [5]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;
Fay (2005-11-22 23:30:00) [6]2 Slaviq (22.11.05 23:12) [4]
Дя-а... Тяжёлый случай.
У тебя в Object хранится просто НЕКИЙ АДРЕС.
TObject((pchar(Edit1.Text))) - тоже просто НЕКИЙ АДРЕС, по которому лежит какая-то хрень, а не строка (в общем случае).
1) строки, полученныеfieldbyname('LongName').AsStringдавно сдохла.
2) в случае, когда в всё-таки Object лежит нечто адекватное, оно точно не совпадёт сTObject(pchar(Edit1.Text)).
Ку?
Slaviq (2005-11-22 23:12:00) [7]Да уж, чтото у меня вапще каша уже получилась :)
теперь еще и индекс не возвращается :(
grp.ItemIndex:=grp.Items.IndexOfObject(TObject((pchar(Edit1.Text))));
или
grp.ItemIndex:=grp.Items.IndexOfObject(TObject(StrNew(pchar(Edit1.Text))));
ЛистАутОфБаундс(0) :(
А!!! Спасите! Будите в Киеве поставлю пиво :)
Slaviq (2005-11-22 22:45:00) [8]Спасибо, работает!
Но, можно ли поподробней про память?
Reindeer Moss Eater (2005-11-22 22:40:00) [9]TObject(StrNew(pchar(fieldbyname('Shortname').AsString))));
Но после этого ты сам будешь ответственен за освобождение памяти.
Reindeer Moss Eater (2005-11-22 22:37:00) [10]TObject(pchar(fieldbyname('Shortname').AsString)));
У тебя передана ссылка на ансистроку. Все правильно.
За исключением того, что сама строка после выхода за пределы видимости уничтожается.
И ссылка начинает указывать в открытый космос.