Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2015, 22:18   #61
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

OTGB,ну Вы что, издеваетесь?!!!!!

Цитата:
Код:
      if ( (j mod 8)=4 ) and
            ( Pos(......, fam) =1 ) then
что это за многоточие?!?!
Откройте справку по функции Pos() прочитайте, какие два параметра у этой функции!!!

Если что, там, где многоточие, то там ВАМ нужно указать искомую подстроку.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 08.06.2015, 23:21   #62
OTGB
Форумчанин
 
Аватар для OTGB
 
Регистрация: 06.05.2015
Сообщений: 120
По умолчанию

Serge_Bliznykov Ошибка исчезла но теперь в edit2 (Фамилия) совсем перестал что либо искать.
Изображения
Тип файла: jpg ыва.jpg (46.0 Кб, 139 просмотров)
OTGB вне форума Ответить с цитированием
Старый 09.06.2015, 09:48   #63
OTGB
Форумчанин
 
Аватар для OTGB
 
Регистрация: 06.05.2015
Сообщений: 120
По умолчанию

Вот код на фамилию i
Код:
f ( (j mod 7)=1 )and ( Pos( fam,Trim(AnsiLowerCase(search[j]))) =1 ) then    memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
как сделать на остальные
Код:
if ( (j mod 7)=2 )and ( Pos( im, Trim(AnsiLowerCase(search[j]))) =2 ) then    memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         if ( (j mod 7)=3 )and ( Pos( otch,Trim(AnsiLowerCase(search[j]))) =3 ) then   memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         if ( (j mod 7)=0 )and ( Pos( god,Trim(AnsiLowerCase(search[j]))) =0 ) then    memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
Точнее куда прописывать это?

сам код
Код:
unit search_file;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xpman, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    LabeledEdit4: TLabeledEdit;
    OpenDialog1: TOpenDialog;
    XPManifest1: TXPManifest;
    procedure ScanDir(StartDir: string; Mask: string; List: TStrings); 
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ts: TStringList;

implementation

{$R *.dfm}

procedure tform1.ScanDir(StartDir: string; Mask: string; List: TStrings);

var
  SearchRec: TSearchRec;
