Показать сообщение отдельно
  #2  
Старый 07.12.2016, 22:36
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,024
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Дело было вечером, делать было нечего...

1.
Код:
procedure Form1.Button1Click(Sender: TObject);
var
  sName : String;
  iRub, iKop : Integer;
begin
  Try
    // Пошли проверки
    If Trim(Edit1.Text) = '' then Raise Exception.Create('Нимнеование товара не введено.');
    If Trim(Edit2.Text) = '' then Raise Exception.Create('Цена товара руб не введена.');
    If Trim(Edit3.Text) = '' then Raise Exception.Create('Цена товара коп не введена.');

    sName := Trim(Edit1.Text);

    If Not TryStrToInt(Trim(Edit2.Text),iRub) Then Raise Exception.Create('Цена товара руб не является числом.');
    If Not TryStrToInt(Trim(Edit3.Text),iRub) Then Raise Exception.Create('Цена товара коп не является числом.');

    // Все ОК - добавляем в Memo
    Memo1.Lines.Add(Format('%s - %d руб %d коп',[sName, iRub, iKop]));
  Except
    On E : Exception Do MessageDlg(E.Message,mtError,[mbOK],0);
  End;
end;

2. Тут есть 2 формы - form1 и form2. Все кнопки и поля ввода на Form1. Обе формы должны создаваться автоматически (такое, вроде, по умолчанию)
Код:
uses Unit2;

// Показ формы
procedure Form1.Button1Click(Sender : TObject);
var
  W, H : Integer;
begin
  If tryStrToInt(Edit1.Text,W) And tryStrToInt(Edit2.Text,H) then
    begin
      Form2.Width := W;
      Form2.Height := H;
      Form2.Show;
    end
  else
    MessageDlg('Указанные ширина и/или высота не являются целым числом.',mtError,[mbOK],0);
end;

// уменьшение размера
procedure Form1.Button2Click(Sender : TObject);
var
  W, H : Integer;
begin
  W := Form2.Width;
  H := Form2.Height;
  If (W < 11) Or (H < 11) Then MessageDlg('Ширина и/или высота формы меньше мин значения.',mtError,[mbOK],0)
  else
    begin
       W := W - 10;
       H := H - 10;
       Form2.Width := W;
       Form2.Height := H;
    end;
end;

3.1.
V = H*Pi*R^2
m = V*G
Код:
procedure Form1.Button1Click(Sender : TObject);
var
  H, R, G : Double; // на всякий случай
begin
  If TryStrToFloat(Edit1.Text,R) And TryStrToFloat(Edit2.Text,H) And TryStrToFloat(Edit3.Text,G) 
    Then MessageDlg(Format('m = %.2f',[G*H*sqr(R)*3.14]),mtInformation,[mbOK],0)
    Else MessageDlg('Ошибка в исходных данных.',mtError,[mbOK],0);
end;

3.2.
Код:
procedure Form1.Button1Click(Sender : TObject);
var
  S : String;
  I : Integer;
  C : Integer;
begin
  S := Edit1.Text;
  C := 0;
  I := 1;
  While (S[i] <> '!') And (I <= Length(S)) Do
  begin
    If S[i] = ' ' Then Inc(C);
    Inc(I);
  end;
  If I > Length(S) 
    Then ShowMessage('В строке нет воскл. знака.')
    Else ShowMessage(format('В строке %d символов до воскл. знака.',[C]));
end;

3.3.
Код:
procedure Form1.Button1Click(Sender : TObject);
var
  S1, S2  : String;
begin
  S1 := Edit1.Text;
  S2 := StringReplace(S1,'abcd','',[rfReplaceAll]);
  ShowMessage('Строка до: ' + S1 + #13#10 + 'Строка после: ' + S2);
end;


ЗЫ. Только с такими решенями препод скорее всего догадается, что это делал не ты...
Ответить с цитированием