标签: pascal

如果抛出特定异常,如何使我的 FreePascal 应用程序以特定代码退出?

我的程序有一个ESyntaxError类,我这样使用:

\n\n
raise ESyntaxError.Create(Message)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我将该ESyntaxError类定义如下:

\n\n
ESyntaxError = class(Exception)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我观察到,如果ESyntaxError.Create(Message)调用了该代码,我的程序\xe2\x80\x99s 退出代码将设置为1. 但在这种情况下我希望将其设置为65.

\n\n

我尝试这样做:

\n\n
ExitCode := 65;\nraise ESyntaxError.Create(Message);\n
Run Code Online (Sandbox Code Playgroud)\n\n

...但是我的应用程序仍然只是以 退出1,而不是65\xe2\x80\x94 我猜是因为内置Exception类总是重置ExitCode1?(Don\xe2\x80\x99t 确实知道 \xe2\x80\x99 是这种情况,并且在异常文档中没有看到任何明确说明这一点,但我从我在这里观察到的行为推断出这一点)。

\n\n

或者,如果我想让程序具有非1/非0退出状态,我是否应该以其他方式处理这个问题而不是基于它Exception

\n

pascal freepascal exception exit-code

-4
推荐指数
1
解决办法
631
查看次数

我的pascal作业需要修复此代码

我被分配了要编写的程序。这是说明

问题解决与编程

  1. 保险公司对根据NMTRO进行的研究可以更好地为客户提供帮助的软件感兴趣。该软件应进行试运行,每天最多可接待30位客户。

您需要编写一个伪代码或绘制流程图,以接受客户的信息(名字,姓氏,性别,汽车型号,汽车类别,保险公司,TOC,是否已安装防盗设备,Premium和汽车价值)。根据电子表格部分任务B中给出的计算标准,为每个客户计算补偿金。

最后,您将要:计算完全综合保险的车辆数量b。找到最高的车辆成本c。计算安装防盗机制的所有者的比例d。提示用户输入客户名称,并搜索并显示客户信息,包括要支付的赔偿金。

  1. 设计并实现一个跟踪表,该表接受6个成员的数据(与电子表格相同的数据)。该表应跟踪汽车,TOC,保费,防盗安装和保险付款的价值。应计算所有客户的总保费

这是代码`

VAR
     First_Name, Last_Name, Model, Insurance_company, stop: array[1..30] of string;
     Compensation, V_O_C, P_O_A, A_O_C: array [1..30] of real;
     Gender: array [1..30] of char;
     T_O_C, Premium, X, Count, CountA, Highest, Category: array [1..30]of integer;
     Antitheft_installed: array [1..30] of boolean;

Begin
   Count:=0;
   CountA:=0;
   Highest:=0;
    FOR X = 1 to 30 DO
   Repeat
   Writeln ('Please enter First_Name');
   Readln (First_Name[X]);
   Writeln ('Please enter Last_Name');
   Read Last_ Name [X]
   Writeln ('Please enter Gender, M or F');
   Readln Gender[X]
   Until …
Run Code Online (Sandbox Code Playgroud)

pascal freepascal

-5
推荐指数
1
解决办法
167
查看次数

Delphi字符串不可靠

您好我正在创建一个非常繁重的应用程序,它在另一个应用程序线程上继续并且还抓取句柄.因此,如果该应用程序会冻结,那么我的应用程序会在目标软件负载很重的情况下不时出现滞后现象

问题是,如果某种程度上更重的应用程序"滞后"我会遇到字符串的意外问题,它们会给我不可靠的输出.

任何人都知道为什么会这样,以及我如何解决这个问题或解决这个问题?

我目前正在使用的解决方案是belove,但这并不是我想要做的事情,因为它确实使运行时非常不可靠,因为我无法确定结果.

function GetInt(MyNum:string):integer;
begin
  try
    result := strtoint(MyNum);
  except
    result := 0;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

作为一个例子,我做了这个脚本,突然我得到$ ReBEFF不是一个有效的整数.(突然间它已经运行好几个小时了)

oldB是一个Byte,它作为转换为十六进制的数字处理.oldB设置为始终为0,它应该永远不会更改,尤其是对于甚至不在十六进制数字系统内的Re

xx0000 = B
00xx00 = G
0000xx = R
Run Code Online (Sandbox Code Playgroud)

示例脚本(这不是唯一一个遇到字符串问题的代码部分,它无缘无故地随机出现在整个应用程序中)

var
  oldR:byte = 0;
  oldG:byte = 30;
  oldB:byte = 0;
  _Down:bool = false;

function GetColor(R, G, B:byte):integer;
var
  MyColor:string;
begin
  MyColor := '';
  MyColor := MyColor + inttohex(B, 2);
  MyColor := MyColor + inttohex(G, 2);
  MyColor := MyColor + inttohex(R, 2);
  result := strtoint('$' + MyColor);
end;

procedure TMainF.DonateColorTimer(Sender: TObject); …
Run Code Online (Sandbox Code Playgroud)

delphi string pascal

-5
推荐指数
1
解决办法
328
查看次数

如何使用while运算符从字符串中删除空格?帕斯卡尔

我有文本,我需要从文本的开头和文本的结尾删除空格.我只能用while do operator来做.我怎样才能做到这一点?这是程序代码

     program RandomTeksts;
     uses crt;
     var
     t:String;
     l, x, y:Integer;

    const tmin=1; tmax=30;
    label
    Start,
    end;
    begin
    Start:
    clrscr;
    writeln('write text (from ',tmin,' to ',tmax,' chars): ');
    readln(t);
    l:=length(t);

    if (l<tmin) or (l>tmax) then
    begin
    writeln('Text doesn't apply to rules!');
    goto end;
    end;
    clrscr;
    begin
    randomize;
    repeat
    x:=random(52+1);
    y:=random(80+1);
    textcolor(white);

    gotoxy(x,y);
    writeln(t);

    delay(700);
    clrscr;
    until keypressed;
    end;
    ord (readkey)<>27 then
    goto Start;
    end:
    end.
Run Code Online (Sandbox Code Playgroud)

pascal freepascal

-5
推荐指数
1
解决办法
595
查看次数

编写Integer或只是Int更好吗?

我们通常在学校使用Pascal进行编程,但在我的个人生活中,我更喜欢Python,C或C++等新语言.所有这三种语言都使用数据类型Int,但Pascal使用Integer.它实际上是相同的,但"整数"有点长.写这样的东西:

Type int=integer; 一个"好"或"坏"的习惯?

pascal

-6
推荐指数
1
解决办法
97
查看次数

标签 统计

pascal ×5

freepascal ×3

delphi ×1

exception ×1

exit-code ×1

string ×1