![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 т.е. нулевые символы, и дальнейшее манипулирование невозможно. Что делать?