• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Помогите По Дельфи

  • Автор темы Автор темы Olya
  • Дата начала Дата начала

Olya

Homo habilis
Принятый Кодер
Регистрация
10 Май 2015
Сообщения
70
Баллы
60
Всем доброго времени.
Помогите по дельфи.
Три вопроса есть.
1) Как можно реализовать чтоб когда в едит присутствует слово например "http://guardianelinks.890m.com" то выводим ошибку.
Это можно сделать к примеру так

If Form1.sEdit1.Text = 'http://guardianelinks.890m.com' then
Form1.slabel1.Caption:='Ошибка';

А как можно сделать чтоб ошибка выводилась не только по признаку "http://guardianelinks.890m.com"
но и вообще если присутствует слово "http://guardianelinks.890m.com"
Например если присутствует слово "http://guardianelinks.890m.com/" выводит ошибку "http://guardianelinks.890m.com/files" выводит ошибку
"http://guardianelinks.890m.com/spros/com/domstrons/" выводит ошибку и так далее,чтоб если меняется часть слова уменьшается или добавляется ошибку выводит,а если другое слово к примеру "Текущий год 2016" то ошибку не выводит.

Вроде объяснила подробно,но если не поймете то постараюсь объяснить более подробней.

2) Как правильно можно осуществить поиск из Memo?
То есть в мемо есть несколько слов,как можно их брать по очереди и выполнять к примеру поиск по словам.
Это нужно копировать как наподобие с файла берутся прокси или акки?
Ну как то так.
Если что то не поймете пишите,хоть свои догадки или как вы думаете.

Вопросы не трудные,но просто интересно ваше мнение и как Вы сделали бы.
 
На первое :
Код:
//Функция ищет с начала строки aStr первое вхождение слова aWord.
//И возвращает начальную позицию найденного слова.
//Если слово не найдено, то функция возвращает значение = 0.
//Поиск выполняется без учёта регистра.
function FindWord(const aWord, aStr : String) : Integer;
const
  //Разделители слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S, Sw : String;
  i, Len, LenW, LenTmp : Integer;
begin
  Result := 0; //Начальная позиция первого найденного слова aWord.
  LenW := Length(aWord); //Длина искомого слова.
  Len := Length(aStr); //Длина строки.
  if (aWord = '') or (aStr = '') or (LenW > Len) then
    Exit;
  S := AnsiUpperCase(aStr); //Преобразуем слово к верхнему регистру.
  LenTmp := 0; //Длина очередного слова.
  for i := 1 to Len do //Перебор всех символов строки.
    if not (S[i] in D) then //Если символ не является разделителем, значит он принадлежит слову.
    begin
      Inc(LenTmp); //Учитываем очередной символ в длине слова.
      if (i = Len) or (S[i + 1] in D) then //Отслеживаем конец слова.
      begin
        //Если найдено искомое слово.
        if (LenW = LenTmp)
          and (Sw = AnsiUpperCase(Copy(S, i - LenTmp + 1, LenTmp))) then
        begin
          Result := i - LenTmp + 1;
          Break;
        end;
        LenTmp := 0; //Сброс длины слова.
      end;
    end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
  P : Integer;
begin
  //Поиск слова
  P := FindWord(Edit1.Text, Memo1.Text);
  //Ответ.
  if P > 0 then
    ShowMessage('Заданное слово найдено на позиции: ' + IntToStr(P))
  else
    ShowMessage('Заданное слово не найдено.');
end;

На второе:
Код:
i:=Memo.Lines.IndexOf('точная строка поиска');
if i<>-1 then Edit.Text:=Memo.Lines[i];
 
Спасибо за ответ.
Не совсем разобралась с первым кодом.
Для чего нужно мемо?
И как осуществляется поиск слова "http://guardianelinks.890m.com",
Не разобралась куда слово добавлять которое будет искать в едит?
 
или можешь так попробывать
Код:
 if ListBox1.Items.IndexOf(Edit1.Text) = -1 then ShowMessage('Несовпадение.')
   else ShowMessage('Совпадение.');
 
или можешь так попробывать
if ListBox1.Items.IndexOf(Edit1.Text) = -1 then ShowMessage('Несовпадение.')
else ShowMessage('Совпадение.');
Это будет определять по определенному слову,а если поставить точку после слова то оно уже не выдаст его
 
Код:
var i:integer;
begin
i:=0;
while Memo1.Lines.Count-1 >= i do
If Pos (Edit1.Text, Memo1.Lines[i]) > 0
then  Memo1.Lines.Delete(i)
else Inc(i);
end;
 
var i:integer; begin i:=0; while Memo1.Lines.Count-1 >= i do If Pos (Edit1.Text, Memo1.Lines) > 0 then Memo1.Lines.Delete(i) else Inc(i); end;
Удаляет из мемо,а как сделать чтоб если в едит1 есть то что написано в едит 2 то очищает едит1 или выводит ошибку?
 
Удаляет из мемо,а как сделать чтоб если в едит1 есть то что написано в едит 2 то очищает едит1 или выводит ошибку?
Код:
begin
Label1.Caption:='';
if ((Edit2.Text=Edit1.text)) then Label1.Caption:='✔'
else
begin
Show Messenger('Error')
end;
end;

Код:
begin
Label1.Caption:='';
if ((Edit2.Text=Edit1.text)) then Edit1.Clear
else
begin
Label1.Caption:='✔'  ;
end;

Код:
begin
Label1.Caption:='';
if ((Edit2.Text=Edit1.text)) then
begin
Edit1.Clear;
ShowMessage('Error');
end
else
begin
Label1.Caption:='✔'  ;
end;
end;
 
Это самое элементарное,будет сравнивать едит 1 с едит 2.
А как можно сделать чтоб ошибка выводилась не только по признаку "http://guardianelinks.890m.com" (То что написано в едит 2)
но и вообще если присутствует слово "http://guardianelinks.890m.com" (Присутствует слово в едит 1)
Например если
присутствует слово "http://guardianelinks.890m.com/" выводит ошибку
присутствует слово "http://guardianelinks.890m.com/files" выводит ошибку
присутствует слово "http://guardianelinks.890m.com/spros/com/domstrons/" выводит ошибку
и так далее,
чтоб если меняется часть слова уменьшается или добавляется ошибку выводит,
а если другое слово к примеру
"http://Nuardianelinks.990m.com"
то ошибку не выводит.
 
Это самое элементарное,будет сравнивать едит 1 с едит 2.
А как можно сделать чтоб ошибка выводилась не только по признаку "http://guardianelinks.890m.com" (То что написано в едит 2)
но и вообще если присутствует слово "http://guardianelinks.890m.com" (Присутствует слово в едит 1)
Например если
присутствует слово "http://guardianelinks.890m.com/" выводит ошибку
присутствует слово "http://guardianelinks.890m.com/files" выводит ошибку
присутствует слово "http://guardianelinks.890m.com/spros/com/domstrons/" выводит ошибку
и так далее,
чтоб если меняется часть слова уменьшается или добавляется ошибку выводит,
а если другое слово к примеру
"http://Nuardianelinks.990m.com"
то ошибку не выводит.
Код:
If Pos (Edit1.Text, Edit2.text) > 0  then
ShowMessage('Error')
else
begin
  Edit1.Clear;
end;
 
Спасибо за помощь!
Я как то не подумала что можно просто взять и сверить через пос.

Моно поработать как то над регистром?
Чтоб не отличалось слово,маленькие буквы от больших.
 
Подскажите,как и где меняется название программы,чтоб в диспетчере светилась не проект1 или проект2,а название самой программы?
И как вообще убрать чтоб не было там видно процесса программы?
 
Подскажите,как и где меняется название программы,чтоб в диспетчере светилась не проект1 или проект2,а название самой программы?
И как вообще убрать чтоб не было там видно процесса программы?

Проект записываешь как тебе нравится, без пробелов
1.JPG

Вот к примеру как на рисунке

2.JPG


Ват сама програма в диспечере задач
3.JPG


Код:
program Programma;

uses
  Vcl.Forms,Windows,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm1, Form1);
  Application.CreateHandle;
  ShowWindow(Application.Handle, SW_HIDE);
  Application.ShowMainForm := True;
  Application.Run;
end.

Код:
  Application.CreateHandle;
  ShowWindow(Application.Handle, SW_HIDE);
  Application.ShowMainForm := True;

в *Application.ShowMainForm := True;* выставляешь форма видна или нет.
 
А в готовом проекте изменить просто название файлов dpr,res,cfg,dof которые сохранились при сохранения моего проекта?
 
А в готовом проекте изменить просто название файлов dpr,res,cfg,dof которые сохранились при сохранения моего проекта?
Нет, сохранить как и сохраняешь его как тебе нужно назвать программу
 
Нет, сохранить как и сохраняешь его как тебе нужно назвать программу
Это если я начну писать,а если я которую писала хочу изменить.
То тогда как быть?
Попробовала изменить как описала выше получилось.
 
Рад помочь
 
Спасибо большое,дельфи изучать стала недавно,и как бы мелкий нюанс который в силах решить,но без посторонней помощи не что не приходит на ум.)
 
Вверх Снизу