Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.005 c
1-60552
XShura
2002-08-05 16:50
2002.08.19
ListView.OnChanging


1-60590
VS2001
2002-08-05 06:24
2002.08.19
Использование невизуальных компонент в приложении без формы


1-60661
demona
2002-08-09 04:57
2002.08.19
есть ли компонент как ColorGrid, но с , хотя бы, 256 цветами?


7-60878
kool
2002-06-06 18:42
2002.08.19
Как быстро прочитать рисунок с экрана?


3-60550
str
2002-07-27 23:52
2002.08.19
Batchmove & filter





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский