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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2012, 11:28   #1
patch
Пользователь
 
Регистрация: 11.05.2010
Сообщений: 23
Вопрос поиск текста в фаиле Delphi

Добрый день всем, помогите пожалуйста, я зашиваюсь жутко, и сейчас работаю над достаточно примитивной ИС для не большой "ШарКан" (шаражкиной канторы :D) в которой собственно и работаю. В общем делаю я все это в Delphi 7, суть очень проста, хранит инфу о компах и их характеристиках различных фирм ну и ещё всякие удобные мелочи и т.д. но суть не в этом. Все хар-ки собираются с отчетов программы AIDA64 и когда наша секретарша заполняет инфу в ручную , то делает кучу ошибок и приходится потом все делать самому и мною было решено сделать заполнение автоматическим считывая всю инфу с фаила, но сделать это надо почти срочно а времени совершенно нету т.к. основная задача веб-программирование и надо писать CMS-ку для сайта.

Вот я и заговорился :D

В общем просьба такая:

Написать процедуру, для поиска в фаиле определенных строк, которые начинаются н-р с (ЦПУ, видео адаптер, и т.д.), затем с этой строки после этой фразы и огромного количества пробелов записывать остаток. Надеюсь нормально объяснил. В принципе и сам могу это написать, но предварительно потрачу часа 3-4 на чтение литры по работе с фаилами и+ программирование, а времени нету(

В общем большое всем спасибо заранее, хотя бы за то что прочтете тему до конца, а кто и вовсе кинет хоть какую-то рабочую процедуру и подавно СПАСИБО)

всем лучей добра.
У меня всё!)
patch вне форума Ответить с цитированием
Старый 09.08.2012, 13:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Надеюсь нормально объяснил. В принципе и сам могу это написать, но предварительно потрачу часа 3-4 на чтение литры по работе с фаилами и+ программирование, а времени нету
расстрою Вас. нет, не нормально!
Во-первых, неплохо бы приложить примеры файлов, которые формирует AIDA, и, самое главное, с результатами парсинга что делать то? Ну, допустим, нашли вы в отчёте тип видео-адептера - дальше что с ним делать то?!

а во-вторых, радует Ваш оптимизм! Вы точно уверены, что остальные, в отличие от Вас, не заняты и только и делают, что мечтают написать Вам "рабочую процедуру" ?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.08.2012, 14:14   #3
patch
Пользователь
 
Регистрация: 11.05.2010
Сообщений: 23
По умолчанию

в файле все данные хранятся в каждой строке в обычном .txt доке н-р:

Характеристики:
------------------------------------------------------------------------
ЦПУ: intel core i7
Видеоадаптер: msi gtx 550 ti
ну и т.д. и само собой более подробное описание)

и насчет занятости) не все прям очень сильно заняты, и искренне надеюсь что кто-то найдется кто сможет мне помочь, хотя бы на примере 1-й строки)

кстати как вариант, просто напишите кто-нибудь процедуру поиска текста в строке, и последующее занесение остатка строки в переменную, мне этого за глаза хватит, пусть будет примитвно, ну да и ладно) опять же заранее спасибо

Последний раз редактировалось Stilet; 09.08.2012 в 18:18.
patch вне форума Ответить с цитированием
Старый 09.08.2012, 15:42   #4
Noor
Участник клуба
 
Аватар для Noor
 
Регистрация: 01.11.2006
Сообщений: 1,051
По умолчанию

1. Тут обсуждали !

2.
Цитата:
function fAnsiPos(const Substr, S: string; FromPos: integer): Integer;
var
P: PChar;
begin
Result := 0;
P := AnsiStrPos(PChar(S) + fromPos - 1, PChar(SubStr));
if P <> nil then
Result := Integer(P) - Integer(PChar(S)) + 1;
end;
{где Substr - подстрока, S - строка, fromPos - с какой позиции искать
Если вхождение не найдено, возвращает 0}
3.Внизу странички есть Похожие темы
Noor вне форума Ответить с цитированием
Старый 16.08.2012, 14:31   #5
patch
Пользователь
 
Регистрация: 11.05.2010
Сообщений: 23
Смех Сам додумался в итоге)

в общем мне надоело думать насчет типа переменных (char или pchar) и т.д. и в итоге решил работать со string-ом. Кому интересно вот процедура. Может кому и пригодится)


Код:
procedure TForm1.Button1Click(Sender: TObject);
var
f:textfile;
standart_str, readln_str, final_str :string[100];  //искомая строка; строка из фаила; конечная строка
i,j,k,q,w,st_str_len,rln_str_len,schet,n, cikle:integer;            //счетчики [счетчик для поиска строки в фаиле][счетчик схожих символов][][длинна стандартной строки][]


begin
assignfile(f, edit1.Text);
reset(f); //только чтение

label4.Caption:=inttostr(st_str_len);
label5.Caption:=standart_str;

    for cikle:=1 to 100 do begin

    Application.ProcessMessages;
    ReadLn(f,readln_str);
    rln_str_len:=length(readln_str);



  for schet:=1 to 5 do begin

case schet of
1:begin standart_str:='      Операционная система                              ';st_str_len:=length(standart_str);j:=0;k:=0;end;
2:begin standart_str:='      Тип ЦП                                            ';st_str_len:=length(standart_str);j:=0;k:=0;end;
3:begin standart_str:='      Системная память                                  ';st_str_len:=length(standart_str);j:=0;k:=0;end;
4:begin standart_str:='      Видеоадаптер                                      ';st_str_len:=length(standart_str);j:=0;k:=0;end;
5:begin standart_str:='      Дисковый накопитель                               ';st_str_len:=length(standart_str);j:=0;k:=0;end;
end;

       for i:=1 to rln_str_len do begin  //просматриваем каждый символ
           if standart_str[i]=readln_str[i] then
           begin
              j:=j+1;
              if j=st_str_len then begin
                  q:=1;
                  for w:=j to rln_str_len do begin
                      final_str[q]:=readln_str[w];
                      q:=q+1;
                  end;
                  case schet of
1:label1.Caption:=final_str;
2:label2.Caption:=final_str;
3:label3.Caption:=final_str;
4:label4.Caption:=final_str;
5:label5.Caption:=final_str;
end;
             end;
           end;
       end;



  end;

    end;

closefile(f);
end;

___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 16.08.2012 в 15:56.
patch вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск текста с копированием ячеек типа ВПР но для сложного текста! Elkin_087 Microsoft Office Excel 1 24.06.2012 22:06
Поиск в массиве структур которая находится в фаиле citrucc Visual C++ 0 06.04.2012 16:15
Как сделать поиск в фаиле? Furutsu Общие вопросы C/C++ 1 06.11.2011 14:18
Процедура поиск текста в текстовом файле, Delphi BIG_BO Помощь студентам 5 08.12.2010 13:20
Проблема поиск и замена текста(Delphi) KirkMETAL Помощь студентам 4 26.07.2010 08:41