1 (edited by builov.maikl 2021-03-14 15:14:59)

Topic: задать условия проверки на предмет написания недопустимых знаков /\:*?

как предотвратить написание знаков / \ : * ? " < > | в поле edit
в моём проекте автоматически создаётся одноименная папка.
нужно запретить пользователю вводить недопустимые знаки... вопрос как?

2 (edited by sibprogsistem 2021-03-14 17:51:35)

Re: задать условия проверки на предмет написания недопустимых знаков /\:*?

builov.maikl wrote:

как предотвратить написание знаков / \ : * ? " < > | в поле edit
в моём проекте автоматически создаётся одноименная папка.
нужно запретить пользователю вводить недопустимые знаки... вопрос как?

if pos(Form1.Edit1.Text, '?')  then showmessage('Не допустимый символ (?)'); 

или заменить

str:=ReplaceStr(переменная_с_текстом, 'что_меняете', '');

Re: задать условия проверки на предмет написания недопустимых знаков /\:*?

Спасибо, работает но только на первом вводимом символе. если недопустимый знак второй и последующий то нет!
и ещё, если усложнить задачу?
при вводе "?" сообщение выскакивает, но символ пишется в edit. как удалить последний введённый символ?

Re: задать условия проверки на предмет написания недопустимых знаков /\:*?

const Deny = ['/', '\', ':', '*', '?', '"', '<', '>', '|'];

// Ввод
procedure Form1_Edit3_OnKeyPress(Sender: TObject; var Key: Char);
begin
if Key in Deny then
    begin
      ShowMessage('"'+Key+'" - недопустимый символ (запрещенные: /\ : * ? " < > |)');
      Key:=#0;
    end;
end;

// Копипаст
procedure Form1_Edit3_OnChange (Sender: TObject);
    var i:integer;
        s,s1:string;
begin
   s := Form1.Edit3.Text;
   for i:=0 to Length(Deny)-1 do
   s := ReplaceStr(s,Deny[i],'');
   if s <> Form1.Edit3.Text then
   begin
       ShowMessage('Недопустимые символы: / \ : * ? " < > |');
       Form1.Edit3.Text := s;
   end;
   s:='';
end;

Re: задать условия проверки на предмет написания недопустимых знаков /\:*?

builov.maikl wrote:

Спасибо, работает но только на первом вводимом символе. если недопустимый знак второй и последующий то нет!
и ещё, если усложнить задачу?
при вводе "?" сообщение выскакивает, но символ пишется в edit. как удалить последний введённый символ?

const
arr = ['/', '\', ':', '*', '?', '"', '<', '>', '|'];

procedure Form1_Edit1_OnChange (Sender: TObject);
var
i:integer;
begin
  for i:=0 to Length(arr)-1 do begin
     Form1.Edit1.Text:=ReplaceStr(Form1.Edit1.Text,arr[i],'');
     Form1.Edit1.SelStart:=Length(Form1.Edit1.Text);
  end;
end;
Post's attachments

Attachment icon test.rar 2.84 kb, 183 downloads since 2021-03-16 

Re: задать условия проверки на предмет написания недопустимых знаков /\:*?

Спасибо Друзья! всё получилось!