ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Помогите с кодом в Delphi
  #1  
Старый 02.11.2008, 02:37
Аватар для blednii
blednii
Участник форума
Регистрация: 12.06.2007
Сообщений: 160
Провел на форуме:
357904

Репутация: 44
Отправить сообщение для blednii с помощью ICQ Отправить сообщение для blednii с помощью Yahoo
По умолчанию Помогите с кодом в Delphi

Доброго времени суток.
Имеется такой вот код, с ним проводятся простые мат операции, как сделать чтоб нельзя было вводить ничего кроме цифр и если поля не заполненны не выбивала стандартная ошибка.
Цитата:
' ' is not a valid integer value
Сам код:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='')or (Edit4.Text='') then
ShowMessage('Все поля обязательны к заполнению');
if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'')and (Edit4.Text<>'') then
Label9.Caption:='Спасибо за использование!';
a:=StrToInt(Edit1.Text);
b:=StrToInt(Edit2.Text);
c:=StrToInt(Edit3.Text);
d:=StrToInt(Edit4.Text);
e:=1-d/100;
f:=b/a*c*e;
g:=b/a*c;
Label6.Caption:=FloatToStr(f);
Label8.Caption:=FloatToStr(g);

end;
Спасибо за внимание.
 
Ответить с цитированием

  #2  
Старый 02.11.2008, 02:43
Аватар для cremator (c)
cremator (c)
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме:
1240829

Репутация: 165
Отправить сообщение для cremator (c) с помощью ICQ
По умолчанию

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9']) then key:=#0;
end;
procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9']) then key:=#0;
end;
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9']) then key:=#0;
end;
procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9']) then key:=#0;
end;
 
Ответить с цитированием

  #3  
Старый 02.11.2008, 02:55
Аватар для begin_end
begin_end
Members of Antichat - Level 5
Регистрация: 04.01.2007
Сообщений: 176
Провел на форуме:
17964969

Репутация: 1362
По умолчанию

Подмена символов, не являющихся цифрами - хорошее дополнение, хотя описываемую проблему не решает. Кроме этого в приведенном коде, минимально его модифицируя, следует сделать так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 if (Edit1.Text<>'') and (Edit2.Text<>'') and (Edit3.Text<>'')and (Edit4.Text<>'') then
  begin
   Label9.Caption:='Спасибо за использование!';
   a:=StrToInt(Edit1.Text);
   b:=StrToInt(Edit2.Text);
   c:=StrToInt(Edit3.Text);
   d:=StrToInt(Edit4.Text);
   e:=1-d/100;
   f:=b/a*c*e;
   g:=b/a*c;
   Label6.Caption:=FloatToStr(f);
   Label8.Caption:=FloatToStr(g);
  end else ShowMessage('Все поля обязательны к заполнению');
end;
Ошибка "' ' is not a valid integer value" в указанном случае более не вылезет, хотя может появиться при вставке любого текста из буфера обмена в поля (м.б. еще дополнительно вводить проверку?).
 
Ответить с цитированием

  #4  
Старый 02.11.2008, 03:01
Аватар для blednii
blednii
Участник форума
Регистрация: 12.06.2007
Сообщений: 160
Провел на форуме:
357904

Репутация: 44
Отправить сообщение для blednii с помощью ICQ Отправить сообщение для blednii с помощью Yahoo
По умолчанию

Вот это выходит


[Error] MainFormUnit.pas(100): Declaration of 'Edit1KeyPress' differs from previous declaration
[Error] MainFormUnit.pas(102): Undeclared identifier: 'key'
[Error] MainFormUnit.pas(104): Declaration of 'Edit2KeyPress' differs from previous declaration
[Error] MainFormUnit.pas(106): Undeclared identifier: 'key'
[Error] MainFormUnit.pas(108): Declaration of 'Edit3KeyPress' differs from previous declaration
[Error] MainFormUnit.pas(110): Undeclared identifier: 'key'
[Error] MainFormUnit.pas(112): Declaration of 'Edit4KeyPress' differs from previous declaration
[Error] MainFormUnit.pas(114): Undeclared identifier: 'key'
[Fatal Error] sellercalc.dpr(11): Could not compile used unit 'MainFormUnit.pas'
 
Ответить с цитированием

  #5  
Старый 02.11.2008, 03:06
Аватар для cremator (c)
cremator (c)
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме:
1240829

Репутация: 165
Отправить сообщение для cremator (c) с помощью ICQ
По умолчанию

надо создавать события OnKeyPress для каждого компонента Edit
 
Ответить с цитированием

  #6  
Старый 02.11.2008, 03:17
Аватар для blednii
blednii
Участник форума
Регистрация: 12.06.2007
Сообщений: 160
Провел на форуме:
357904

Репутация: 44
Отправить сообщение для blednii с помощью ICQ Отправить сообщение для blednii с помощью Yahoo
По умолчанию

И нельзя дать вписывать не цифры ибо это калькулятор, но не выходит цыфры продолжают работать.
 
Ответить с цитированием

  #7  
Старый 02.11.2008, 03:26
Аватар для cremator (c)
cremator (c)
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме:
1240829

Репутация: 165
Отправить сообщение для cremator (c) с помощью ICQ
По умолчанию

что??? не понял вопрос
 
Ответить с цитированием

  #8  
Старый 02.11.2008, 03:29
Аватар для blednii
blednii
Участник форума
Регистрация: 12.06.2007
Сообщений: 160
Провел на форуме:
357904

Репутация: 44
Отправить сообщение для blednii с помощью ICQ Отправить сообщение для blednii с помощью Yahoo
По умолчанию

1. Должны только цифры вписываться
2. С проверкой помогли.



А вот с цифрами всеравно никак не выходит.
 
Ответить с цитированием

  #9  
Старый 02.11.2008, 03:46
Аватар для ProTeuS
ProTeuS
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме:
4226592

Репутация: 2175


Отправить сообщение для ProTeuS с помощью ICQ
По умолчанию

юзай компонент дефольный SpinEdit. там уже решена проблема. вводится только цифры + контрорль границ ввода на уровне VCL там в пропертисах устанавливается
 
Ответить с цитированием

  #10  
Старый 02.11.2008, 03:48
Аватар для cremator (c)
cremator (c)
Постоянный
Регистрация: 20.06.2008
Сообщений: 323
Провел на форуме:
1240829

Репутация: 165
Отправить сообщение для cremator (c) с помощью ICQ
По умолчанию

сделал так

Код:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var i: integer; str:string;
begin
  if (((Key = ord('V')) and (ssCtrl in Shift)) or ((Shift = []) and (Key = VK_INSERT))) then
  begin
   if Clipboard.HasFormat(CF_TEXT) then
   begin
    str:=clipboard.AsText;
    ClipBoard.Clear;
    for i:=1 to length(str) do
    begin
     case str[i] of #48..#57: clipboard.AsText:=clipboard.AsText+str[i];
    end;
    key := 0;
   end;
  end;
end;

end;


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not(key in ['0'..'9',#27,#8]) then key:=#0;
end;
плюс в начале ещё uses ClipBrd;

хотя если тебе не надо ловить числа из буфера то просто можно заменить этим
Код:
 procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);   begin          ClipBoard.Clear;       end;

Последний раз редактировалось cremator (c); 02.11.2008 в 04:11..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books [DELPHI]/[PASCAL] De-visible С/С++, C#, Delphi, .NET, Asm 13 03.11.2008 17:23
DElphi 2007 помогите найти рабочий! A_V С/С++, C#, Delphi, .NET, Asm 11 23.07.2008 23:32
из C++ в Delphi помогите KIR@PRO С/С++, C#, Delphi, .NET, Asm 0 27.03.2008 06:18



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