begin
   Mask := '*.txt';

  if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
  if FindFirst(StartDir + Mask, faAnyFile, SearchRec) = 0 then
  begin
    repeat
      Application.ProcessMessages;
      if (SearchRec.Attr and faDirectory) <> faDirectory then
        List.Add(StartDir + SearchRec.Name)
      else
        if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
        begin
          List.Add(StartDir + SearchRec.Name + '\');
          ScanDir(StartDir + SearchRec.Name + '\', Mask, List);
        end;
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);

begin
  memo1.ReadOnly := True; 
  memo1.clear; // 
  ts := tstringlist.Create(); 
  ts.Clear; 
  ScanDir(ExtractFilePath(ParamStr(0)), '1', ts);


end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ts.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var s, filespisok: string; 

  i, j: integer; 
  
  search: TStringList;

 god, fam, im, otch: string;
begin
  search := TStringList.Create;
  memo1.Clear;

  god := Trim(AnsiLowerCase(LabeledEdit1.text));
  fam := Trim(AnsiLowerCase(LabeledEdit2.text)); 
  im := Trim(AnsiLowerCase(LabeledEdit3.text));
  otch := Trim(AnsiLowerCase(LabeledEdit4.text));


  for i := 0 to ts.Count - 1 do 
  begin
    s := ts[i]; 
    search.clear; 


    if FileExists(s) then 
    begin
      search.LoadFromFile(ts[i]); 

         for j := 0 to search.count - 5 do 
      begin
         if ( (j mod 7)=1 )and ( Pos( fam,Trim(AnsiLowerCase(search[j]))) =1 ) then
          memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         end;
        for



     { for j := 0 to search.count - 1 do
      begin

         if ( (j mod 7)=2 )and ( Pos( im, Trim(AnsiLowerCase(search[j]))) =2 ) then
          memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         if ( (j mod 7)=3 )and ( Pos( otch,Trim(AnsiLowerCase(search[j]))) =3 ) then
          memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         if ( (j mod 7)=0 )and ( Pos( god,Trim(AnsiLowerCase(search[j]))) =0 ) then
           memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);

     






      //end;    }




    end
    else
    begin
      ShowMessage('ôàéë ïîòåðÿí!');
      Continue;
    end;


  end;

  search.free; 
end;




end.
Help!sos!Помогите!

Последний раз редактировалось Stilet; 11.06.2015 в 10:29.
OTGB вне форума Ответить с цитированием
Старый 09.06.2015, 13:46   #64
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Help!sos!Помогите!
Внятно сформулировать что и где хотим найти и что вывести

предлагаю дополнить предложенный шаблон, который ПОТОМ можно будет дополнить ДО работающей программы.

Есть файл с описанием данных следующей структуры
текстовые блоки КАЖДЫЕ N строк (а сколько и что на каждой ? (с указанием номера 0..N-1)

Есть поля ввода(переменные где ЗАДАНА информация для поиска (к примеру fam).

Надо НАЙТИ блоки удовлетворяющие следующИМ условиЯМ
хотя бы одному из перечисленных ??? ВСЕМ условиям одновременно ???
--сформулировать все ОТДЕЛЬНЫЕ условия (по строкам/полям ввода)
при формулировке пользоваться ИСКЛЮЧИТЕЛЬНО русскими словами и именами перечисленными на предыдущих этапах. (fam разрешено так как мы его назвали)

При нахождении ВЫВЕСТИ (а что вывести ? )
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 09.06.2015 в 13:50.
evg_m вне форума Ответить с цитированием
Старый 09.06.2015, 15:30   #65
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

evg_m, давно уже захожу в этот топик чисто ради интереса , т.к. ТС по ходу сам не понимает чего он хочет, а ещё просит помощи "того не знаю чего".
FaTaL вне форума Ответить с цитированием
Старый 10.06.2015, 09:41   #66
OTGB
Форумчанин
 
Аватар для OTGB
 
Регистрация: 06.05.2015
Сообщений: 120
По умолчанию

evg_mВывести нужно информацию в каком альбоме находится человек и на какой странице.
OTGB вне форума Ответить с цитированием
Старый 10.06.2015, 09:50   #67
OTGB
Форумчанин
 
Аватар для OTGB
 
Регистрация: 06.05.2015
Сообщений: 120
По умолчанию

FaTaL, за что отвечает этот код?
Код:
 begin
         if ( (j mod 7)=1 )and ( Pos( fam,Trim(AnsiLowerCase(search[j]))) =1 ) then
          memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         end;
OTGB вне форума Ответить с цитированием
Старый 10.06.2015, 09:53   #68
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Вывести нужно информацию в каком альбоме находится человек и на какой странице.
а где ВЗЯТЬ эту информацию?
Ответ "информация в файле" не принимается.
НУЖЕН полностью заполненный шаблон (ВСЕ строки исходной информации (!!!ОДНОГО БЛОКА ИНФОРМАЦИИ!!!), ВСЕ условия, ВСЕ строки ВЫВОДА с указанием что и откуда брать(!!ТОЖЕ ОДНОГО БЛОКА ВЫВОДА!!!) ). на русском языке.

Цитата:
за что отвечает этот код?
чтобы говорить за что отвечает данный код и нужен заполненный шаблон.
Поскольку ТОТ комментарий который был приведен вместе с этим кодом видимо не был воспринят.
http://programmersforum.ru/showpost....9&postcount=46

Цитата:
шаблон, который ПОТОМ можно будет дополнить ДО работающей программы.
Этот код реализует ОДНО из УСЛОВИЙ ненаписанного шаблона по ПОИСКУ неизвестной информации и ВЫВОДУ неизвестных результатов.
известной эта информация станет по заполнению и предоставлению шаблона.
Весь дальнейший разговор (написание программы) возможен только по предоставлении шаблона.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 10.06.2015 в 10:10.
evg_m вне форума Ответить с цитированием
Старый 10.06.2015, 09:55   #69
OTGB
Форумчанин
 
Аватар для OTGB
 
Регистрация: 06.05.2015
Сообщений: 120
По умолчанию

evg_m, может вы скажете для чего этот код?
Код:
 begin
         if ( (j mod 7)=1 )and ( Pos( fam,Trim(AnsiLowerCase(search[j]))) =1 ) then
          memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         end;
Код:
unit search_file;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, xpman, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    LabeledEdit3: TLabeledEdit;
    LabeledEdit4: TLabeledEdit;
    OpenDialog1: TOpenDialog;
    XPManifest1: TXPManifest;
    procedure ScanDir(StartDir: string; Mask: string; List: TStrings); //поиск в папке
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ts: TStringList; // списко строк, сюда загружеются все пути к файлам *.txt

implementation

{$R *.dfm}

procedure tform1.ScanDir(StartDir: string; Mask: string; List: TStrings);
//процедура поискаи заполнения   списка строк
var
  SearchRec: TSearchRec;
begin
   Mask := '*.txt';

  if StartDir[Length(StartDir)] <> '\' then StartDir := StartDir + '\';
  if FindFirst(StartDir + Mask, faAnyFile, SearchRec) = 0 then
  begin
    repeat
      Application.ProcessMessages;
      if (SearchRec.Attr and faDirectory) <> faDirectory then
        List.Add(StartDir + SearchRec.Name)
      else
        if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then
        begin
          List.Add(StartDir + SearchRec.Name + '\');
          ScanDir(StartDir + SearchRec.Name + '\', Mask, List);
        end;
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);

begin
  memo1.ReadOnly := True; //отмена редактирования содержимого memo1
  memo1.clear; // чистка мемо
  ts := tstringlist.Create(); //создаем список строк
  ts.Clear; //чистим
            //1 параметр-путь к папке с файлами
            //2-маска
            //3-куда заполняем
  ScanDir(ExtractFilePath(ParamStr(0)), '1', ts);

  


end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ts.free; //освобождаем память, занятую ts
end;

procedure TForm1.Button1Click(Sender: TObject);
var s, filespisok: string; // строка пути к одному файлу из списка ts[i]
//строка текущее
  i, j: integer; //переменная для адресации по tsp[i], и вторая переменная
  //для поиска в search списке
  search: TStringList; //список, куда грузится файл

 god, fam, im, otch: string;
begin
  search := TStringList.Create;
  memo1.Clear;

  god := Trim(AnsiLowerCase(LabeledEdit1.text));
  fam := Trim(AnsiLowerCase(LabeledEdit2.text)); //убираем пробелы и приводим к общему регистру
  im := Trim(AnsiLowerCase(LabeledEdit3.text));
  otch := Trim(AnsiLowerCase(LabeledEdit4.text));


  for i := 0 to ts.Count - 1 do //просмотр списка с путями к файлам
  begin
    s := ts[i]; //загрузка i-го пути в строку
    search.clear; //чистка списка с содержимым загруженного файла


    if FileExists(s) then //если файл найден, то
    begin
      search.LoadFromFile(ts[i]); //загружаем его в список

         for j := 0 to search.count - 5 do //выполняем поиск по списку пока не последняя строка
      begin
         if ( (j mod 7)=1 )and ( Pos( fam,Trim(AnsiLowerCase(search[j]))) =1 ) then
            memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         


         end;




     { for j := 0 to search.count - 1 do //выполняем поиск по списку пока не последняя строка
      begin

         if ( (j mod 7)=2 )and ( Pos( im, Trim(AnsiLowerCase(search[j]))) =2 ) then
          memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         if ( (j mod 7)=3 )and ( Pos( otch,Trim(AnsiLowerCase(search[j]))) =3 ) then
          memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
         if ( (j mod 7)=0 )and ( Pos( god,Trim(AnsiLowerCase(search[j]))) =0 ) then
           memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);

       // if Pos(Trim(AnsiLowerCase(search[j])), fam) = 1 then //если есть вхождение подстрки
       // в строку, то выводим название файла
       //т.е. если ввели вор, а в файле воропаев, то условие сработает и в memo результат
       //выведится






      //end;    }




    end
    else
    begin
      ShowMessage('файл потерян!');
      Continue;
    end;


  end;

  search.free; //освобождаем память.
end;




end.
То что выделено зелёным я не знаю куда прописывать.

Последний раз редактировалось Stilet; 11.06.2015 в 10:27.
OTGB вне форума Ответить с цитированием
Старый 10.06.2015, 10:07   #70
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Всё мусолите эту несчастную тему?
Код:
begin
  if ((j mod 7) = 1) // если номер строки j = 1, 8, 15, 22, ... и т.д.
    and (Pos(fam,Trim(AnsiLowerCase(search[j]))) = 1) // ...и строка Search[j] начинается с fam, то:
    then memo1.Lines.Add(' ' + ExtractFileName(ts[i])+', ' + search[j+4]);
end;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками в блокноте Lau Microsoft Office Word 11 10.08.2010 12:36
Написать в блокноте guffer Общие вопросы Delphi 10 23.08.2009 20:05
Цвет фона в блокноте. Alexxx92 Паскаль, Turbo Pascal, PascalABC.NET 4 18.05.2009 04:45
редактирование текста в блокноте. Kio Помощь студентам 16 21.07.2008 17:02
Как работает Замена в блокноте? Alar Софт 9 14.01.2008 11:07