Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: CL | DM;

Вниз

Помогите с заполнением структуры...   Найти похожие ветки 

 
МИФИст ©   (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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
4-60926
Dr. Web
2002-06-11 14:34
2002.08.19
Icons for MDIChild


1-60619
Hellman
2002-08-06 08:08
2002.08.19
Текста в записях


8-60756
_ncux_
2002-04-12 15:51
2002.08.19
Книга по OpenGL из Internet а


3-60545
Alinka
2002-07-30 16:52
2002.08.19
Помогите, Мастера. Срочно!


7-60870
esprit_bel
2002-06-06 11:00
2002.08.19
Вопрос