Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

работа с записями


Freezz ©   (2005-12-28 00:02:00) 

Дорогие мастера, помогите студенту.
значит задача такова. в Паскале
1. создать запись, описание товаров на складе. т.е поле название товара, поле количество штук и поле цена.
 эт просто
type
Supply = record
 f1: string;
 f2: integer;
 f3: integer;
end;
далее мы должны заполнить эту запись и аписать в файл / потом прочитать из файла
вот тут проблема =(
 как заполнить запись? =)
readln(supply.f1[i]) не проходит а просто
supply.f1 наклаываються одно на другое.. как быть?
мне потом надо поиск организовать и сортировку..
помогите пожалуйста


sniknik   (2005-12-28 01:04:00) [1]

> //просто стринг нельзя для типизир. файла
можно т.к. > задача такова. в Паскале(не на языке паскаль, а в... т.е. имется ввиду оболочка... -> старый добрый dos паскаль)
там все строки короткие.
другое дело 255 символов под имя действительно многовато. и длинна(0 байт) тудаже в запись попадет (в любом случае. лучше тогда масив символов вместо строки использовать).

и + исходя из тогоже, меняем AssignFile на Assign и CloseFile на Close и далее тоже следуем (пытамся ;), кто еще не забыл) синтаксису паскаля.


з. танька   (2005-12-28 00:25:00) [2]

ок, щас расскажем..

type
 TSupply = record
   nazv: string[50];  //просто стринг нельзя для типизир. файла
   kolvo: integer;
   cena: integer;
 end;
var
 f: file of TSupply;
 sup1: TSupply;
begin
 AssignFile(f, 'filename');
 Reset(f);
 Read(f, sup1);
 CloseFile(f);
end;

тута мы прочитали одну запись из файла. можно и больше прочитать, только придется проверять файл с помощью функции EoF() чтобы не выйти за пределы. ещё может понадобиться Seek и FileSize в общем F1 и вперед.


The_scorpion   (2005-12-28 00:20:00) [3]


> Supply - это не сама запись а тип записи. дальше ты должен
> объявить переменную этим типом:
>
> var
>  Sup1: Supply;

точно...промашка вышла...я почему-то решил, что он ее в варе описал...


palva   (2005-12-28 00:19:00) [4]

Supply это имя типа а не переменная. Нужно создать переменную этого типа, и с ней работать:

var s: Supply;
...
s.f1 := ...

2. Если записи предназначены для вывода в файл, то проще пользоваться короткими строками:

f1: ShortString;


MegaVovan   (2005-12-28 00:19:00) [5]

Кстати тебе одну запись надо прочитать или масив записей?


MegaVovan   (2005-12-28 00:17:00) [6]

Самое простое решение: (просто другого не знаю)
Создаешь обычный текстовый документ записываешь в него информацию следующим образом:
f:TextFile;
s:string;
.....
for i:=1 to n do begin
write(f,f1);write(f,'"пробел"');
write(f,f2);write(f,'"пробел"');
writeln(f,f3);
end;

А считывать приблизительно так

while eof do
while eol do
begin
readln(s);
repeat
 f1:=f1+s[i];
until S[i]='"пробел"';
 repeat
 f2:=f2+s[i];
until S[i]='"пробел"';
repeat
 f2:=f2+s[i];
until S[i]='"пробел"';
end

Может где то есть ошибки это тебе исправлять суть вот в чем
Записуешь в файл записи через пробел потом считуешь до пробела переходиш на другую переменую доходишь до конца строки переходишь до следующего елемента масива


Freezz   (2005-12-28 00:16:00) [7]

ну в дельфи хотя бы как .. мне главное как записать в файл и прочесть из него.


з. танька   (2005-12-28 00:13:00) [8]

Supply - это не сама запись а тип записи. дальше ты должен объявить переменную этим типом:

var
 Sup1: Supply;

и уже в неё читать записи из файла (если это структурированный файл)
дальше помочь не могу т.к. паскаль не помню. давно это было, да :)


The_scorpion   (2005-12-28 00:11:00) [9]

К полям записи нужно обращаться через точку. Пример:
Supply.f1:='sdsd';
Supply.f2:=3;
Supply.f3:=5;


Наверх

Титульная страница Поиск, карта сайта Написать письмо