| 
| 
 | Вопрос # 5 177/ вопрос открыт / | 
 |  Здравствуйте, эксперты! Вот нашёл в интернете процедуру по поиску файлов по компьютеру. Пытался на его основе сделать программу, наподобии стандартного поиска. Но когда я пытался скомпилировать программу, там возникли 2 ошибки компилятора:<End> expected but <Until> found.
 <Until> expected but <End> found
 Приложение:Переключить в обычный режим function FolderScan(Folder: String; FileName: String): Boolean;varSR: TSearchRec;begin         Result := False;         while FindFirst(Folder + '*.*',faAnyFile,SR)=0 dobeginrepeat             if (SR.Name = '.') or (SR.Name = '..') then             Continue;             if (SR.Attr and faDirectory <> 0) thenbegin                  Result := FolderScan(Folder+SR.Name+'\', fileName);                  if Result then                  Break                  else                  Continue;                  if SR.Name = FileName thenbegin                      Result := True;                      break;until                       FindNext(SR)<>0                       SysUtils.FindClose(SR);end;end;end;end.
Примечание #1 (11 апреля 2011, 16:06): В СТРОКЕ 22 1ошибка(<End> expected but <Until> found.)В СТРОКЕ 26 2ошибка(<Until> expected but <End> found.)
 
 
|  |   Вопрос задал: Кудя (статус: Посетитель)Вопрос отправлен: 11 апреля 2011, 16:00
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, Кудя!чуточку переставить end'ы на их законные места, получается код, который должен компилироваться и выглядит вполне работоспособным.
 
 function FolderScan(Folder: String; FileName: String): Boolean;
  var
    SR: TSearchRec;
begin
    Result := False;
    if FindFirst(Folder + '*.*',faAnyFile,SR)=0 then
        repeat
            if (SR.Name = '.') or (SR.Name = '..') then
                Continue;
            if (SR.Attr and faDirectory <> 0) then begin
                Result := FolderScan(Folder+SR.Name+'\', fileName);
                if Result then
                    Break
                else
                    Continue;
 
                if SR.Name = FileName then begin
                    Result := True;
                    break;
                end;
            end;
        until FindNext(SR)<>0;
    SysUtils.FindClose(SR);
end;
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 11 апреля 2011, 16:08
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 6; последнее сообщение — 12 апреля 2011, 21:06; участников в обсуждении: 3. 
|   | Кудя (статус: Посетитель), 11 апреля 2011, 16:08 [#1]:Собственно вопрос: Как мне решить эту проблему. Веть если я сделаю то что меня просит компилятор, программа перестанет делать нужную мне задачу, темболее, ошибок станет больше.
 Think Different. (c) |  
|   | min@y™ (статус: Доктор наук), 11 апреля 2011, 16:12 [#2]:Нефига копипастить всё подряд нечитавши. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  11 апреля 2011, 17:52: Вопрос перемещён из тематического раздела Delphi » Оболочка Delphi, компилятор, версии среды и т.д. в раздел Delphi » Общие вопросы по программированию модератором Ерёмин А.А. 
|   | bugmenot (статус: 3-ий класс), 12 апреля 2011, 09:05 [#3]:Оно всё равно с переполнением стека свалится :-) 
 Как же эти некогерентные смайлы уже задолбали...
 виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | Кудя (статус: Посетитель), 12 апреля 2011, 19:54 [#4]:Вопрос не по теме, но он слишком жалок для создания новой темы. Какого компилятор ругается на строку function FolderScan(Folder: String; FileName: String): Boolean;
 в коде:
 
 function FolderScan(Folder: String; FileName: String): Boolean;
  var
    SR: TSearchRec;
begin
    Result := False;
    if FindFirst(Folder + '*.*',faAnyFile,SR)=0 then
        repeat
            if (SR.Name = '.') or (SR.Name = '..') then
                Continue;
            if (SR.Attr and faDirectory <> 0) then begin
                Result := FolderScan(Folder+SR.Name+'\', fileName);
                if Result then
                    Break
                else
                    Continue;
 
                if SR.Name = FileName then begin
                    Result := True;
                    break;
                end;
            end;
        until FindNext(SR)<>0;
    SysUtils.FindClose(SR);
end;Think Different. (c) |  
|   | min@y™ (статус: Доктор наук), 12 апреля 2011, 20:37 [#5]: Цитата (Кудя): Вопрос не по теме, но он слишком жалок для создания новой темы. Какого компилятор ругается на строку function FolderScan(Folder: String; FileName: String): Boolean; Ошибка в 17-й строке.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Кудя (статус: Посетитель), 12 апреля 2011, 21:06 [#6]:простите, там у меня незапланированный пропуск строки в коде=) if SR.Name = FileName then begin????
 или Result := True;??????
 Think Different. (c) |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |