Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

TStringList.AddObject добавление строки вместо TObject   Найти похожие ветки 

 
Unknown user ©   (2012-03-06 11:24) [0]

Подскажите, можно ли так добавлять строки к TStringList?

var
 AnotherString: string;

TStringList.AddObject(S, Pointer(AnotherString))

или обязательно делать копию строки

TStringList.AddObject(S, Pointer(NewStr(AnotherString)))

Строки имеют счетчик ссылок и вроде бы такой каст не должен нарушить его работу. Правильно?


 
Ega23 ©   (2012-03-06 11:33) [1]

Что ты хочешь сделать?


 
Медвежонок Пятачок ©   (2012-03-06 11:36) [2]

и вроде бы такой каст не должен нарушить его работу.

он и не нарушит.
тем, что никак не повлияет на количество ссылок на строку. и как только она выйдет из области видимости то в списке будет невалидный указатель


 
Dimka Maslov ©   (2012-03-06 11:37) [3]

Если уж очень надо - объяви класс с единственным членом - строкой и пудзырь его экземпляры в TStrings.Objects. Только потом не забывай вовремя удалять их.


 
Игорь Шевченко ©   (2012-03-06 11:40) [4]


> Подскажите, можно ли так добавлять строки к TStringList?


лучше через KEY=VALUE, TStringList умеет работать с такими строками
читать TStrings.Names, TStrings.Values, и т.п.


 
Unknown user ©   (2012-03-06 11:50) [5]

Все понял, спасибо.

Это мне приходится чужой код рихтовать, тут вообще подход в стиле

var Res:PChar; S: String;

  S:=Socket.RemoteHost;
  GetMem(Res,16); FillChar(Res[0],16,32); Res[15]:=#0;
  Move(S[1],Res[0],Length(S));
  Usernames.AddObject(UserName,TObject(Res));

Мало что S может быть длиннее 16 символов, а памяти выделяется только 16 байт (это еще AnsiString). Так еще и выделенная память нигде не освобождается.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.065 c
2-1339237885
Savek
2012-06-09 14:31
2013.03.22
Не удаётся сохранить картинку


4-1261646635
lunev_denis
2009-12-24 12:23
2013.03.22
Обновление информации в реестре


9-1193831870
savyhinst
2007-10-31 14:57
2013.03.22
Gravity


15-1338131036
ProgRAMmer Dimonych
2012-05-27 19:03
2013.03.22
HP Photosmart B110b и чёрный картридж


15-1330983917
osoed
2012-03-06 01:45
2013.03.22
Из DLL Visual Studio в DLL Delphi7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский