RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题

问题[pascal]

Martin Hope
Никита
Asked: 2024-05-24 17:33:46 +0000 UTC

如何将代码复制到 Free Pascal IDE 编辑器中?

  • 5

我有这个 FreePascal:

在此输入图像描述

我定期在其中编写程序。

问题是 - 我从其他来源获取了一些代码来测试,但它们很长,例如:

{Программа ASCII_TABLE выводит на экран таблицу ASCII символов}

program ASCII_TABLE;

uses CRT;

var i : byte;
j : byte;
ch : byte;
st : string;

begin
   GoToXY(2, 2);
   Write('Код Симв. Код Симв. Код Симв. Код Симв. ');
   Write('Код Симв. Код Симв. Код Симв. Код Симв. ');
   for j := 0 to 7 do
   for i := 0 to 15 do
      begin
         GoToXY(j*10+2, i+4);
         ch := i+(j*16);
         if ch < 10 then st := ' '
         else if ch < 100 then st := ' '
         else st := ' ';
         Write(ch, st, Chr(ch));
      end;
   GoToXY(2, 22);
   Write('Чтобы посмотреть следующую страницу, нажмите ENTER');
   Readln;
   ClrScr;
   GoToXY(2, 2);
   Write('Код Симв. Код Симв. Код Симв. Код Симв. ');
   Write('Код Симв. Код Симв. Код Симв. Код Симв. ');
   for j := 0 to 7 do
   for i := 0 to 15 do
      begin
         GoToXY(j*10+2, i+4);
         ch := i+(j*16) + 128;
         if ch < 10 then st := ' '
         else if ch < 100 then st := ' '
         else st := ' ';
         Write(ch, st, Chr(ch));
      end;
   GoToXY(2, 22);
   Write('Нажмите ENTER для выхода из программы');
   Readln;
end.

重新输入所有代码非常繁琐且耗时,并且由于某种原因不可能将其复制到编辑器中。

我不擅长宏,如果您通过另一个程序保存源文件,它将无法在编辑器本身中正确解码。

它看起来像这样:

Notepad++ 中的示例代码 在此输入图像描述

Pascal 中的相同代码: 在此输入图像描述 在此输入图像描述

现在我正在寻找如何将从其他地方复制的代码插入到 Pascal 中。

如果有人知道,也许这个编辑器工作不正常?

pascal
  • 2 个回答
  • 32 Views
Martin Hope
Криштиану Масса
Asked: 2024-05-19 07:40:26 +0000 UTC

记录数组中的奇怪错误

  • 5

通常,我有一个 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 个回答
  • 15 Views
Martin Hope
AslanPAPA
Asked: 2024-05-04 00:17:05 +0000 UTC

如何从字符串中提取单词并将其存储在 Lazarus(Pascal) 中的某个位置?

  • 5

我有一个处理程序,在其中比较从用户接收到的单词的长度,并将其与用户在InputCountFromUser中输入的数字进行比较,如果它们匹配,我会在OutputWordsFromStr中输入该单词。

但是如何输入一行并将其中的每个单词与InputCountFromUser进行比较,并在OutputWordsFromStr中显示与用户输入的数字匹配的单词,即InputCountFromUser

示例: ``InputStrFromUser:='嗨汤姆!你好吗?' 来自用户的输入计数:= 3;并在 Memo (OutputWordsFromStr) 中显示单词 Tom 和 How。

procedure TForm1.OutputBtnClick(Sender: TObject);
var
  InputStr: string;
  gg:integer;

begin
  InputStr:= InputStrFromUser.Text;
  OutputWordsFromStr.Clear;

  if ( IntToStr(length(InputStr)) = InputCountFromUser.Text) then
  begin
    OutputWordsFromStr.Text:= InputStr;
  end;

end;  

解决方案:

procedure TForm1.OutputBtnClick(Sender: TObject);
var
  inputStr: string;
  words: TStringList;
  i:integer;
begin
  inputStr := InputStrFromUser.Text;
  OutputWords.Clear;
  words:= TStringList.Create;
  words.DelimitedText:= inputStr;
  ShowMessage(IntToStr(words.Count));
  for i := 0 to words.Count - 1 do
  begin
    if IntToStr(Length(words[i])) = InputCountFromUser.Text then
    begin
      OutputWords.Lines.Add(words[i]);
    end;
  end;
end; 

唯一分隔单词的是空格,即行中有Привет мир!2 个单词Привет和мир!。

该标志!也被考虑在内。

pascal
  • 1 个回答
  • 23 Views
Martin Hope
Криштиану Масса
Asked: 2024-03-19 14:59:05 +0000 UTC

帮我修复 Pascal (turbo) 中 Copy 函数的模拟

  • 3

注意没有额外行的实现这是我的代码:

function mycopy(s: string; start: byte; len: byte): string;
var
  i: byte;
begin
  s:='';
  i:=1;
  while  (start<=length(s)) do begin
  s:=s+s[start];
  inc(start);
  inc(i);
  end;
  mycopy:=s;
end;

启动示例:在此输入图像描述

文本应该显示在标记区域中,但正如我们所看到的,没有显示任何内容。

pascal
  • 1 个回答
  • 31 Views
Martin Hope
Криштиану Масса
Asked: 2024-03-18 20:18:07 +0000 UTC

Pascal (Turbo) 中函数 delete、pos、length 的实现

  • 5

重要的!!!无需使用字符串数组,无需额外。字符串并且不使用标准字符串处理函数和程序(动态内存分配也是无用的),也是插入函数的示例:

procedure myinsert(substring: string; var s: string; start: integer);
var
  i, l, l1, f: integer;
begin
  l := Length(substring);
  for i:=1 to l do
  s:=s+' ';
  l1 := Length(s) + l;
  for i := l1 - l downto start + l do
    s[i] := s[i - l];
  f := 1;
  for i := start to start + l - 1 do
  begin
    s[i] := substring[f];
    Inc(f);
  end;
end;
pascal
  • 1 个回答
  • 42 Views

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