Текущий архив: 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