Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Функция поиска


Автор: Rainheart 2.7.2009, 13:10
Здравствуйте, Уважаемые.

Собственно, я только учусь, поэтому прошу посоветовать.
А проблемма возникла вот такая.

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

function RemDir(rpath:String):boolean;
var
  rIndex : Integer;
  rSearchRec:tSearchRec;
  rFName : String;
begin{remdir}
  rpath := rpath + '\*.*';
  rIndex := FindFirst(rpath, faAnyFile, rSearchRec);
  while rIndex = 0 do begin{while 01}
   rFName := ExtractFileDir(rpath)+'\'+rSearchRec.Name;
   if rSearchRec.Attr = faDirectory then begin{if 01}
    if (rSearchRec.Name <> '' )
    and (rSearchRec.Name <> '.')
    and (rSearchRec.Name <> '..') then RemDir(rFName);{if 02 begin-end}
   end{01}
   else begin{01}
    if rSearchRec.attr <> faArchive then
    FileSetAttr(rFName,faArchive);
{if 03 begin-end}
    if NOT DeleteFile(rFName) then begin{if 04}
      logstr:=datetostr(date)+' '+timetostr(time)+' = Файл '
      +rFName+' не удален.'+#13#10;
      filelog.Seek(0,soFromEnd);//to the end of the logfile
      filelog.Write(pointer(logstr)^,length(logstr));//write to logfile
    end;{end if 04}
   end;{end if 01}
   rIndex := FindNext(rSearchRec);
  end;{end while 01}
  FindClose(rSearchRec);
  if not (RemoveDir(ExtractFileDir(rpath))) then begin{if 05}
   result:=false;
  end{05}
  else begin{05}
   result:=true;
  end;{end if 05}
end;{end remdir}


На основе FAQ написана функция поиска с последующим удалением.
Жирным я выделил те места где возникает ошибка - несовместимые типы данных. 
в первой строке String и PAnsiChar
во второй Cardinal и TSearchRec

Подскажите в чем проблемма и куда смотреть.
В каком направлении рыться..
Буду рад любой помощи. Спасибо.

M
Rrader
Rainheart, старайтесь впредь давать темам такие названия, чтобы будущее поколение смогло найти их через поиск.

Автор: Rennigth 2.7.2009, 14:36
Rainheart, в usus Windows и SysUtils поменяй местами или указывай из какого модуля брать функции, названия некоторые совпадают  smile 

Автор: Rainheart 2.7.2009, 20:59
2 Rrader - ок. Постараюсь.
2 Rennigth - Очень признателен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)