Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TstringList.AddObject [D6, XP]


webpauk ©   (2006-08-07 15:42:00) 

Как в TstringList.Item.AddObject засунуть переменную типа String?
TstringList.Item.AddObject(fText, Tobject(fStr))- запихивает, но при чтении TstringList.Items.Objects[N] - выдает кракозябры


Сергей М.   (2006-08-07 17:17:00) [1]


> clickmaker ©   (07.08.06 17:10) [14]


> Гы.. я тока учусь ))


Не стОит.


clickmaker   (2006-08-07 17:10:00) [2]


> В словаре "падонкаф" оно фигурирует как "ниасилил"

Гы.. я тока учусь ))


Сергей М.   (2006-08-07 17:08:00) [3]


> clickmaker ©   (07.08.06 16:29) [12]


> не асилил


В словаре "падонкаф" оно фигурирует как "ниасилил" (с)
Ну да ладно)


clickmaker   (2006-08-07 16:29:00) [4]


> Сергей М. ©   (07.08.06 16:06) [10]

причем тут телепатия, не асилил... ну да ладно )


Сергей М.   (2006-08-07 16:08:00) [5]


> clickmaker ©   (07.08.06 16:02) [9]


И про время жизни тоже не надо бабушку лохматить - мне это известно не хуже чем тебе)


Сергей М.   (2006-08-07 16:06:00) [6]


> clickmaker ©   (07.08.06 16:02) [9]
>
>


> фокусник, однако )


А нафиг заниматься телепатией ?)


> см. [1] и не надо лохматить бабушку


Не надо тренировать телепатор подобным образом)
Ибо развращает автора)


clickmaker   (2006-08-07 16:02:00) [7]


> Сергей М. ©   (07.08.06 16:00) [8]

фокусник, однако )
не вышел за пределы видимости функции, вот ссылочка и жива.
А в любом другом месте Objects[0] будет указывать на битую область памяти.
см. [1] и не надо лохматить бабушку


Сергей М.   (2006-08-07 16:00:00) [8]


> webpauk   (07.08.06 15:54) [5]


Не надо гнать пургу.

Это

procedure TftmMain.Button1Click(Sender: TObject);
var
 stringList: TStringList;
 fText, fStr: String;
begin
 fText := 'fText';
 fStr := 'fStr';
 stringList := TStringList.Create;
 stringList.AddObject(fText, Tobject(fStr));
 Showmessage(String(stringList.Objects[0]));
end;

100%-но работает.

Все остальное - к телепатам.


StriderMan   (2006-08-07 15:59:00) [9]


> webpauk   (07.08.06 15:57) [6]

верно. и никаких танцев с бубном. только потом не забудь все объекты разрушить.

Правда памяти такая система поболее скушает.


webpauk   (2006-08-07 15:57:00) [10]

а вообще можно создать class с единственным свойством типа String - и проблемы нет


webpauk   (2006-08-07 15:54:00) [11]


> Сергей М. ©   (07.08.06 15:50) [3]

fS:=String(ComboBox1.Items.Objects[ComboBox1.ItemIndex])


Сергей М.   (2006-08-07 15:50:00) [12]

Показывай как читаешь ..


StriderMan   (2006-08-07 15:50:00) [13]

может так прокатит?
TstringList.Item.AddObject(fText, Tobject(@fStr[1]))
...
PChar(..StringList.Items.Objects[n])


clickmaker   (2006-08-07 15:49:00) [14]

память надо в куче выделять
GetMem или AllocMem
var s: PChar;

s := AllocMem(200);
AddObject(fText, TObject(s));

потом не забыть FreeMem сделать


Romkin   (2006-08-07 15:49:00) [15]

Угу. fStr наверно уже не существует при чтении? Может и AV выдать :)
string - объект с регулируемым временем жизни, а когда ты его преобразуешь к типу TObject - Delphi считает, что ты знаешь, что делаешь. И не учитывает эту ссылку. И когда все ссылки на эту строку уходят из области видимости - память освобождается. :)


Наверх

Титульная страница Поиск, карта сайта Написать письмо