RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1580789
Accepted
Криштиану Масса
Криштиану Масса
Asked:2024-05-19 07:40:26 +0000 UTC2024-05-19 07:40:26 +0000 UTC 2024-05-19 07:40:26 +0000 UTC

记录数组中的奇怪错误

  • 772

通常,我有一个 mz 程序(代码在启动示例下面,因为它很大),首先我初始化 mz,然后我查看所有记录(图 1),此时一切都很好,然后我使用change_ward或change_doctor程序,当查看我想要更改的条目时,文本发生了奇怪的变化(图2),但是如果您使用删除,则根本不会出现问题,可以吗?请告诉我这与什么有关,以及如何在图 1 中纠正这个问题:在此输入图像描述

图2: 在此输入图像描述

代码:

Uses Crt;
Type
bolnoy=Record
FIO : String[20];
nom_palaty : Byte;
osn_d : string[10];
vrach : string[20];
date : string[10];
naz : string[10];
End;
Stud_File = File of bolnoy;
Stud_Mas = Array[1..50] of bolnoy;

Procedure Wait;
Begin
GotoXY(20,24);
Write('Для продолжения - нажмите любую клавишу ...');
ReadKey;
End;

Function F_I_O : String;
Const
B1:string='БВГДМНПРСТХЧ';
G1:string='аеиоаюеуоае';
Sog1:string='бвзклмнпрстч';
I1:Array[1..4] of string=('нов','лов','ский','ко');
Var
Kb,I : Byte;
F : String;
Begin
F:=B1[Random(12)+1];
Kb:=Random(2)+3;
For I:=1 To Kb Do
If I mod 2 = 1 then
F:=F+G1[Random(11)+1]
else
F:=F+Sog1[Random(12)+1];
F:=F+I1[Random(4)+1];
F:=F+' '+ B1[Random(12)+1]+'.'+ B1[Random(12)+1]+'.';
F_I_O:=F;
End;


Function F_I_O_doctor : String;
Const
B1:string='БВГДМНПРСТХЧ';
G1:string='аеиоаюеуоае';
Sog1:string='бвзклмнпрстч';
I1:Array[1..4] of string=('нов','лов','ский','ко');
Var
Kb,I : Byte;
F : String;
Begin
F:=B1[Random(12)+1];
Kb:=Random(2)+3;
For I:=1 To Kb Do
If I mod 2 = 1 then
F:=F+G1[Random(11)+1]
else
F:=F+Sog1[Random(12)+1];
F:=F+I1[Random(4)+1];
F:=F+' '+ B1[Random(12)+1]+'.'+ B1[Random(12)+1]+'.';
F_I_O_doctor:=F;
End;


function Diagnose: string;
const
s1:string = 'ОРВИ';
s2:string = 'Ротовирус';
s3:string = 'Гастрит';
s4:string = 'Хитрость';
s5:string = 'Синусит';
s6:string = 'Другое';
var
rand: byte;
r: string;
begin
rand:=random(5)+1;
case rand of
1: r:=s1;
2: r:=s2;
3: r:=s3;
4: r:=s4;
5: r:=s5;
6: r:=s6;
end;
Diagnose:=r;
end;


function date_opr: string;
var
v: string;
d,m,g: string;
Den,Mec: byte;
God: integer;
begin
Den:=random(31)+1;
Mec:=random(12)+1;
God:=random(20)+1999;
str(den,d);
str(mec,m);
str(god,g);
If den<10 then
d:='0'+d;
if mec<10 then
m:='0'+m;
v:=d+'.'+m+'.'+g;
date_opr:=v;
end;



function Naznach : string;
Const
n1:string = 'Покой';
n2:string = 'Валерьянка';
n3:string = 'Шалфей';
n4:string = 'Процедуры';
n5:string = 'УЗИ';
n6:string = 'Другое';
var
Rand: byte;
n: string;
begin
Rand:=random(6)+1;
case Rand of
1: n:=n1;
2: n:=n2;
3: n:=n3;
4: n:=n4;
5: n:=n5;
6: n:=n6;
end;
Naznach:=n;
end;




Procedure Input_Record(Var St_Rec:bolnoy);
Var
Kb,I,J,N : Byte;
Begin
{Randomize};
With St_Rec Do
Begin
{ Kb:=Random(6)+5;
FIO:='';
For J:=1 To Kb Do'
FIO:=FIO+CHR(Random(26)+65);}
FIO:=F_I_O;
nom_palaty:=random(10)+1;
osn_d:=diagnose;
vrach:=F_I_O_doctor;
date:=date_opr;
naz:=naznach;
End;
End;

