|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#16
|
|||
|
|||
Спасибо :-) . Я пытался одной строкой всё сделать. Это только для String такая последовательность (сначала длина, потом сама строка) или для всех типов переменных так нужно делать?
|
#17
|
||||
|
||||
Можно запись сделать и одной строкой (с использованием структуры), но расчёт всё равно займёт несколько строк.
Числовые переменные пишутся чеоез SizeOf. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
micron18 (24.09.2012)
|
#18
|
|||
|
|||
Сделал так:
... ЗАПИСЬ Код:
I:=Length(St); BlockWrite(F,I,SizeOf(I)); BlockWrite(F,St,Length(St)); ЧТЕНИЕ Код:
BlockRead(F,I,SizeOf(I); BlockRead(F,St,I); St опять пустая ((( Последний раз редактировалось lmikle, 25.09.2012 в 08:01. |
#19
|
||||
|
||||
А так?
Код:
BlockRead(F, I, SizeOf(I); SetLength(St, I); BlockRead(F, St, I); Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#20
|
|||
|
|||
да, получилось )))
Спасибо |
#21
|
||||
|
||||
Очень хорошо про это написано здесь http://www.gunsmoker.ru/2011/10/pascal.html
Код сырец |
#22
|
|||
|
|||
более правильный вариант
Код:
I := Length(St); BlockWrite(F, I, SizeOf(I)); BlockWrite(F, St[1], Length(St)*SizeOf(St[1])); Код:
BlockRead(F,I,SizeOf(I)); UniqueString(S); SetLength(S,I); BlockRead(F,S[1], Length(St)*SizeOf(St[1])); Вариант с BlockRead(F,S, Length(St)) работал, потому что запись и чтение делалось в одной процедуре, а на самом деле писалось не то и читалось не туда(посмотрите что на самом деле записано в файл). Но поскольку писалось и читалось по одному и тому же адресу, то ошибка была не видна. |
#23
|
||||
|
||||
Цитата:
А вот с выражением SizeOf(St[1]) надо бы поосторожнее... |
#24
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |