Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Внизкак правильно считать/записать такой типизированный файл? Найти похожие ветки
← →
iat (2004-06-07 18:57) [0]Имеется такая конструкция
TMyRec = record
p: PChar;
s: string[255];
end;
...
var
F: file of TMyRec;
a: TMyRec;
begin
AssignFile(F, FileName);
Reset(F);
...
// со строкой s все ясно, но что делать с р.
// Как узнать сколько ей памяти надо выделить
end;
← →
begin...end © (2004-06-07 19:01) [1]А зачем записывать указатель?
← →
iat (2004-06-07 19:09) [2]Не указатель, а содержимое по адресу - строку с #0 концом.
строка s не подходит, т.к. нужно записывать различные длины строк (от 1 до нескольких кил). Конечно, можно на все случаи жизни задать в s максимально возможную длину, но при этом теряется гибкость и впустую тратится место.
← →
Тимохов © (2004-06-07 19:10) [3]
> Как узнать сколько ей памяти надо выделить
зачем указывать? и так понятно - 4 байта.
← →
begin...end © (2004-06-07 19:10) [4]А просто String нельзя?
← →
begin...end © (2004-06-07 19:13) [5]
> Не указатель, а содержимое по адресу - строку с #0 концом.
A PChar is a pointer to a null-terminated string of characters of the type Char.
← →
Тимохов © (2004-06-07 19:15) [6]ручками все делайте, ручками.
явно записать p, явно s.
файл не типизированный.
← →
Anatoly Podgoretsky © (2004-06-07 19:15) [7]У тебя именно указатель.
Во вторых речь про различную длину несовместима типизироваными файлами.
В третьих тебе нужен просто текстовый файл.
← →
iat (2004-06-07 19:22) [8]>А просто String нельзя?
нет, компилятор ругается, что
"Type TMyRec needs finalization - not allowed in file type"
← →
iat (2004-06-07 19:31) [9]>Тимохов © (07.06.04 19:15) [6]
хорошо, изменим условие
TMyRec = record
i: integer;
p: PChar;
s: string[255];
end;
теперь это не простой текстовый файл, а типизированный.
Вообще меня интересует сама возможность записи/чтения подобных конструкций со строками переменной длины (в отличии от string[255]).
← →
GuAV © (2004-06-07 19:34) [10]
> типизированный
> со строками переменной длины
не совместимые вещи
ЗЫ - я бы использовал НЕтипизированный
← →
Тимохов © (2004-06-07 19:35) [11]
> Вообще меня интересует сама возможность записи/чтения подобных
> конструкций со строками переменной длины (в отличии от string[255]).
да полно методов.
пользуйтесь нетипизированныйми файлами.
пишите длину,
затем строку.
также читаете.
пользуетесь blockread/blockwrite
← →
Anatoly Podgoretsky © (2004-06-07 19:36) [12]А что то изменилось после добавления еще одного члена в запись, все равно типизированый файл нельзя, получишь туже ошибку not allowed in file type
← →
Подкрадуха © (2004-06-07 23:01) [13]http://delphimaster.net/view/9-1085024752/
смотри [30] там
думаю, подойдет тебе
← →
sniknik © (2004-06-08 00:07) [14]> Вообще меня интересует сама возможность записи/чтения подобных конструкций со строками переменной длины ...
такая конструкция уже есть! и называется она текстовый файл, со всеми его недостатками. ну напиши подобие с #0 терминатед, и с обязательным двустрочием/...или сколько в структуре надо, и получиш в наследство все недостатки текстового файла, плюс будет гораздо медленнее ...
забей и пользуйся стандартным.
(типизированный файл только для данных с определенной структурой - длинной. в твоем случае не продходит)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.035 c