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

Вниз

работа с записями   Найти похожие ветки 

 
Freezz   (2005-12-28 00:02) [0]

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


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

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


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

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

var
 Sup1: Supply;

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


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

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


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

Самое простое решение: (просто другого не знаю)
Создаешь обычный текстовый документ записываешь в него информацию следующим образом:
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

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


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

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

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

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

f1: ShortString;


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

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


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


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

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


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

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

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 и вперед.


 
sniknik ©   (2005-12-28 01:04) [9]

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

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



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

Текущий архив: 2006.01.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.064 c
2-1135315670
neat
2005-12-23 08:27
2006.01.15
Обработка исключения


3-1132066468
Vlad
2005-11-15 17:54
2006.01.15
ADOQuery + ClientDataSet. Ошибка при пустом параметре


3-1132650304
ORA-Del
2005-11-22 12:05
2006.01.15
Как в Oracle сделать аналог ReplaceStr для поля Long


1-1134324968
markers
2005-12-11 21:16
2006.01.15
Tlabel и WordWrap


14-1135111982
JazY
2005-12-20 23:53
2006.01.15
Канал Explorer: команда кнута и пряника. Кто выиграет?