Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.014 c
3-1180958282
ambhtr
2007-06-04 15:58
2007.10.21
Как определить, существует ли у DBF таблицы индекс или нет?


2-1190535758
Jimmy
2007-09-23 12:22
2007.10.21
Сохранение в emf


15-1190382560
мастерПакость
2007-09-21 17:49
2007.10.21
проблемы с HTML


3-1181743268
Delphile
2007-06-13 18:01
2007.10.21
Хитрый SELECT


15-1190136328
Kolan
2007-09-18 21:25
2007.10.21
DMClient RC1




   Наверх