Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TStringList


fifi01 ©   (2006-09-21 13:03:00) 

Не пойму в чем проблема, есть TStringList, в который я в цикле добавляю строчки, строчки состоят как из читабельных символов, так и с полной ерундой (#$74#$0a#$76) - ну например так, только строчки длинее. Далее, после добавления в итоге оказывается, что в .Strings[i], либо пусто либо какие-то оторванные символы. Что я не так делаю?


Наиль   (2006-09-21 16:17:00) [1]


> StrToHex(PChar...

Интересный способ тестирования.
#0 всегда постпоследний в строке PChar, т.е. он неявляется частью строки и передним не встречаются #0. Другими словами первый же #0 - конец строки.


icWasya   (2006-09-21 15:57:00) [2]

// встать тут и посмотреть что находится в sl[0]
ну так вот ShowMessage и не покажет ничего после #0


Dmitrij_K   (2006-09-21 13:51:00) [3]


> о в листе оказывается только 1 целиком и второй только #$71#$71#$75#$74#$71.

Незнаю как у тебя, но у меня delphi 7 показывает что добавил


fifi01   (2006-09-21 13:47:00) [4]

Ну вся проблема такая:
например я добавляю:
1. #$71#$71#$75#$74#$71#$76#$76#$76#$76
2. #$71#$71#$75#$74#$71#$00#$00#$00
3. далее идет другой текст

Но в листе оказывается только 1 целиком и второй только #$71#$71#$75#$74#$71.


fifi01   (2006-09-21 13:43:00) [5]

Ну и что тогда использовать? Мне нужен был TStringList, что бы потом можно было использовать функцию pos относительно .Strings[i] или относительно общего текста .Text. Так а что теперь делать? Составлять массив массивов состоящих из байт? Как в следствии легче использовать pos относительно отдельного элемента и относительно всей информации?


Dmitrij_K   (2006-09-21 13:43:00) [6]

Очень простой тест
var sl:TStringList;
begin
 sl := TStringList.Create;
 sl.add('привет'#0#0#1#2#3#4#13#10);
 ShowMessage(sl.Text); // встать тут и посмотреть что находится в sl[0]
 memo1.Lines.Add(sl[0]);
end;


Dmitrij_K   (2006-09-21 13:41:00) [7]

TStringListработает с Stringи ему по*** что в себе хранить
А Memo как раз и обрезает #0


> Desdechado ©   (21.09.06 13:19) [3]
> ... а отладчиком пользоваться не учили?


Eraser   (2006-09-21 13:30:00) [8]

> [0] fifi01   (21.09.06 13:03)

если присутствуют не только читабельные символы, а еще в любые, то нужно отказаться от использования TStringList, или предварительно обрабатывать данные вручную.


fifi01   (2006-09-21 13:29:00) [9]

Но всё начинается видимо из-за того, что в добавляемой строке появляетются нулевые символы, #$00#$00#$00... если они присутствуют, то всё не работает.


fifi01   (2006-09-21 13:24:00) [10]

Код по своей сути примитивен.

Формат входящих данных в hex например: "#$0a#$75#$74#$0d#$ee#$13....."

   USList: TStrings;
   USList := TStringList.Create;
       for i := 0 to SourceLength - 1 do begin
        USList.Add(GetOwnStr(Source)); // добавили

         Form1.Memo1.Lines.Add('Test =  + StrToHex(PChar(USList.Strings[i])));  // тестируем для контроля данных в hex формате
       end;


Desdechado   (2006-09-21 13:19:00) [11]

> я в цикле добавляю строчки
код добавления и содержимое строки до добавления
а отладчиком пользоваться не учили?


Dmitrij_K   (2006-09-21 13:18:00) [12]


>  Что делать?

Показать код. Попробуем помоч


fifi01   (2006-09-21 13:14:00) [13]

Кажется понимаю в чем "ошибка", но не знаю как её исправить. В добавляемой строке, В конце встречается #$00#$00 т.е. нулевые символы, и дальнейшее манипулирование невозможно. Что делать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо