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

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

Длинна переменной типа string [D6, Win2k]


Pavelkq ©   (2005-02-17 10:15:00) 

Пишу обработчик для файлов не совсем текстового вида, но содержащих текстовые блоки. Запихиваю всю эту фигню а переменную типа string. Когда применяю функцию Length, то она возвращает мне длинну переменной до первого нулевого байта. Т.е. она считает #0 концом текстовой переменной. Но реально там еще куча данных. Как можно получить длинну этой переменной?


begin...end   (2005-02-17 11:05:00) [1]

> Pavelkq   (17.02.05 10:15)

> Когда применяю функцию Length, то она возвращает мне
> длинну переменной до первого нулевого байта.

Она возвращает не длину переменной , а длину строки . Размер переменной от длины строки не зависит.


Arm79   (2005-02-17 10:50:00) [2]

"Пихай" в буфер Pchar. И в файл записывай этот буфер, предварительно записав его размер. При считывании прочитай размер буфера, потом прочитай сам буфер тоже как Pchar. затем бегай по буферу и интерпретируй данные как угодно


Digitman   (2005-02-17 10:44:00) [3]


> Pavelkq


файл имеет регулярную структуру ? элементы структуры содержат и текстовые и бин.данные ?
если да, то "запихивать в string" каждую структуру просто неразумно


Sha   (2005-02-17 10:41:00) [4]

Запихивать надо правильно.


Digitman   (2005-02-17 10:26:00) [5]


> Запихиваю всю эту фигню а переменную типа string


ошибаешься... не всю "фигню" ты "запихиваешь", а "фигню" до первого терминирующего #0 .. оттого и length() показывает тебе меньше чем ты ожидаешь

проверь сам :

var
s: string;

s := #0#0#0#0#0; //5 терминаторов подряд
showmessage(inttostr(length(s))); //5-ку и увидишь !


Чапаев   (2005-02-17 10:17:00) [6]

Приведи код. Очень как-то непонятно ты проблему описал.


Наверх

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