Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.06.2010, 20:16
nsl762 nsl762 вне форума
Прохожий
 
Регистрация: 22.06.2010
Сообщения: 3
Репутация: 10
По умолчанию Помогите с программой поиска

Всем привет! Я новичек в дельфи вот вопрос:
Необходимо сделать программу которая находит определенный файл на диске и копирует в папку
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program Project1;
 
uses
  SysUtils,
  Windows;
var
  F: TSearchRec;
  Path: string;
  Attr: Integer;
begin
  Path := 'c:\1.txt';
 
  Attr := faAnyFile;
 
  FindFirst(Path, Attr, F);
 
  if F.Name <> '' then
  begin
    CopyFile('1.txt' ,'c:\blablabla\1.txt',true);
  end;
Ошибки компиляции не выдает но при этом ничего не происходит, файл не копируется.Спасибо заранее
Ответить с цитированием
  #2  
Старый 23.06.2010, 12:46
Ash Ash вне форума
Прохожий
 
Регистрация: 17.06.2010
Сообщения: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от nsl762
Всем привет! Я новичек в дельфи вот вопрос:
Необходимо сделать программу которая находит определенный файл на диске и копирует в папку
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program Project1;
 
uses
  SysUtils,
  Windows;
var
  F: TSearchRec;
  Path: string;
  Attr: Integer;
begin
  Path := 'c:\1.txt';
 
  Attr := faAnyFile;
 
  FindFirst(Path, Attr, F);
 
  if F.Name <> '' then
  begin
    CopyFile('1.txt' ,'c:\blablabla\1.txt',true);
  end;
Ошибки компиляции не выдает но при этом ничего не происходит, файл не копируется.Спасибо заранее

В первом параметре нужно указать полный путь к файлу. Не понятно то куда нужно взять 1.txt.
попробуй исправить
CopyFile('c:\1.txt' ,'c:\blablabla\1.txt',true);

И зачем ты указываешь строкой c:\1.txt если у тебя есть переменная Path
CopyFile(PChar(Path) ,'c:\blablabla\1.txt',true);
Ответить с цитированием
  #3  
Старый 23.06.2010, 13:37
nsl762 nsl762 вне форума
Прохожий
 
Регистрация: 22.06.2010
Сообщения: 3
Репутация: 10
По умолчанию

Спасибо, файл копируется, но появилась новая проблема: необходимо чтобы програма файл искала на всем диске ц, добавил Attr := faAnyFile + faDirectory;, все равно ищет в корне диска
Ответить с цитированием
  #4  
Старый 23.06.2010, 13:42
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

конечно будет тока в корне искать, что бы искать везде, нужен рекурсивный поиск. Вот код:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<b>procedure </b>ScanDir(StartDir,Mask: <b>string</b>; List: TStrings);
<b>var</b>
  SearchRec: TSearchRec;
<b>begin</b>
  <b>if </b>Mask = <font color="Navy">''</font> then Mask := <font color="Navy">'*.*'</font>;
  <b>if </b>StartDir[Length(StartDir)] <> <font color="Navy">'\'</font> then StartDir := StartDir + <font color="Navy">'\'</font>;
  <b>if </b>FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then
    <b>begin</b>
     <b>repeat</b>
      Application.ProcessMessages;
      <b>if </b>(SearchRec.Attr and faDirectory) <> faDirectory <b>then </b>
        List.Add(StartDir + SearchRec.Name) <b>else </b>
          <b>if </b>(SearchRec.Name <> <font color="Navy">'..'</font>) and (SearchRec.Name <> <font color="Navy">'.'</font>) <b>then</b>
          <b>begin</b>
            List.Add(StartDir + SearchRec.Name + <font color="Navy">'\'</font>);
            ScanDir(StartDir + SearchRec.Name + <font color="Navy">'\'</font>,Mask,List);
          <b>end;</b>
     <b>until </b>FindNext(SearchRec) <> 0;
     FindClose(SearchRec);
   <b>end;</b>
<b>end;</b>

использовать так:
Код:
1
2
3
4
5
6
7
8
<b>var</b>
  list: TStrings;
<b>begin</b>
  list := TStrings.Create;
  ScanDir(<font color="Navy">'c:\'</font>,<font color="Navy">'123.txt'</font>,list);
  <font color="Navy">// в <b>list </b>будут строки с путями до файла <b>123.txt</b>, если таковой будет найден</font>
  list.Free;
<b>end;</b>

P.S.: а вообще тебе сюда: http://yandex.ru/yandsearch?clid=486...delphi&l r=36
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel

Последний раз редактировалось Marvel, 23.06.2010 в 14:05.
Ответить с цитированием
  #5  
Старый 23.06.2010, 13:53
nsl762 nsl762 вне форума
Прохожий
 
Регистрация: 22.06.2010
Сообщения: 3
Репутация: 10
По умолчанию

Спасибо большое за помощь, сейчас попробую
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025