![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
работа с записями
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;