![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 считает, что ты знаешь, что делаешь. И не учитывает эту ссылку. И когда все ссылки на эту строку уходят из области видимости - память освобождается. :)