Форум: "Система";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизПомогите с заполнением структуры... Найти похожие ветки
← →
МИФИст (2002-06-04 22:44) [0]Всем привет.
Такой вопрос у меня есть некоторая структура, например:
PA = ^TA;
TA = record
HS: Dword;
PS: Dword;
DS: Dword;
MS: String;
MD: String;
end;
Во время работы она у меня заполняется, и сохраняется как PChar:
procedure Work(Data : Pointer);
begin
...
Save(Data);
end;
procedure Save(Data : Pchar);
Ch: Char;
begin
for i:=0 to Len-1 do
write(TempFile,Data[i]);
Ch:=#13;
write(TempFile,Ch);
Ch:=#10;
write(TempFile,Ch);
end;
Сохраняется всё правильно данные сохранются как надо с разделителем #13#10. А вот прочитать у меня не получается,
так чтобы я мог и поочередно посылать в процедуру Work. Т.е. всё дело работает в одну сторону.
Вопрос вот в чём как читая TempFile: File of Char заполнить структуру по-байтно, что-то вроде:
var TT: PA;
Dat: Char;
TempFile: File of Char;
...
for i:=0 to Len-1 do
begin
read(TempFile, Dat[i]);
TT[i]:=Dat[i]; ???????????
end;
чтобы потом сделать
Work(TT) ?
Я надеюсь кто-нибудь понял мой вопрос =)
← →
Burmistroff (2002-06-05 00:36) [1]Вввиду того, что в структуре есть стринги неопределенной длинны сделать это будет не совсем просто. Я бы сохранял длину стринга в дополнительные ячейки массива (dlina1,dlina2:dword)и при записи массива в файл, дописывал стринги в его конец.
При загрузке файла во временную стрингу tmp, можгно будет копировать поля MS и MD напрямую (учитывая смещение по длине массива) из стринги copy(tmp, 4*3+4*2+1, i), где 4*3 - длина имеющихся полей массива, 4*2 - длина доп.полей (dlina1 dlina2) содержащих длины стрингов MS и MD, а i - длина стринга:
procedure Load(Data : Pchar);
...
CopyMemory(data, pchar(tmp), 4*5); //загружаем числа в массив
pa(data).MS:=copy(tmp, 4*5+1, pa(data).dlina1);
pa(data).MD:=copy(tmp, 4*5+1+ pa(data).dlina1, pa(data).dlina2);
← →
МИФИст (2002-06-05 11:44) [2]А если переопределить MS и MD как String[6]?
← →
handra (2002-06-05 12:19) [3]МИФИст ©> то все будет работать...
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c