![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Free |
![]()
Сообщение
#1
|
Гость ![]() |
Имеется прога для работы с файлом. В ней все процедуры уже готовы (создать файл, открыть файл, просмотреть содержимое и т.д.) Осталось только написать процедуру, которая бы меняла две записи местами в файле. Вводиться номер первой записи и номер второй. вот что сделал я:
Код interface type MyRec= record name1 : string[39]; name2 : string[39]; end; type Myfiletype = file of MyRec; Код procedure FChange( var fff:Myfiletype; FileOpen: boolean ); var rec:myrec; var a, b, i: integer; str1, str2, str3, str4:string; begin writeln (' введите номер первой записи'); {$I-} read(i); seek(fff,i); {$I+} if (ioresult=0) then FileOpen:=TRUE else begin MyFileErr:=5; exit; end; str1:=rec.name1; str2:=rec.name2; writeln(' введите номер второй записи); {$I-} read(b); seek(fff, b); {$I+} if (ioresult=0) then FileOpen:=TRUE else begin MyFileErr:=5; exit; end; str3:=rec.name1; str4:=rec.name2; rec.name1:=str1; rec.name2:=str2; write(fff, rec); seek(fff, i); rec.name1:=str3; rec.name2:=str4; write(fff, rec); end; В итоге у меня получается билиберда ![]() |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ну, зачем же так? Можно проще...
procedure FChange(var f: Myfiletype; FileOpen: boolean);
var
r1, r2:myrec;
a, b: integer;
begin
writeln (' введите номер первой записи');
read( a ); { номер первой записи }
{$i-} seek( f, a ); {$i+}
if (ioresult=0) then FileOpen:=TRUE
else begin
MyFileErr:=5; exit;
end;
read(f, rec1); { читаем 1 запись }
writeln (' введите номер второй записи');
read( b ); { номер второй записи }
{$i-} seek( f, B ); {$i+}
if (ioresult=0) then FileOpen:=TRUE
else begin
MyFileErr:=5; exit;
end;
read(f, rec2); { читаем 2 запись }
{ и меняем местами ... }
seek( f, a ); write(f, rec2);
seek( f, B ); write(f, rec1);
end;
|
Free |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 16 Пол: Мужской Репутация: ![]() ![]() ![]() |
Большое спасибо volvo! Действительно, всё оказалось намного проще, а я голову ломал. Просто ещё не совсем освоился с работой с файлами и записями. А ведь скоро курсовую писать. Эхх...
![]() |
![]() ![]() |
![]() |
Текстовая версия | 22.07.2025 20:20 |