Показать сообщение отдельно
  #4  
Старый 02.03.2011, 09:35
Janom Janom вне форума
Начинающий
 
Регистрация: 04.02.2011
Адрес: Москва
Сообщения: 148
Версия Delphi: 7
Репутация: 133
По умолчанию

вот решил выложить код с исправленным вариантом...
Код:
...
function FDSearch(inDir:String; iStart:Integer):boolean;
var
  F: TSearchRec;
  Path: string;
begin
repeat
if iStart>-1 then inDir:=SL1.Strings[iStart];
  Path := inDir + '\*.*';
  FindFirst(Path, faAnyFile, F);
  if F.name <> '' then
  begin
    if DirOrNot(F.name) = true then SL1.Add(inDir+'\'+F.name)
        else if (F.Name<>'.') and  (F.Name<>'..') then
                begin SL2.Add(F.name);
                      SL3.Add(inDir+'\'+F.name);
                end;
    while FindNext(F) = 0 do
      begin
    if DirOrNot(F.name) = true then SL1.Add(inDir+'\'+F.name)
        else if (F.Name<>'.') and  (F.Name<>'..') then
                begin SL2.Add(F.name);
                      SL3.Add(inDir+'\'+F.name);
                end;
      end;
  end;
  FindClose(F);
  iStart:=iStart+1;
  until iStart > SL1.Count-1;
end;

function Search(dDir,dName:String):ShortString export; stdcall;
var i:integer;
begin
SLCrtDes(true);
FDSearch(dDir,-1);
for i:=0 to SL2.Count-1 do
  begin
    if RuLowerCase(dName)=RuLowerCase(SL2.Strings[i]) then
      begin
        Search:=SL3.Strings[i];
      end;
    end;
SLCrtDes(false);
end;

exports Search name 'Search';
...
P.S. нужно иногда и "покурить" сходить, а то что-то тупить начинаешь по страшному... вплоть до переполнения стека...
Ответить с цитированием