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