Страница 3 из 4
Re: Работа с файлом
Добавлено: 07 апр 2008, 18:17
scudo
workers.Name:='Иванов';
workers.Post:='Директор';
А как мне это записать в Паскале?
Программу мне нужно сделать на Паскале.
Могли бы вы написать код на паскале именно чтоб он осуществлял редактирование данных через программу,чтоб при этом отображались данные которые уже есть в *.txt
Re: Работа с файлом
Добавлено: 07 апр 2008, 18:34
MOTOCoder
Код именно на паскале, на "Код Delphi" не смотрите.
Вообще делается примерно так:
[syntax='Delphi']
type
TEmploeye=record
Name:string;
Post:string;
end;
procedure ParceString(s:string):TEmploeye;
var
I:integer;
sb:string;
E:TEmploeye;
begin
I:=1;
while s<>' ' do
begin
sb:=sb+s;
inc(i);
end;
inc(i);
E.Name:=sb;
sb:='';
while i < Length(S)+1 do
begin
sb:=sb+s;
inc(i);
end;
E.Post:=sb;
ParceString:=E;
end;
procedure GetString(E:TEmploeye):string;
begin
GetString:=E.Name+' '+E.Post;
end;
[/syntax]
Функция ParceString переводит строку в запись, GetString наоборот, формирует строку на основе записи. Ну а дельше думаю понятно: читаем строку, переводим в запись, изменяем нужное поле, переводим запись в строку и записываем.
В коде могут быть небольшие ошибки-писал прямо в браузер.
Re: Работа с файлом
Добавлено: 07 апр 2008, 18:53
scudo
Я делфи еще не изучал

...В принципе понимаю, но сделать немогу
Re: Работа с файлом
Добавлено: 07 апр 2008, 19:42
MOTOCoder
Еще раз говорю, что это код на паскале, а не на Delphi.
Допустим, есть файл, в котором не более N записей.
Чтобы написать программу, изменяющую I-ю запись, нужно:
1. Описать тип данных и процедуры обработки как в сообщении #22.
2. Объявить массив значений типа TEmploeye размерностью N.
3. Открыть файл для чтения, прочитать из него все строки, преобразуя каждую строку в запись функцией ParceString и записывая запись в массив;
4. Далее, пользователь вводит номер записи, при этом нужно вывести текущие данные и предложить ввести новые.
5. Когда изменение будет закончено, записать все записи в файл, преобразуя их в строки функцией GetString.
Re: Работа с файлом
Добавлено: 09 апр 2008, 18:56
scudo
Как добавить запись в конец текстового файла?Т.Е. над переместить указатель в конец?
Re: Работа с файлом
Добавлено: 09 апр 2008, 18:57
scudo
Кст. всем огромное спасибо за предыдущие посты =))))
Re: Работа с файлом
Добавлено: 09 апр 2008, 19:03
MOTOCoder
scudo писал(а):Как добавить запись в конец текстового файла?Т.Е. над переместить указатель в конец?
Для текстовых файлов перемещение в конец по-моему не работает, нужно просто открыть файл для записи и записывать в него строки процедурой
Append(F,'Stroka'). При этом строки будут добавляться в конец файла.
Re: Работа с файлом
Добавлено: 09 апр 2008, 19:53
scudo
type
sl=record;
p1,p2,p3,p4:string[50];
Var
f:text;
sluzh:sl;
begin
Assign(f,'c:\1\1.txt');
Reset(f);
Append(f);
Readln(sluzh.p1);
Writeln(f,sluzh.p1); {ФИО}
Readln(sluzh.p2);
Writeln(f,sluzh.p2); {должность}
Readln(sluzh.p3);
Writeln(f,sluzh.p3); {год рождения}
Readln(sluzh.p4);
Writeln(f,sluzh.p4); {оклад}
close(f);
end.
Он у меня стирает все записи и записывает введеную запись в самое начало.
Re: Работа с файлом
Добавлено: 09 апр 2008, 20:35
MOTOCoder
Извените, ошибся: Append нужно использовать вместо Reset для открытия файла в режиме дополнения, а затем дописывать данные процедурой writeln.
Re: Работа с файлом
Добавлено: 09 апр 2008, 20:53
scudo
Убираю Reset и остается только Append.И один фиг он стирает записи уже имеющиеся в текстовом файле и дописывает ново-введеные с самого начала.
Данные в текстовом файле находятся в след. виде:
Петров
Директор
1963
1995
Иванов
Кассир
1960
1990