Advertisement
anticlown

Lab.anticlown.dll(Delphi)

Mar 10th, 2023 (edited)
295
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 5.35 KB | None | 0 0
  1. Library anticlown;
  2.  
  3. uses
  4.   ShareMem,
  5.   System.SysUtils,
  6.   System.Classes,
  7.   Vcl.Forms,
  8.   Vcl.Dialogs;
  9.  
  10. {$R *.res}
  11.  
  12. Type
  13.     TArr = Array Of Integer;
  14.  
  15. //Для двух чисел
  16.  
  17. Function IsFileOfNumbersCorrect(Path: String): Boolean; stdcall;
  18. Const
  19.     MIN_VALUE = 1;
  20.     MAX_VALUE = 10;
  21. Var
  22.     InputFile: TextFile;
  23.     Participants, NumberOut: Single;
  24.     IsCorrect: Boolean;
  25. Begin
  26.     AssignFile(InputFile, Path);
  27.     IsCorrect := True;
  28.     Try
  29.         Try
  30.             Reset(InputFile);
  31.             Readln(InputFile, Participants);
  32.             Readln(InputFile, NumberOut);
  33.  
  34.             If ((Participants < MIN_VALUE) Or (Participants > MAX_VALUE) Or (NumberOut < MIN_VALUE) Or (NumberOut > Participants)) Then
  35.                 IsCorrect := False;
  36.         Finally
  37.             CloseFile(InputFile);
  38.         End;
  39.     Except
  40.         IsCorrect := False;
  41.     End;
  42.  
  43.     IsFileOfNumbersCorrect := IsCorrect;
  44. End;
  45.  
  46. Procedure GetNumbersFromFile(Path: String; Var Participants, NumberOut: Integer; Var IsCorrect: Boolean); stdcall;
  47. Var
  48.     InputFile: TextFile;
  49.     Null: String;
  50. Begin
  51.     IsCorrect := True;
  52.     Try
  53.         AssignFile(InputFile, Path);
  54.         Try
  55.             Reset(InputFile);
  56.             Readln(InputFile, Null);
  57.  
  58.             If (Null <> '') Then
  59.                 IsCorrect := True
  60.             Else
  61.             Begin
  62.                 IsCorrect := False;
  63.                 ShowMessage(Pchar('Файл пуст!'));
  64.             End;
  65.         Finally
  66.             Close(InputFile);
  67.         End;
  68.     Except
  69.         ShowMessage(Pchar('Ошибка доступа!'));
  70.     End;
  71.  
  72.     If (IsCorrect) Then
  73.     Begin
  74.         Try
  75.             Try
  76.                 Reset(InputFile);
  77.                 Readln(InputFile, Participants);
  78.                 Readln(InputFile, NumberOut);
  79.             Finally
  80.                 Close(InputFile);
  81.             End;
  82.         Except
  83.             IsCorrect := False;
  84.         End;
  85.     End;
  86. End;
  87.  
  88. //Для одномерного массива
  89.  
  90. Function IsFileOfArrCorrect(Path: String): Boolean; stdcall;
  91. Const
  92.     MIN_SIZE = 2;
  93.     MAX_SIZE = 10;
  94.     MIN_VALUE = -99;
  95.     MAX_VALUE  = 99;
  96. Var
  97.     InputFile: TextFile;
  98.     Number: Single;
  99.     IsCorrect: Boolean;
  100.     Sequence: TArr;
  101.     I: Integer;
  102. Begin
  103.     AssignFile(InputFile, Path);
  104.     IsCorrect := True;
  105.     Try
  106.         Try
  107.             Reset(InputFile);
  108.             Readln(InputFile, Number);
  109.  
  110.             If (Number < MIN_SIZE) Or (Number > MAX_SIZE) Then
  111.                     IsCorrect := False
  112.             Else
  113.             Begin
  114.                 SetLength(Sequence, Round(Number));
  115.                 I := 0;
  116.  
  117.                 While (IsCorrect) And (I < Number) Do
  118.                 Begin
  119.                     Read(InputFile, Sequence[I]);
  120.                     If (Sequence[I] < MIN_VALUE) Or (Sequence[I] > MAX_VALUE) Then
  121.                         IsCorrect := False;
  122.  
  123.                     Inc(I);
  124.                 End;
  125.             End;
  126.         Finally
  127.             CloseFile(InputFile);
  128.         End;
  129.     Except
  130.         IsCorrect := False;
  131.     End;
  132.  
  133.     IsFileOfArrCorrect := IsCorrect;
  134. End;
  135.  
  136. Procedure GetSizeFromFile(Path: String; Var Size: Single; Var IsCorrect: Boolean); stdcall;
  137. Var
  138.    InputFile: TextFile;
  139.    Null: String;
  140. Begin
  141.     IsCorrect := True;
  142.     Try
  143.         AssignFile(InputFile, Path);
  144.         Try
  145.             Reset(InputFile);
  146.             Readln(InputFile, Null);
  147.  
  148.             If (Null <> '') Then
  149.                 IsCorrect := True
  150.         Else
  151.         Begin
  152.             IsCorrect := False;
  153.             ShowMessage(Pchar('Файл пуст!'))
  154.         End;
  155.         Finally
  156.             Close(InputFile);
  157.         End;
  158.     Except
  159.         ShowMessage(Pchar('Ошибка доступа!'))
  160.     End;
  161.  
  162.     If (IsCorrect) Then
  163.     Begin
  164.         Try
  165.             Try
  166.                 Reset(InputFile);
  167.                 Readln(InputFile, Size);
  168.             Finally
  169.                 Close(InputFile);
  170.             End;
  171.         Except
  172.             IsCorrect := False;
  173.         End;
  174.     End;
  175. End;
  176.  
  177. Function GetSequenceFromFile(Path: String; Size: Integer; Sequence: TArr; Var IsCorrect: Boolean): TArr; stdcall;
  178. Var
  179.    InputFile: TextFile;
  180.    I, FinalI: Integer;
  181.    Null: String;
  182. Begin
  183.     IsCorrect := True;
  184.     FinalI := Size;
  185.  
  186.     Try
  187.         AssignFile(InputFile, Path);
  188.         Try
  189.             Reset(InputFile);
  190.             Readln(InputFile);
  191.             Readln(InputFile, Null);
  192.  
  193.             If (Null <> '') Then
  194.                 IsCorrect := True
  195.             Else
  196.             Begin
  197.                 IsCorrect := False;
  198.                 ShowMessage(Pchar('Файл пуст!'))
  199.             End;
  200.         Finally
  201.             Close(InputFile);
  202.         End;
  203.     Except
  204.         ShowMessage(Pchar('Ошибка доступа!'))
  205.     End;
  206.  
  207.     If (IsCorrect) Then
  208.     Begin
  209.         Try
  210.             Try
  211.                 Reset(InputFile);
  212.                 Readln(InputFile);
  213.                 For I := 0 To FinalI Do
  214.                     Read(InputFile, Sequence[I]);
  215.             Finally
  216.                 Close(InputFile);
  217.             End;
  218.         Except
  219.             IsCorrect := False;
  220.         End;
  221.     End;
  222.  
  223.     GetSequenceFromFile := Sequence;
  224. End;
  225.  
  226. Exports
  227.   IsFileOfNumbersCorrect,
  228.   GetNumbersFromFile,
  229.   IsFileOfArrCorrect,
  230.   GetSizeFromFile,
  231.   GetSequenceFromFile;
  232.  
  233. Begin
  234. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement