![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте! Есть у меня 3 задачки, но сам я не в силах их решить. Может, найдётся добрый умелец!
1 задача. На форме расположены текстовые поля, в которые вводятся наименование товара, цена в рублях и копейках. При нажатии на соответствующую кнопку информация добавляется в многострочный редактор "Магазин". Предусматривается контроль правильности заполнения всех полей (пустые поля рассматриваются как ошибка ввода). 2 задача. Написать приложение, состоящее из двух форм. На первой форме расположить: a) два текстовых поля, в которых задаются размеры второй формы; b) кнопку "Форма 2", при нажатии на которую открывается открывается вторая форма заданного размера; c) кнопку "Уменьшить", при нажатии на которую Форма 2 уменьшается по ширине и высоте. 3 задача. 1) Определить массу содержимого бочки радиусом r и высотой H при плотности вещества G. 2) Дана строка. Определить кол-во пробелов, предшествующих первому восклицательному знаку. 3) Дана строка. Удалить из неё всё группы букв "abcd". Спасибо! Последний раз редактировалось xBlackBird, 07.12.2016 в 20:26. |
|
#2
|
|||
|
|||
|
Дело было вечером, делать было нечего...
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;ЗЫ. Только с такими решенями препод скорее всего догадается, что это делал не ты... Последний раз редактировалось lmikle, 08.12.2016 в 00:53. |
|
#3
|
||||
|
||||
|
Тогда нужно как можно проще, чтоб не догадалси
|
|
#4
|
|||
|
|||
|
2 @Rafa3L
Тогда StringReplace сам реализуй |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
xBlackBird (08.12.2016)
| ||
|
#5
|
|||
|
|||
|
Спасибо большое!
![]() |
|
#6
|
||||
|
||||
|
2 lmikle
Вот, только без проверки вылета из диапазона len Код:
procedure TForm1.Button4Click(Sender: TObject); var i: integer; s: string; begin s:= Edit5.Text; // := StringReplace(Edit5.Text,'abcd','',[rfReplaceAll]); for i:= Length(s) downto 1 do if s[i-3] + s[i-2] + s[i-1] + s[i] = 'abcd' then Delete(s, i-3, 4); Edit5.Text:= s; end; |