|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.04.2014, 19:21 | #1 |
Пользователь
Регистрация: 02.04.2014
Сообщений: 18
|
shortstring не считывает 255 символов
Подскажите, в чем может быть причина, что при считывании из типизированного файла, состоящего из строк длиной 65 байт, переменная string[65] считывает только 36 байт. Увеличение до string[255] тоже дает строку только в 36 байт.
Если открывать тот же файл, но как textfile и считывать из него построчно переменную типа string, читается строка в 65 байт. |
12.04.2014, 19:26 | #2 |
t45t
Участник клуба
Регистрация: 20.03.2012
Сообщений: 1,849
|
код в студию, чтение из типизированного файла
from dark to light)
|
12.04.2014, 19:48 | #3 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
Наверное, используется Unicode, а файл в ANSI.
|
12.04.2014, 21:03 | #4 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,872
|
|
12.04.2014, 21:58 | #5 |
Пользователь
Регистрация: 02.04.2014
Сообщений: 18
|
Somebody, northener,
спасибо за участие в вопросе! Проблема была в неправильном назначении типа string[65]. Строка длиной 65 байт - это строка длиной 65 байт. А string[65] - строка, у которой индекс 0=65, а с 1 по 66 - собственно сама строка. В моем случае нулевой индекс строки='$'. Ord('$')=36. Вот и получалось, что считывалось только 36 символов. Последний раз редактировалось mahatmaQL; 12.04.2014 в 22:05. |
12.04.2014, 22:11 | #6 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,872
|
mahatmaQL
Давай сразу уточним термины. тип string[65] это вариант паскалевского типа Shortstring. 65 означает что под переменную этого типа выделено 66 байт. Их них в байт с нулевым индексом записывается текущая длина строки. А в остальные байты - сама строка. |
12.04.2014, 22:45 | #7 | |
Пользователь
Регистрация: 02.04.2014
Сообщений: 18
|
Цитата:
имя строку в 65 байт, я обозвал ее переменной string[65]. Получив, таким образом, первый байт=длине строки (в моем случае Ord('$')=36). поэтому у меня не получалось считать всю строку, а только первые ее 36 символов. В моем случае был файл строк с Length(str)=65, а не файл строк типа string[65]. В этом была ошибка. Последний раз редактировалось mahatmaQL; 12.04.2014 в 22:54. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Vba строка более 255 символов | sir.andrey | Помощь студентам | 5 | 15.04.2013 10:54 |
Строка больше 255 символов? | TwiX | Общие вопросы Delphi | 6 | 07.12.2009 16:53 |
Строка длинною более 255 символов | Kuzya59 | Общие вопросы Delphi | 7 | 27.09.2009 20:29 |
SQl и поля с длино более 255 символов | JordanS | БД в Delphi | 16 | 21.06.2008 08:13 |