Procedure Korrekt_File;
Var
Kb,I,J,N : Byte;
St_Rec : bolnoy;
St_F : Stud_File;
File_Name : String;
Begin
ClrScr;
GotoXY(25,5); Write('Процедура <Korrekt_File>');
GotoXY(20,8); Write('Номер записи -> '); Readln(N);
GotoXY(20,10); Write('Имя файла -> '); Readln(File_Name);
ASSIGN(St_F,File_Name);
ReSet(St_F);
SEEK(St_F,N-1);
Randomize;
Input_Record(St_Rec);
Write(St_F,St_Rec);
GotoXY(20,15);
WriteLn('Файл с именем ',File_Name,' откорректирован');
GotoXY(20,17);
WriteLn('Номер корректируемый записи = ',N);
Close(St_F);
Wait;
End;



Procedure Dopoln_File;
Var
Kb,I,J,N : Byte;
St_Rec : bolnoy;
St_F : Stud_File;
File_Name : String;
Begin
ClrScr;
GotoXY(25,5); Write('Процедура <Dopoln_File>');
GotoXY(20,8); Write('Количество дополняемых записей N= '); Readln(N);
GotoXY(20,10); Write('Имя файла -> '); Readln(File_Name);
ASSIGN(St_F,File_Name);
ReSet(St_F);
SEEK(St_F,FileSize(St_F));
Randomize;
For I:=1 To N Do
Begin
Input_Record(St_Rec);
Write(St_F,St_Rec);
End;
GotoXY(20,15);
WriteLn('файл с именем ',File_Name,' дополнен');
GotoXY(20,17);
WriteLn('Количество дополнительных компонент = ',N);
Close(St_F);
Wait;
End;

