Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2010, 23:00   #1
kotzzz
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 39
Вопрос Проверка на существование графического файла, false - скачать с сервера

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

пытался такой код влепить, но он постоянно выдает ошибку в строке красным цветом:
Код:
var
  I: Integer;
  K: TStringList;
  M: TMemoryStream;
begin
  M:= TMemoryStream.Create;
  K:= TStringList.Create;
k.LoadFromFile(SaveFolder +'\spisok2.txt');
       for I:= 0 to k.Count-1  do 
        begin
         assignFile(F,'baza\13\'+Inttostr(i+1)+'.jpg');
          {$I-}
           Reset(f);
            {$I-}
           if IOResult <> 0 then
             begin
              IDHTP.Get('http://sss.ucoz.ru/'+k[i], M);
              path:='baza\13\'+Inttostr(i+1)+'.jpg';              M.SaveToFile(path);
              M.Clear;
             end;
Что только не перепробовал... Моя задача: есть база, нужно проверить обновление на сервере, если базы новые начинается скачивание, но не всех подряд(зачем скачивать те, которые есть), а только новые по заранее скаченному файлу со списком ссылок к файлам базы...

Код:
k.LoadFromFile(SaveFolder +'\spisok2.txt');
       for I:= 0 to k.Count-1  do 
        begin
           If FileExists('baza\13\'+Inttostr(i+1)+'.jpg') then
             begin
             showmessage('Файл baza\13\'+Inttostr(i+1)+'.jpg существует');
             end
             else
             begin
              IDHTP.Get('http://sss.ucoz.ru/'+k[i], M);
              path:='baza\13\'+Inttostr(i+1)+'.jpg';
              M.SaveToFile(path);
              M.Clear;
             end;
        end;
        M.Free;
Но как только доходит до файлов которых нет, пишет ошибку в выделенной красным строке...

Что мне делать?! Заранее спасибо...
kotzzz вне форума Ответить с цитированием
Старый 21.01.2010, 23:08   #2
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

IDHTP что такое? Не модуль ли случайно? может IDHTP1 всё таки? Перед применением создан?

зы дельфи может подчёркивать ошибку, случившуюся строкой ранее.
[Ferox]
postal2 вне форума Ответить с цитированием
Старый 22.01.2010, 00:45   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

какую ошибку пишет?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.01.2010, 07:40   #4
kotzzz
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
какую ошибку пишет?
Ошибка такая:
Цитата:
Project Project1.exe raised exception class EIdHTTPProtocolException with message 'HTTP/1.1 404 Not Found'. Process stopped. Use Step or Run to continue.
Что самое интересное, ошибка возникает именно тогда, когда я добавляю функцию проверки на существование рисунка jpg. Без функции всё идет идеально, только он снова и снова качает все файлы подряд... Трафик уходит, да и зачем скачивать если он(файл) уже есть...
и затем зелёной стрелочкой (в начале), выделяет все строку
Цитата:
path:='baza\13\'+Inttostr(i+1)+'.jp g';
им я задаю путь сохранения файла на диску для M.SaveToFile(path);

формал ссылок в документе с сылками:
Цитата:
baza/13/1.jpg
baza/13/2.jpg
baza/13/3.jpg
baza/13/4.jpg
baza/13/5.jpg
baza/13/6.jpg
baza/13/7.jpg
baza/13/8.jpg
baza/13/9.jpg
baza/13/10.jpg
baza/13/11.jpg
baza/13/12.jpg
baza/13/13.jpg
baza/13/14.jpg
baza/13/15.jpg
baza/13/16.jpg
baza/13/17.jpg
baza/13/18.jpg
baza/13/19.jpg
baza/13/20.jpg
baza/13/21.jpg
baza/13/22.jpg
baza/13/23.jpg
baza/13/24.jpg
baza/13/25.jpg
baza/13/26.jpg
baza/13/27.jpg
baza/13/28.jpg
Все ссылки помещаются в переменную K:TStringList;

При скачивании добаляю название сайта и путь к файлу:
IDHTP.Get('http://sss.ucoz.ru/'+k[i], M);

Цитата:
Сообщение от postal2 Посмотреть сообщение
IDHTP что такое? Не модуль ли случайно? может IDHTP1 всё таки? Перед применением создан?
Если хочешь можешь посмотреть дополнительные материалы... про компонент IdHTTP, это не мой модуль, а встроенный в Delphi. Его я использую для закачки файлов...

Цитата:
зы дельфи может подчёркивать ошибку, случившуюся строкой ранее
даже не знаю... эту функцию я использую не раз... почему тогда же она в одном месте идет а в другом нет?! Если сказать про предыдущую строчку...

Последний раз редактировалось Stilet; 22.01.2010 в 08:28.
kotzzz вне форума Ответить с цитированием
Старый 22.01.2010, 09:10   #5
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Обрати внимание на косую черту !
Для работы с файлами на диске используется "\", а для инета - "/"
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 22.01.2010, 09:46   #6
kotzzz
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 39
По умолчанию

Цитата:
Сообщение от Kotofff Посмотреть сообщение
Обрати внимание на косую черту !
Для работы с файлами на диске используется "\", а для инета - "/"
Я знаю....

Тогда почему этот код работает: ?
Код:
k.LoadFromFile(SaveFolder +'\spisok2.txt');
       for I:= 0 to k.Count-1  do 
        begin
              IDHTP.Get('http://sss.ucoz.ru/'+k[i], M);
              path:='baza\13\'+Inttostr(i+1)+'.jpg';
              M.SaveToFile(path);
              M.Clear;
        end;
        M.Free;

А этот не идет: ?
Код:
k.LoadFromFile(SaveFolder +'\spisok2.txt');
       for I:= 0 to k.Count-1  do 
        begin
           If FileExists('baza\13\'+Inttostr(i+1)+'.jpg') then
             begin
             showmessage('Файл baza\13\'+Inttostr(i+1)+'.jpg существует');//17-jpg файлов есть на диске, он это сообщение показывает             
             end
             else
             begin
              IDHTP.Get('http://sss.ucoz.ru/'+k[i], M);
              path:='baza\13\'+Inttostr(i+1)+'.jpg';//на 18.jpg файле он выдает ошибку, которую я описывал выше... и выделяет строку path              
              M.SaveToFile(path);
              M.Clear;
             end;
        end;
        M.Free;
Вот ошибки при компиляции проекта, может они помогут найти истинную ошибку...
Код:
[Warning] Unit1.pas(49): Symbol 'faArchive' is specific to a platform
[Warning] Unit1.pas(50): Symbol 'FileSetAttr' is specific to a platform
[Warning] Unit1.pas(50): Symbol 'faArchive' is specific to a platform
[Warning] Unit1.pas(200): Return value of function 'GetInetFiles' might be undefined

Последний раз редактировалось kotzzz; 22.01.2010 в 10:31.
kotzzz вне форума Ответить с цитированием
Старый 22.01.2010, 12:45   #7
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Это не ошибки, а предупреждения.
Поставьте бряку на строку
Код:
IDHTP.Get('http://sss.ucoz.ru/'+k[i], M);
с условием I=17
И - по шажочкам, с просмотром всех параметров и переменных...
mihali4 вне форума Ответить с цитированием
Старый 22.01.2010, 13:10   #8
kotzzz
Пользователь
 
Регистрация: 30.01.2009
Сообщений: 39
Печаль

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Это не ошибки, а предупреждения.
Поставьте бряку на строку
Код:
IDHTP.Get('http://sss.ucoz.ru/'+k[i], M);
с условием I=17
И - по шажочкам, с просмотром всех параметров и переменных...
Всё, спасибо разобрался... в коде не было ошибки, проблема была свсем в другом...

Всем спасибо...

Последний раз редактировалось kotzzz; 22.01.2010 в 16:25.
kotzzz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверка на существование папки D_E_N Общие вопросы Delphi 3 05.10.2009 22:48
существование файла Pirate_XP Паскаль, Turbo Pascal, PascalABC.NET 3 25.11.2008 22:10
Проверка на существование БД перед запуском приложения Fantom БД в Delphi 7 08.09.2008 23:09
Проверка (True or False for CheckBox) NeiL Общие вопросы Delphi 5 31.01.2008 09:42
Проверка на существование Lonix Общие вопросы Delphi 2 19.03.2007 19:42