Поиск:

Ответ в темуСоздание новой темы Создание опроса
> фиьтрация текстовых файлов, Oracle+Delphi 
V
    Опции темы
Martisha
Дата 19.12.2008, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



Доброго вечера/дня..
Подскажите как можно осуществить фильтрацию
т.е. в папку помещаются текстовые файлы(добавляются), я их обрабатываю(разбиваю на поля), заношув бд..мне нужно чтобы обрабатывались только необработанные текстовые файлы.
Код

Procedure TForm1.ScanFolder(Dir:string);
Var
  SearchRec:TSearchRec;
  LocalTime: TFileTime;
  SysTime: TSystemTime;
begin
  if Dir<>'' then
              Dir:=IncludeTrailingPathDelimiter(Dir);
  if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then
  try
   repeat
      begin
       if AnsiUpperCase(ExtractFileExt(SearchRec.name)) = '.TXT' then
       begin
         FileTimeToLocalFileTime(SearchRec.FindData.ftLastWriteTime, LocalTime);
         FileTimeToSystemTime(LocalTime, SysTime);
         EditFile(Dir+SearchRec.name);
         EditDate(DateToStr(SystemTimeToDateTime(SysTime))+' '+TimeToStr(SystemTimeToDateTime(SysTime)));
       end;
      end;
   until
   FindNext(SearchRec)<>0;
  finally
  FindClose(SearchRec);
 end;
end;

здесь я вытаскиваю имя, датуи время создания файла
затем вызываются процедуры, которые помещают эти данные в листбоксы
Код

procedure TForm1.Button3Click(Sender: TObject);
begin
 ScanFolder('c:\ROU99STAT');
end;

procedure TForm1.EditFile(FileName:string);
begin
  ListBox1.Items.add(filename);
 end;

procedure TForm1.EditDate(FileDate:String);
begin
  ListBox3.Items.add(FileDate);
end;

вот на этом этапе вызываю процедуры для обработки и занесения в бд
Код

procedure TForm1.Button4Click(Sender: TObject);
Var  kol:Integer;
     kol1:Integer;
     i,j:Integer;
     FileText:String;
begin
Screen.Cursor := crHourGlass;
  try
    Application.ProcessMessages;
OraTable1.Active:=True;
kol:=Form1.ListBox1.Count;
  for i:=0 to kol-1 do
    begin
      FileText:=Form1.ListBox1.Items[i];
      ListBox2.Items.LoadFromFile(FileText);
        kol1:=Form1.ListBox2.Count;
              Form1.OraStoredProc2.Prepare;
              Form1.OraStoredProc2.ExecProc;
          for j:=3 to kol1-5 do
            begin
              if Length(ListBox2.Items[j])<>0 then
              begin
              OraTable1.Insert;
              OraTable1.FieldByName('datavremya').AsDateTime:=StrToDateTime(ListBox3.Items[i]);
              OraTable1.FieldByName('allfile').AsString:=ListBox2.Items[j];
              OraTable1.Post;
              end;
            end;
            Form1.OraStoredProc1.Prepare;
            Form1.OraStoredProc1.ExecProc;
     end;
  finally
    Screen.Cursor := crDefault;
end;

end;



я думаю сравнивать дату и время создания нового текстового файла с уже занесенными в бд..но как это осуществить не представляю!!! 
PM MAIL ICQ   Вверх
Petro123
Дата 19.12.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



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

Добавлено через 2 минуты и 36 секунд
Причем именем файла пусть будет дата и время занесения в папку файла
PM MAIL   Вверх
Martisha
Дата 19.12.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



Petro123, спасибо, попробую)

Добавлено через 4 минуты и 4 секунды
Цитата(Petro123 @  19.12.2008,  14:48 Найти цитируемый пост)
Создай табличку, в которой будешь хранить имена загружаемых файлов.

а зачем создавать табличку? у меня в мою табличку ужа заносятся дата и время..просто я не знаю на каком этапе программы делать сравнение и как вообще можно сравнить данные из бд и данные из листбокса того же..
PM MAIL ICQ   Вверх
chaos
Дата 19.12.2008, 15:12 (ссылка) |   (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



Martisha, может самый простой способ удалять\переносить файлы? обработала удалила\перенесла, обработала удалила\перенесла...

Это сообщение отредактировал(а) chaos - 19.12.2008, 15:12
PM WWW   Вверх
Martisha
Дата 19.12.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



Цитата(chaos @  19.12.2008,  15:12 Найти цитируемый пост)
обработала удалила\перенесла

обработала-перенесла..неплохо..надо подумать) спасибо за идею!

PM MAIL ICQ   Вверх
chaos
Дата 19.12.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



параноя smile)
правда может кто-нибудь ручками добавить файл в папку, например который уже был обработан smile))
тогда можно пойти следующим путем вести массив: имя файла, его crc и дальше уже смотреть.....
PM WWW   Вверх
Martisha
Дата 22.12.2008, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



Цитата(chaos @  19.12.2008,  15:32 Найти цитируемый пост)
правда может кто-нибудь ручками добавить файл в папку, например который уже был обработан ))

ну это врядли конечно

Цитата(chaos @  19.12.2008,  15:32 Найти цитируемый пост)
тогда можно пойти следующим путем вести массив: имя файла, его crc и дальше уже смотреть..... 

crc-эточто такое? ичто дальше смотреть?
не совсем идею поняла  smile 
PM MAIL ICQ   Вверх
Martisha
Дата 22.12.2008, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



chaos, я тут вот о чем подумала..даже если
Цитата(chaos @  19.12.2008,  15:32 Найти цитируемый пост)
может кто-нибудь ручками добавить файл в папку, например который уже был обработан 

можно ж:
1) перемещать обработанный файл в другую папку
2) перед обработкой сравнивать с тем что обработано


Это сообщение отредактировал(а) Martisha - 22.12.2008, 09:47
PM MAIL ICQ   Вверх
Martisha
Дата 23.12.2008, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



очевидно здесь эта тема теперь не актуальна, считаю этот вопрос закрытым!
PM MAIL ICQ   Вверх
Martisha
Дата 25.12.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 197
Регистрация: 15.10.2008
Где: казань

Репутация: нет
Всего: 1



в общем создатьтаблицу с именами обработанных файлов все таки пришлось и естественно пришлось перед обработкой файла сравнивать его имя с именем из таблицы, я сделала так:
1) делаем индексацию в таблице с именами обработанных файлов
2)делаем сравнение перед обработкой файла:
Код

procedure TForm1.Button4Click(Sender: TObject);
Var  ...
       ...
     i,j:Integer;
     FileText:String;
begin
  try
      ...
      ...
  ORATable3.Active:=True;
  ORATable3.IndexFieldNames:='name';
  kol:=Form1.ListBox1.Count;
  for i:=0 to kol-1 do  //считываем из ListBox1 именами файлов кот.нужно обработать
    begin
        FileText:=Form1.ListBox1.Items[i];
          begin
            //делаем сравнение
          if ORATable3.FindKey([FileText]) then
              DeleteFile(FileText)   //если файл оработан, удаляем его из папки
                                           else
             begin
                //вызываем процедуры для обаботки файлов
             end;
         end;
    end;
  finally
end;



PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0559 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.