Procedure Init_File;
Var
Kb,I,J,N : Byte;
St_Rec : bolnoy;
St_F : Stud_File;
File_Name : String;
Begin
ClrScr;
GotoXY(25,5);
Write('Процедура
<Init_File>');
GotoXY(20,8);
Write('Количество компонент N= '); Readln(N);
GotoXY(20,10);
Write('Имя файла -> '); Readln(File_Name);
ASSIGN(St_F, File_Name);
ReWrite(St_F);
For I:=1 To N Do
Begin
Input_Record(St_Rec);
Write(St_F,St_Rec);
End;
GotoXY(20,15);
WriteLn('файл с именем ',File_Name,' создан');
GotoXY(20,17);
Writeln('Количество компонент = ',N);
Close(St_F);
Wait;
End;


Procedure Output_Monitor(N:Byte;St_Mas:Stud_Mas;Name:String);
Var
I:Byte;
St_Rec:bolnoy;
Begin
ClrScr;
GotoXY(20,2);
Write(Name);
WriteLn; WriteLn;
For I:=1 To N Do
Begin
With St_Mas[I] Do
WriteLn(I:5,FIO:15,nom_palaty:5,osn_d:12,vrach:17,date: 15,naz:10);
End;
Wait;
End;

Procedure Output_File;
Var
I,N:Byte;
St_Rec:bolnoy;
St_F:Stud_File;
St_Mas:Stud_Mas;
File_Name,Name:String;
Begin
ClrScr;
GotoXY(25,5); Write('Процедура <Output_File>');
{ReadLn;}
GotoXY(20,10); Write('Имя файла -> ');
{ReadLn;}
ReadLn(File_Name);
{ReadLn;}

Assign(St_F,File_Name);
ReSet(St_F);
I:=0;
While Not EOF(St_F) Do
Begin
INC(I);
Read(St_F,St_Rec);
St_Mas[I]:=St_rec;
End;
N:=I;
Wait;
Name:='Содержимое файла '+File_Name;
Output_Monitor(N,St_Mas,Name);
Close(St_F);
End;

Procedure Delete_Record;
Var
St_F:Stud_File;
File_Name:String;
I,K,L,M,N,Num:Byte;
St_Rec,Buf:bolnoy;
St_Mas,St_Mas1:Stud_Mas;
Sravn:Boolean;
Nomer:Byte;
Name:String;
Begin
ClrScr;
GotoXY(25,5);
Write('Процедура <Delete_Record>');
GotoXY(20,8);
Write('Номер записи которую хотите удалить= '); Readln(Num);
GotoXY(20,10);
Write('Имя файла -> '); Readln(File_Name);
ASSIGN(St_F, File_Name);
ReSet(St_F);
I:=0;
While Not EOF(St_F) Do
Begin
INC(I);
Read(St_F,St_Rec);
St_Mas[I]:=St_rec;
End;
N:=I;
close(St_f);
Rewrite(st_f);
for i:=Num to N do
St_Mas[i]:=St_Mas[i+1];
for i:=1 to N-1 do
begin
St_rec:=st_mas[i];
Input_record(st_rec);
Write(St_F,St_rec);
end;
GotoXY(20,15);
WriteLn('Запись с номером ',Num,' удалена');
Close(St_F);
Wait;
End;


Procedure Change_ward;
Var
St_F:Stud_File;
File_Name:String;
I,K,L,M,N:Byte;
St_Rec,Buf:bolnoy;
St_Mas:Stud_Mas;
Sravn:Boolean;
Nomer:Byte;
Name:String;
Begin
ClrScr;
GotoXY(25,5); Write('Процедура <Change_ward>');
GotoXY(20,8); Write('Номер больного -> '); Readln(N);
GotoXY(20,10); Write('Имя файла -> '); Readln(File_Name);
ASSIGN(St_F,File_Name);
ReSet(St_F);
SEEK(St_F,N-1);
St_rec.nom_palaty:=random(10)+1;
Write(St_F,St_Rec);
GotoXY(20,15);
WriteLn('Номер палаты больного с номером ', N,' изменен');
Close(St_F);
Wait;
End;

Procedure Change_doctor;
Var
St_F:Stud_File;
File_Name:String;
I,K,L,M,N:Byte;
St_Rec,Buf:bolnoy;
St_Mas:Stud_Mas;
Sravn:Boolean;
Nomer:Byte;
Name:String;
Begin
ClrScr;
GotoXY(25,5); Write('Процедура <Change_ward>');
GotoXY(20,8); Write('Номер больного -> '); Readln(N);
GotoXY(20,10); Write('Имя файла -> '); Readln(File_Name);
ASSIGN(St_F,File_Name);
ReSet(St_F);
SEEK(St_F,N-1);
Randomize;
St_rec.vrach:=F_I_O_doctor;
Write(St_F,St_Rec);
GotoXY(20,15);
WriteLn('Номер палаты больного с номером ', N,' изменен');
Close(St_F);
Wait;
End;

Procedure Menu_Obrabotka;
Var
Rez:Char;
Begin
While True Do
Begin
ClrScr;
GotoXY(25,8); Write('М Е Н Ю обработка');
GotoXY(20,10); Write('1. Вывод содержимого файла');
GotoXY(20,12); Write('2. Удаление сведений о заданном больном');
GotoXY(20,14); Write('3. Изменение номера палаты для заданного больного');
GotoXY(20,16); Write('4. Изменение лечащего врача для заданного больного');
GotoXY(20,18); Write('Выход');
GotoXY(23,20); Write(' Р Е Ж И М -> ');
Rez:=ReadKey;
Case Rez Of
'1' : Output_File;
'2' : Delete_Record;
'3' : Change_ward;
'4' : Change_doctor;
'5' : Exit;
End;
End;
End;
Procedure Menu;
Var
Rez:Char;
Begin
While True Do
Begin
ClrScr;
GotoXY(30,8); Write('М Е Н Ю');
GotoXY(20,10); Write('1. Инициализация файла записей');
GotoXY(20,12); Write('2. Дополнение файла');
GotoXY(20,14); Write('3. Корректировка файла');
GotoXY(20,16); Write('4. МЕНЮ обработка');
GotoXY(20,18); Write('5. Выход');
GotoXY(23,20); Write(' Р Е Ж И М -> ');
Rez:=ReadKey;
Case Rez Of
'1' : Init_File;
'2' : Dopoln_File;
'3' : Korrekt_File;
'4' : Menu_Obrabotka;
'5' : Exit;
End;
End;
End;
Begin
Menu;
End.
pascal
  • 1 1 个回答
  • 15 Views

1 个回答

  • Voted
  1. Best Answer
    MBo
    2024-05-19T10:28:21Z2024-05-19T10:28:21Z

    据您从这个未格式化的文本中可以看出,您没有从 st_rec 中的任何位置读取文件,因此这个局部变量只是垃圾。

    当您添加读取时,您将需要再次查找以写入同一位置

    • 0

相关问题

  • 请帮我纠正流程图中的错误

  • Pascal ABC,使用 While 编写程序并重复

  • 如果 ['A','B','E','F'] 中的 s[i] 则写入运行时错误:索引超出数组范围。怎么修?

  • 如果有一个(按钮),则从每行文本的开头删除一个空格

  • 代码中的错误是什么?运行时错误:输入字符串格式不正确。您需要输入一个数字,整数部分为 3 位,小数部分为 4 位

  • 帮助输出 10 而不是 30 [关闭]

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5