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

Вниз

Коварный TStrings :)   Найти похожие ветки 

 
Riply ©   (2007-09-21 07:35) [0]

Здравствуйте !
Столкнулась с таким (для меня неожиданным) поведением StringList:
Пусть есть некая pData: PChar (не суть важно каким образом полученная) и List: TStringList;
Делаем примерно следующее:
List := TStringList.Create;
try
 with List do
  begin
   Add(pData);
   ShowMessage(IntToStr(Count));
   SaveToFile(_TestFile);
   Clear;
   LoadFromFile(_TestFile);
   ShowMessage(IntToStr(Count));
  end;
finally
 List.Free;  
end;
Первый ShowMessage нам говорит, что Count = 1, а второй - Count = 316.
Вот как бывает :)


 
Cash ©   (2007-09-21 07:43) [1]

Всегда чтоль говорит? :)
т.е. не зависимо от длины pData?
интересно тогда посмотреть на содержимое _TestFile...


 
Riply ©   (2007-09-21 07:47) [2]

> [1] Cash ©   (21.09.07 07:43)
> Всегда чтоль говорит? :)
> т.е. не зависимо от длины pData?
Нет. Такое он выдает только для конкретного pData,
плученного по строго определенному рецепту :)


 
Loginov Dmitry ©   (2007-09-21 07:52) [3]

> Первый ShowMessage нам говорит, что Count = 1, а второй
> - Count = 316.
> Вот как бывает :)


Видимо, в первом случае pData содержит символы перевода строки. Но эта строка запихивается целиком в один Item.
При чтении же из файла, как и положено, для каждой строки создается отдельный итем.


 
Riply ©   (2007-09-21 07:59) [4]

>[3] Loginov Dmitry ©   (21.09.07 07:52)
>Видимо, в первом случае pData содержит символы перевода строки.
>Но эта строка запихивается целиком в один Item.
>При чтении же из файла, как и положено, для каждой строки создается отдельный итем.

Угу :)
Просто когда столкнулась, удивилась. Сохраняю одно кол-во строк, а вытаскиваю другое.


 
KSergey ©   (2007-09-21 08:21) [5]

Занятна женская терминология: "коварный" :)

PS
Нет, нет, я вовсе ен являюсь женоненавистником!


 
Anatoly Podgoretsky ©   (2007-09-21 08:36) [6]

> Riply  (21.09.2007 07:35:00)  [0]

Откуда взяла подобную строку? Юникс/Макинтош?


 
Riply ©   (2007-09-21 09:14) [7]

> [5] KSergey ©   (21.09.07 08:21)
> Нет, нет, я вовсе ен являюсь женоненавистником!

Все вы так говорите :)

> [6] Anatoly Podgoretsky ©   (21.09.07 08:36)
> Откуда взяла подобную строку? Юникс/Макинтош?

Нет. Маленькая халтурка: правила ошибки в чужом дипломе. Там и столкнулась.
Кушать то охота :)


 
Cash ©   (2007-09-21 11:43) [8]

Riply, кушать охота ет хорошо, плохо када неохота :)
попробуй прямое приведение к string, а луч strpas функцию.
Add(strpas(pData));

PChar должна быть ограничена нулем справа, так что и это тоже над проверить :)

а так, в качестве дебага, посмотри длину строки pData, содержимое ее.
Еще можно извернуться и сделать так: Memo.Text:=string(pData).
Тада будет видно точное содержимое переменной.


 
Плохиш ©   (2007-09-21 11:49) [9]


> Riply ©   (21.09.07 07:59) [4]
> Угу :)
> Просто когда столкнулась, удивилась.

Интересные люди, удивляются корректной, документированной работе методов компонента :-)


 
Игорь Шевченко ©   (2007-09-21 12:36) [10]


> Нет. Маленькая халтурка: правила ошибки в чужом дипломе.
>  Там и столкнулась.
> Кушать то охота :)


Тебе кушать, а нам потом с такими, с позволения сказать, специалистами, работать


 
Riply ©   (2007-09-21 19:02) [11]

>[9] Плохиш © (21.09.07 11:49)
>Интересные люди, удивляются корректной, документированной работе методов компонента :-)

Представь себе: Смотришь чужой код. Там некий StringList с которым что-то не то.
Чтобы иметь возможность воспроизвести ситуацию, сохраняешь его.
А когда загружешь, то выясняется, что новый List это совсем не старый :)


>[10] Игорь Шевченко © (21.09.07 12:36)
> Тебе кушать, а нам потом с такими, с позволения сказать, специалистами, работать

Ну... это же не самый страшный вариант.
Во всяком случае он пытался выполнить работу сам (и что-то сделал),
а не попросил все написать за него :)


 
Сергей М. ©   (2007-09-21 19:31) [12]


> Riply


Все фигня, кроме пчел, да и пчелы фигня)

Ты вот что нашей честнОй компании поведай - в момент создания топика причины сабжа были тебе уже известны или подвиг в [4] ты совершила под бомбежкой гнилыми томатами и тухлыми яйцами ?)

Эт, пожалуй, будет намного интересней всей той скучной стрингботвы)..


 
Сергей М. ©   (2007-09-21 19:34) [13]

Хм ..

Вот ведь я ляпнул идею)

Пожалуй возьму себе на вооружение - класс TStringBotva, пожалуй, будет покруче TStringList)


 
Riply ©   (2007-09-21 19:39) [14]

> [12] Сергей М. ©   (21.09.07 19:31)
>Ты вот что нашей честнОй компании поведай - в момент создания топика причины
>сабжа были тебе уже известны или подвиг в [4]
>ты совершила под бомбежкой гнилыми томатами и тухлыми яйцами ?)

Если бы я не знала в чем дело, то задала бы вопрос в "Начинающих"
ибо лишена комплекса "страха задать глупый(простой, тривиальный) вопрос" :)
P.S.
Еще и скромная к тому же :)


 
Сергей М. ©   (2007-09-21 19:43) [15]


> Riply ©   (21.09.07 19:39) [14]
</I
>


> Если бы я не знала в чем дело, то задала бы вопрос в "Начинающих"


Пугать компанию "страшилками" про СтрингЛист, я понимаю, интересней)


> Еще и скромная к тому же


Стесняюсь спросить - комсомолка ? активистка ? красавица ?

))


 
Сергей М. ©   (2007-09-21 19:46) [16]


> ибо лишена комплекса


Да видим мы все)

Да умничка же ! Да так и держать !

Дай же бог тебе терпения, когда "наезды" на тебя становятся явно нетерпимыми)



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

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

Наверх




Память: 0.48 MB
Время: 0.047 c
2-1190805253
smartleds
2007-09-26 15:14
2007.10.21
Господа еще один вопрос , сделал я на форме массив компонентов


2-1190972872
Riply
2007-09-28 13:47
2007.10.21
FreeLibrary для самой себя из APC-нити


15-1190563931
ProgRAMmer Dimonych
2007-09-23 20:12
2007.10.21
Поддскажите, плз, самое простое и быстрое решение...


3-1182017847
Kley
2007-06-16 22:17
2007.10.21
Сравнение данных


15-1190559516
DDDeN
2007-09-23 18:58
2007.10.21
Средство создания значков





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский