Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Function CheckFileDataForXandArr(Num: String): Boolean;
- Const
- MAX_LIM = 99999;
- MIN_LIM = -9999;
- Var
- NewNum: Integer;
- IsCorrect: Boolean;
- Begin
- NewNum := 0;
- IsCorrect := True;
- Num := Trim (Num);
- Try
- NewNum := StrToInt(Num);
- Except
- MessageBox(Form1.Handle, Pchar('Не получилось преобразовать X к целочисленному типу данных. Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
- IsCorrect := False;
- End;
- If(IsCorrect And ((NewNum > MAX_LIM) Or (NewNum < MIN_LIM))) Then
- Begin
- Num := IntToStr(NewNum);
- MessageBox(Form1.Handle, Pchar('X вне разрешенного диапазона! Проверьте исходные данные.'), 'Ошибка', MB_ICONSTOP);
- IsCorrect := False;
- End;
- CheckFileDataForXAndArr := IsCorrect;
- End;
- Function CheckFileDataForN(Num: String): Boolean;
- Const
- MAX_LIM = 99999;
- MIN_LIM = 2;
- Var
- NewNum: Integer;
- IsCorrect: Boolean;
- Begin
- NewNum := 0;
- IsCorrect := True;
- Num := Trim (Num);
- Try
- NewNum := StrToInt(Num);
- Except
- MessageBox(Form1.Handle, Pchar('Не получилось преобразовать N к целочисленному типу данных. Проверьте корректность данных.'), 'Ошибка', MB_ICONSTOP);
- IsCorrect := False;
- End;
- If(IsCorrect And ((NewNum > MAX_LIM) Or (NewNum < MIN_LIM))) Then
- Begin
- Num := IntToStr(NewNum);
- MessageBox(Form1.Handle, Pchar('N вне разрешенного диапазона! Проверьте исходные данные.'), 'Ошибка', MB_ICONSTOP);
- IsCorrect := False;
- End;
- CheckFileDataForN := IsCorrect;
- End;
- Function Open (): String;
- Begin
- With Form1 Do
- Begin
- If OpenDialog1.Execute Then
- Begin
- Path := OpenDialog1.FileName;
- IsFileOpen := True;
- End
- Else
- IsFileOpen := False;
- End;
- Open := Path;
- End;
- Function TakeDataFromFile1(Number1: String; Var FileOutput: TextFile): String;
- Var // x
- IsRight: Boolean;
- Begin
- IsRight := True;
- Try
- Readln(FileOutput, Number1);
- Number1 := Trim (Number1);
- IsRight := CheckFileDataForXAndArr(Number1);
- Except
- End;
- If(Not(IsRight)) Then
- TakeDataFromFile1 := ''
- Else
- TakeDataFromFile1 := Number1;
- End;
- Function TakeDataFromFile2(Number2: String; Var FileOutput: TextFile): String;
- Var //N
- IsRight : Boolean;
- Begin
- IsRight := True;
- Try
- Readln(FileOutput, Number2);
- Number2 := Trim (Number2);
- IsRight := CheckFileDataForN(Number2);
- Except
- End;
- If(Not(IsRight)) Then
- TakeDataFromFile2 := ''
- Else
- TakeDataFromFile2 := Number2;
- End;
- type
- TArray = Array of Integer;
- TStr = Array of String[5];
- function SeparateString (Str : String) : TStr;
- Var
- StrArr : TStr;
- I, K : Integer;
- Flag : Boolean;
- Begin
- K := 0;
- SetLength(StrArr, (Str.Length div 2) + 1);
- For I := 0 To Str.Length div 2 do
- StrArr[i] := '';
- I := 1;
- While I <= Str.Length Do
- begin
- Flag := true;
- While (Str[I] <> ' ') and (I <= Str.Length) Do
- Begin
- StrArr[K] := StrArr[K] + Str[I];
- Inc(I);
- Flag := False;
- End;
- If Not(Flag) then
- Inc(K);
- If Flag then
- Inc(I);
- end;
- I := 1;
- K := 0;
- While Str[I] <> '' Do
- Begin
- If Str[I] = ' ' then
- Inc(K);
- Inc(I);
- End;
- SetLength(StrArr, K + 1);
- Result := StrArr;
- End;
- function ConvertStringToArray (StringGridColCount : Integer; Var FileOutput: TextFile) : TArray;
- Var
- I, K : Integer;
- Arr : TArray;
- Str : String;
- StrArr : TStr;
- Const
- MIN = -9999;
- MAX = 99999;
- Begin
- Readln(FileOutput, Str);
- SetLength(Arr, StringGridColCount);
- for I := Low(Arr) to High(Arr) do
- Arr[I] := 0;
- Str := Trim(Str);
- StrArr := SeparateString (Str);
- If (High(StrArr) + 1 <> StringGridColCount) then
- begin
- SetLength (Arr, 1);
- Arr[0] := BAD;
- MessageBox(Form1.Handle, Pchar('Количество элементов массива не совпадает с заявленным. Проверьте исходные данные.'), 'Ошибка', MB_ICONSTOP);
- ConvertStringToArray := Arr;
- Exit
- end;
- try
- For I := Low(Arr) to High(Arr) do
- Arr[I] := StrToInt (StrArr[I]);
- except
- SetLength (Arr, 1);
- Arr[0] := BAD;
- MessageBox(Form1.Handle, Pchar('Не удалось преобразовать исходные данные в целочисленный тип. Проверьте исходные данные.'), 'Ошибка', MB_ICONSTOP);
- ConvertStringToArray := Arr;
- Exit
- end;
- For I := Low(Arr) to High(Arr) do
- If (Arr[I] > MAX) or (Arr[I] < MIN) then
- begin
- SetLength (Arr, 1);
- Arr[0] := BAD;
- MessageBox(Form1.Handle, Pchar('Исходные данные выходят за границы допустимых. Проверьте исходные данные.'), 'Ошибка', MB_ICONSTOP);
- ConvertStringToArray := Arr;
- end;
- ConvertStringToArray := Arr;
- End;
- procedure TForm1.N2Click(Sender: TObject);
- Var
- FileInput: TextFile;
- Num, I: Integer;
- Str1, Str2 : String;
- Arr : TArray;
- begin
- Num := 0;
- Path := Open;
- AssignFile(FileInput, Path);
- Reset(FileInput);
- If(IsFileOpen) Then
- Begin
- Str1 := TakeDataFromFile1(IntToStr(Num), FileInput);
- if Str1 <> '' then
- Str2 := TakeDataFromFile2(IntToStr(Num), FileInput);
- End;
- if Not((Str1 = '') or (Str2 = '')) then
- Begin
- Edit1.Text := Str1;
- Edit2.Text := Str2;
- End
- Else
- Begin
- Edit1.Text := #0;
- Edit2.Text := #0;
- End;
- if (Str1 <> '') and (Str2 <> '') then
- Begin
- Arr := ConvertStringToArray(StrToInt(Str2), FileInput);
- if (Arr[0] <> BAD) then
- Begin
- for I := Low(Arr) to High(Arr) do
- Begin
- StringGrid1.Cells[I, 0] := IntToStr(Arr[I]);
- Button1.Enabled := true;
- End;
- End
- else
- Begin
- for I := Low(Arr) to StrToInt(Str2) - 1 do
- Begin
- StringGrid1.Cells[I, 0] := '';
- End;
- Edit1.Text := '';
- Edit2.Text := '';
- End;
- End;
- CloseFile(FileInput);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement