Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.21;
Скачать: CL | DM;

Вниз

Коварный 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.021 c
3-1181812956
Antoneiro
2007-06-14 13:22
2007.10.21
DATASET в EXCEL/XML и обратно


2-1190494437
Neux
2007-09-23 00:53
2007.10.21
Удаление одинаковых строк


15-1190241631
Германн
2007-09-20 02:40
2007.10.21
Поддержим отечественных производителей!


3-1181663169
ssa
2007-06-12 19:46
2007.10.21
Запись JPEG в БД через запрос


2-1191124887
Alex8
2007-09-30 08:01
2007.10.21
свойство "Custom.Constrstraint"