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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 23:42   #1
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию Invalid Filename... delphi 7

Все здравствуйте!
Вот столкнулся с такой проблемой, при выборе папки дальнейшие действия не происходит, то есть все что функция FindIt нашла, не добавляется в мой ListBox

Вот сама функция:
Код:
if FindFirst(Path+Ext, faAnyFile, SR) = 0 then
  begin
    repeat
    if (SR.Attr = faDirectory) then
      if (SR.Name <> '.') and (SR.Name <> '..') then
        begin
        s:='';
        for i:=0 to level-1 do
          s:=s+'    ';
        aListBox.items.Add(path+SR.Name + '\');
        Inc(level);
        if spaces then
          FindIt(Path+sr.Name+'\',ext,aListBox,true,level)
        else
          FindIt(Path+sr.Name+'\',ext,aListBox);
        Dec(level);
        end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;
Вот обработчик кнопки:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i : integer;
    F : TextFile;
    ExB: WORD;
    chosenDirectory : string;
begin
if SelectDirectory('Выберите каталог', '', chosenDirectory)
  then
  begin
  ShowMessage('Выбранный каталог '+chosenDirectory);
  FindIt(chosenDirectory,'*.*', ListBox1);
 if listbox1.items.count-1<0
 then
 begin
ExB:=MessageBox(handle,pchar('Папка пуста!'),pchar('Ошибка!'),16);
if Exb=IDOK then
halt;
 end;
    for i:=0 to ListBox1.Items.Count-1 do
    begin
      AssignFile(F,listbox1.items[i] + Edit1.Text + '.txt');
      Rewrite(F);
      Write(F, memo1.text);
      CloseFile(F);
    end;
ExB:=MessageBox(handle,pchar('Всё прошло успешно!'),pchar('Все Ок!'),64)
end
  else ShowMessage('Выбор каталога прервался');
end;






Либо вот обработчик тут все добавляется но одна проблема, программа должна лежать в той папке которую надо пропатчить! а я хочу сделать выбор папки чтобы не тоскать программу везде!




Код:
procedure TForm1.BitBtn1Click(Sender: TObject);

var i : integer;
    F : TextFile;
    ExB: WORD;
begin
FindIt(ExtractFilePath(Application. ExeName),'*.*', ListBox1);
 if listbox1.items.count-1<0
 then
 begin
ExB:=MessageBox(handle,pchar('Папка пуста!'),pchar('Ошибка!'),16);
if Exb=IDOK then
halt;

 end;
    for i:=0 to ListBox1.Items.Count-1 do
    begin
      AssignFile(F,listbox1.items[i] + Edit1.Text + '.txt');
      Rewrite(F);
      Write(F, memo1.text);
      CloseFile(F);
    end;
ExB:=MessageBox(handle,pchar('Всё прошло успешно!'),pchar('Все Ок!'),64);
end;

Последний раз редактировалось Nice42ru; 03.06.2010 в 23:47.
Nice42ru вне форума Ответить с цитированием
Старый 03.06.2010, 23:47   #2
spider13
Новичок
Джуниор
 
Регистрация: 24.01.2008
Сообщений: 2
По умолчанию

Приведи полный код функции FindIt
http://spider13.net/
http://questions.spider13.net/
spider13 вне форума Ответить с цитированием
Старый 03.06.2010, 23:50   #3
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Прошу прощения явно криво скопировал!
вот:

Код:
procedure FindIt(path, ext: string; aListBox: TListBox;
  spaces: boolean = false; level: integer = 0);
var
  SR: TSearchRec;
  s: string;
  i: integer;
begin
if FindFirst(Path+Ext, faAnyFile, SR) = 0 then
  begin
    repeat
    if (SR.Attr = faDirectory) then
      if (SR.Name <> '.') and (SR.Name <> '..') then
        begin
        s:='';
        for i:=0 to level-1 do
          s:=s+'    ';
        aListBox.items.Add(path+SR.Name + '\');
        Inc(level);
        if spaces then
          FindIt(Path+sr.Name+'\',ext,aListBox,true,level)
        else
          FindIt(Path+sr.Name+'\',ext,aListBox);
        Dec(level);
        end;
    until FindNext(SR) <> 0;
    FindClose(SR);
  end;
end;
Nice42ru вне форума Ответить с цитированием
Старый 03.06.2010, 23:55   #4
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Мне кажется FindIt работает только с файлами, тоесть зависит от файла, а с папками она не работает... Если я прав есть ли другая процедура не требующая файлов для работы а можно бы было просто указать папку?
Nice42ru вне форума Ответить с цитированием
Старый 04.06.2010, 00:34   #5
spider13
Новичок
Джуниор
 
Регистрация: 24.01.2008
Сообщений: 2
По умолчанию

хм, у меня все добавляет)
http://spider13.net/
http://questions.spider13.net/
spider13 вне форума Ответить с цитированием
Старый 04.06.2010, 09:43   #6
Nice42ru
Форумчанин
 
Регистрация: 25.10.2009
Сообщений: 131
По умолчанию

Да, решил проблему, нужно было в начале процедуры сделать добавление "/" и все =)
Nice42ru вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid Filename LobsterOK Общие вопросы Delphi 7 27.04.2010 16:56
Delphi. Ошибка Invalid use of keyword - помогите исправить! Sianessa Помощь студентам 30 18.12.2009 19:55
Ошибка в БД:Invalid use of keyword (Delphi) Zibiv Помощь студентам 5 29.11.2009 10:57
FileName ScreN Общие вопросы Delphi 7 05.01.2009 23:18
Delphi + dll= Invalid Pointer Operator LEKA Общие вопросы Delphi 4 01.05.2007 23:38