Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];

Вниз

record   Найти похожие ветки 

 
3d[Power]   (2002-01-02 23:42) [0]

Если указывать
type ddemodata = record
x,y : word;
var1 : byte;
var2 : shortstring;
end;

А потом:
demodata: ddemodata;
demofile : file of ddemodata;

Можно будет потом вызывать:
read(demofile,demodata);
Из файла значения будут занесены в demodata.

Вопрос в следующем: где в delphi/sources валяется исходник этого действия, а конкретно, что бы hex заносить в переменные типа record.


 
3d[Power]   (2002-01-03 23:54) [1]

НУ может кто знает?


 
Adder   (2002-01-04 02:54) [2]

моя твоя не понимай :(


 
DK   (2002-01-04 03:35) [3]

На счёт shortstring не уверен, но если определён тип и имеет определённый размер, то можно и читать из файла и писать в файл, но если одна запись попадает на обрыв файла (пр. длина файла 100 байт а длина записи 30 байт - на цело не делится) то появятся глюки. Кроме того по моему удобнее использовать packed record.


 
False_Delirium   (2002-01-04 05:52) [4]

Не суть важно какой тип.
Копируется определённое количество бай начиная с адреса, где хранится структура, с внутренним смещением в размер типа переменных...


 
3d[Power]   (2002-01-04 13:59) [5]

Ок, перестроим вопрос по другому:
у меня есть последовательность байт
$34$C3$FA$21$D3
не суть важно какая
как мне ее "спроецировать" чтоли в переменную типа record?

type myrec = record
x,y : byte;
var1 : word;
var2 : byte;
end;


"спроецировать" также как делает это процедура Read. Для файла of record.


 
Mbo   (2002-01-04 14:05) [6]

если я правильно понял задачу
p:pbytearray;
amyrec:myrec;

p:=@amyrec;
p[0]:=$34;
...

или c помощью Absolute


 
Alx2   (2002-01-04 14:15) [7]

Вот с absolute:

type
TmyRec = packed record
byte1, byte2 : byte;
Data : Word;
end;
Var
A : integer;
B : TMyRec absolute A;
begin
A := 0; // Теперь весь B забит нулями
B.byte1 := 1;
B.byte2 := 2;
теперь A=513=$00000201


 
DK   (2002-01-06 06:02) [8]

Объясняю ещё раз:

type myrec = packed record
x,y : byte;
var1 : word;
var2 : byte;
end;
var
f: file of myrec;
w: myrec;
begin
assignfile(F, "c:\111.1");
rewrite(F);
write(F,w);
system.close(F);
end;
-размер созданного файла 5 байт (x + y + var1 + var2)

без packed будет 6 байт
С shortstring всё работает (уже проверил), но размер файла будет побольше (>256). Лучше по-моему ограничить строки не shortstring а например string[size].


Второе: если это твой файл: $34$C3$FA$21$D3 (5 байт)
то с этим
type myrec = record
x,y : byte;
var1 : word;
var2 : byte;
end;

при считывании ты получишь Read beyond end of file
Поэтому или накинь один байтик или юзай packed record.
Он работает чуток медленнее, но тогда все твои байтики из файла чётко "спроэцируются" на запись:
X:= $34;
Y:= $C3;
var1:= $21FA;
var2:= $D3;



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.004 c
6-75643
Glux
2001-10-24 17:05
2002.01.24
Руссский текст в Subject


1-75575
Vitalik
2002-01-06 21:03
2002.01.24
чтение строки из файла посредством TMemoryStream


14-75666
JMK
2001-11-29 06:52
2002.01.24
ЛЮДИ ОТКУДА МОЖНО СКАЧАТЬ DELPHI 6!!!!!!!!!!!!!!!!!!!!!


14-75657
Serega__2
2001-11-29 10:40
2002.01.24
Господа, а что с rxlib`ом случилось?


6-75635
Dmitry V. Averuanov
2001-11-02 15:42
2002.01.24
Мучительный вопрос:





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский