Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 177

/ вопрос открыт /

Здравствуйте, эксперты! Вот нашёл в интернете процедуру по поиску файлов по компьютеру. Пытался на его основе сделать программу, наподобии стандартного поиска. Но когда я пытался скомпилировать программу, там возникли 2 ошибки компилятора:
<End> expected but <Until> found.
<Until> expected but <End> found

Приложение:
  1. function FolderScan(Folder: String; FileName: String): Boolean;
  2. var
  3. SR: TSearchRec;
  4. begin
  5. Result := False;
  6. while FindFirst(Folder + '*.*',faAnyFile,SR)=0 do
  7. begin
  8. repeat
  9. if (SR.Name = '.') or (SR.Name = '..') then
  10. Continue;
  11. if (SR.Attr and faDirectory <> 0) then
  12. begin
  13. Result := FolderScan(Folder+SR.Name+'\', fileName);
  14. if Result then
  15. Break
  16. else
  17. Continue;
  18. if SR.Name = FileName then
  19. begin
  20. Result := True;
  21. break;
  22. until
  23. FindNext(SR)<>0
  24. SysUtils.FindClose(SR);
  25. end;
  26. end;
  27. end;
  28. 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™

min@y™ (статус: Доктор наук), 11 апреля 2011, 16:12 [#2]:

Нефига копипастить всё подряд нечитавши.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

11 апреля 2011, 17:52: Вопрос перемещён из тематического раздела Delphi » Оболочка Delphi, компилятор, версии среды и т.д. в раздел Delphi » Общие вопросы по программированию модератором Ерёмин А.А.

bugmenot

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™

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)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.03 сек.