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

Вниз

TStringList   Найти похожие ветки 

 
fifi01   (2006-09-21 13:03) [0]

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


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

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


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


>  Что делать?

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


 
Desdechado ©   (2006-09-21 13:19) [3]

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


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

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

Формат входящих данных в 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;


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

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


 
Eraser ©   (2006-09-21 13:30) [6]

> [0] fifi01   (21.09.06 13:03)

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


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

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


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


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

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


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

Очень простой тест
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;


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

Ну вся проблема такая:
например я добавляю:
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.


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


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

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


 
icWasya ©   (2006-09-21 15:57) [12]

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


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


> StrToHex(PChar...

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



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

Текущий архив: 2006.10.08;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.047 c
15-1158229400
VitV
2006-09-14 14:23
2006.10.08
Книги Кэнту


2-1158939869
RedLine
2006-09-22 19:44
2006.10.08
Автозапуск


2-1158670027
KyRo
2006-09-19 16:47
2006.10.08
Как проверить что файл уже скопировался


15-1158163659
OSokin
2006-09-13 20:07
2006.10.08
День Программиста


3-1154678271
jiny
2006-08-04 11:57
2006.10.08
Права пользователей в программе