|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблемы с реализацией через функции
Как реализовать через функции: округление и проверку на символы в едит?
Округление пробовал реализовать через роунд, но что-то неудачно, когда прописывал к некоторым едитам его. Т.е. В первом пятизначное число становилось двузначным, а надо, чтобы после запятой. Кажись с параметрами там намудрил. Проверку на символы реализую в ОнКлик через "иф ленгхт едит.текст = 0 зен бегин шоумессадж", но выдает все равно ошибку " из нот а валид флоатинг поинт валу ". Вот такие вот дела. Помогите, пожалуйста, с реализацией, господа программеры. Проект тут: rghost.ru/5250360 Сижу через телефон, нет возможности код скинуть тут. Новичок в этом деле. |
#2
|
|||
|
|||
Вот так можно сделать
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) summa: TEdit; koef: TEdit; win: TEdit; prib: TEdit; OK: TButton; Label1: TLabel; lbl1: TLabel; lbl2: TLabel; lbl3: TLabel; lbl4: TLabel; lbl5: TLabel; lbl6: TLabel; procedure OKClick(Sender: TObject); procedure summaKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form1: TForm1; w, p, ss, k: Real; i: integer; str: string; implementation {$R *.dfm} function Separator(Text:String):String; begin //Если первый символ разделитель, то ставим первым символом 0 if (Pos(',',Text)=1) or (Pos('.',Text)=1) then Insert('0',Text,0); // Проверяем разделитель на правильность // и в случае необходимости меняем if (DecimalSeparator=',') and (Pos('.',Text)<>0) then begin Insert(',',Text,Pos('.',Text)); Delete(Text,Pos('.',Text),1); end; if (DecimalSeparator='.') and (Pos(',',Text)<>0) then begin Insert('.',Text,Pos(',',Text)); Delete(Text,Pos(',',Text),1); end; Separator:=Text end; procedure TForm1.OKClick(Sender: TObject); begin Summa.Text:=Separator(Summa.text); Koef.Text:=Separator(koef.Text); ss:=StrToFloat(summa.Text); k:=StrToFloat(koef.Text); w:=ss*k; p:=w-ss; win.Text:=FloatToStr(w); prib.Text:=FloatToStr(p); end; procedure TForm1.summaKeyPress(Sender: TObject; var Key: Char); begin if not (Key in ['0'..'9', '.', ',', #13, #8]) then begin ShowMessage('Вводи цифры'); key:= #0; end; end; end. |