Показать сообщение отдельно

  #4  
Старый 17.04.2009, 03:24
Nightmarе
Познавший АНТИЧАТ
Регистрация: 29.04.2007
Сообщений: 1,189
Провел на форуме:
5749763

Репутация: 1680


По умолчанию

Значит, у меня к вам следующий вопрос ©

Мне нужно просматривать содержимое папок компьютеров в локальной сетке.

Вот хорошая команда:
Код:
 var
 Searchrec: Tsearchrec;
 s:string;
begin
 memo2.Clear;
  FindFirst('C:\*.*', FaAnyfile, SearchRec);
 if (SearchRec.Attr and faDirectory)<>0 then s:=Edit1.Text else s:=Edit1.Text;
 memo2.Lines.Add(s+SearchRec.Name);
 while FindNext(SearchRec) = 0 do
  begin
 if (SearchRec.Attr and faDirectory)<>0 then s:=Edit1.Text else s:=Edit1.Text;
   if (SearchRec.Attr and faHidden) <> 0 then
    memo2.Lines.Add('[h]'+s+SearchRec.Name+'[/h]')
   else
    memo2.Lines.Add(s+SearchRec.Name);
  end;
Эта команда просматривает содержимое, как моего компьютера, так и компьютеров в локальной сети, например если сделать так:
FindFirst('//RemoteCompName/Folder/*.*', FaAnyfile, SearchRec);
То нормально отобразится содержимое папки Folder удалённого компьютера с именем RemoteCompName

Моя проблема в следующем, если попробовать просмотреть содержимое самого компьютера, а не какой то папки в нём, то он ничего не отображает, вот например:
FindFirst('//RemoteCompName/*.*', FaAnyfile, SearchRec);
Не отображается ничего, хотя там есть папки, файлы и т.д… То есть корневую директорию удалённого компьютера он не просматривает, зато содержимое папок этого самого удалённого компьютера он выводит нормально.

В общем в чём ошибка? И можно ли в данном коде это устранить?

+++++++++++++++++++++++++
И вопрос номер два, по поводу самоуничтожения программы, в справочнике DRKB был дан один единственный пример удаления своей программы через .bat файл:
Код:
var f: textFile;
FileName: string;
begin
FileName := changefileext(paramstr(0), '.bat');
assignFile(f, FileName);
rewrite(f);
writeln(f, ':1');
writeln(f, format('Erase "%s"', [paramstr(0)]));
writeln(f, format('If exist "%s" Goto 1', [paramstr(0)]));
writeln(f, format('Erase "%s"', [FileName]));
closefile(f);
ShellExecute(Handle, 'Open', PChar(FileName), nil, nil, sw_hide);
end;
Это работает исключительно, если в пути до моего .exe файла нету русских символов.
То есть если файл находится тут:
C:\программы\project1.exe
То данный код не сработает, собственно есть ли альтернативы? Как в данном случае удалить программу?

Последний раз редактировалось Nightmarе; 17.04.2009 в 03:27..
 
Ответить с цитированием