Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit2;
- interface
- uses
- Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
- Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
- type
- TAddForm = class(TForm)
- EditName: TEdit;
- EditNumber: TEdit;
- AddButton: TButton;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- procedure AddButtonClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- AddForm: TAddForm;
- RowCount: Integer;
- implementation
- uses Unit1;
- {$R *.dfm}
- function IsNameCorrect(Name: String): boolean;
- var
- IsCorrect: Boolean;
- I, buf: Integer;
- begin
- IsCorrect := True;
- I := 1;
- if Name.Length = 0 then
- IsCorrect := False;
- while (I < Name.Length+1) and IsCorrect do
- begin
- buf := Ord(Name[1]);
- if not(((Ord(Name[i]) < 91) and (Ord(Name[i]) > 64)) or ((Ord(Name[i]) < 123) and (Ord(Name[i]) > 96))) then
- IsCorrect := False;
- Inc(I);
- end;
- IsNameCorrect := IsCorrect;
- end;
- function IsNumberCorrect(Number: String): boolean;
- var
- IsCorrect: Boolean;
- I: Integer;
- begin
- IsCorrect := True;
- I := 1;
- if Number.Length = 0 then
- IsCorrect := False;
- while (I < Number.Length+1) and IsCorrect do
- begin
- try
- StrToInt(Number[i]);
- except
- IsCorrect := False;
- end;
- Inc(I);
- end;
- IsNumberCorrect := IsCorrect;
- end;
- procedure TAddForm.AddButtonClick(Sender: TObject);
- var
- Current, Buf: PNode;
- I: Integer;
- begin
- if(IsNameCorrect(EditName.Text) and IsNumberCorrect(EditNumber.Text)) then
- begin
- Inc(RowCount);
- if(Head = nil) then
- begin
- New(Head);
- Head.Data.Name := EditName.Text;
- Head.Data.PhoneNumber := EditNumber.Text;
- S2.Table.RowCount := S2.Table.RowCount + 1;
- Head.Next := Nil;
- end
- else
- begin
- if Ord(EditName.Text[1]) < Ord(Head.Data.Name[1]) then //
- begin
- New(Current);
- Current.Data.Name := EditName.Text;
- Current.Data.PhoneNumber := EditNumber.Text;
- Current.Next := Head;
- Head := Current;
- end
- else
- begin
- New(Current);
- Current := Head;
- while (Current.Next <> nil) and (Ord(EditName.Text[1]) > Ord(Current.Next.Data.Name[1])) do
- Current := Current.Next;
- if (Current.Next = nil) then
- begin
- New(Current.Next);
- Current.Next.Data.Name := EditName.Text;
- Current.Next.Data.PhoneNumber := EditNumber.Text;
- Current.Next.Next := nil;
- end
- else
- begin
- New(Buf);
- Buf.Data.Name := EditName.Text;
- Buf.Data.PhoneNumber := EditNumber.Text;
- Buf.Next := Current.Next;
- Current.Next := Buf;
- end;
- end;
- end;
- S2.Table.RowCount := RowCount;
- I := 0;
- Current := Head;
- while I < RowCount do
- begin
- S2.Table.Cells[0, I] := Current.Data.Name;
- S2.Table.Cells[1, I] := Current.Data.PhoneNumber;
- Inc(I);
- Current := Current.Next;
- end;
- EditName.Clear;
- EditNumber.Clear;
- AddForm.Close;
- end
- else
- ShowMessage('Проверьте корректность введённых данных!');
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement