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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2014, 11:35   #1
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию Поиск и отправка

Столкнулся с проблемой,поиска файлов по маске и отправки их на вебхостинг.Есть много решений,я выбрал Delphi+php.Так вот я ищу файлы в папке(полный путь до них) и добавляю в мемо.вот так:
Функция поиска:
Код:
procedure FindFilesByMask(List :tStrings; var DirCount :Integer; const DirName, Mask :String; SubDir: Boolean = True);
// ????? ?????? ?? ????? ? ???????? ????? ? ????????
  // ??? ?????? ?????????? ? ????????? ?????????? ? ??????????? ?????????,
  // ??? ?????? ??? ??????? ?????? ??? ????. ??????? ????????? ?????????
  // ?????????
  procedure ScanDirs(const DirName :String);
  var
    h   :tHandle;
    wfd :tWin32FindData;
  begin
    Inc(DirCount); // ?????? ??? ??????????
    // ??????? ?????????? ??????? ??????? ?? ???????? ?????
    h := Windows.FindFirstFile(PChar(DirName+Mask), wfd);
    try
      if  h <> INVALID_HANDLE_VALUE  then begin
        repeat
          if  (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0  then
            List.Add(DirName+wfd.cFileName);
        until  not Windows.FindNextFile(h,wfd);
      end;
      // ???????? ???? ?????? ? FindFirstFile ? FindNextFile
      case  GetLastError  of
        ERROR_NO_MORE_FILES,    // ?????? ??? ?????? ? ????????? ??????????????? ????? (?? ????)
        ERROR_FILE_NOT_FOUND,   // ?????? ??? ?????? ? ????????? ??????????????? ?????
        ERROR_SHARING_VIOLATION // ????????? ?? ????? ???????? ???????? (??? ?????? ?? ??? ??????????)
                              : ; // ?????? ?? ??????, ??? Ok
        else // ??? ????????? ??????
          raise Exception.CreateFmt('?????? ????????? ???????? "%s": %s',[DirName,SysErrorMessage(GetLastError)]);
      end;
    finally
      if  h <> INVALID_HANDLE_VALUE  then Windows.FindClose(h);
    end;
    // ?????? ????????? ?????????? ???????????
    if not SubDir then exit; // 13.06.03
    h := Windows.FindFirstFile(PChar(DirName+'*.*'), wfd);
    try
      if  h <> INVALID_HANDLE_VALUE  then begin
        repeat
          if   ((wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0)
           and (wfd.cFileName <> String('.'))
           and (wfd.cFileName <> '..')           then
            ScanDirs(IncludeTrailingPathDelimiter(DirName+wfd.cFileName));
        until  not Windows.FindNextFile(h,wfd);
      end;
      // ???????? ???? ?????? ? FindFirstFile ? FindNextFile
      case  GetLastError  of
        ERROR_NO_MORE_FILES,    // ?????? ??? ?????? ? ????????? ??????????????? ????? (?? ????)
        ERROR_FILE_NOT_FOUND,   // ?????? ??? ?????? ? ????????? ??????????????? ?????
        ERROR_SHARING_VIOLATION // ????????? ?? ????? ???????? ???????? (??? ?????? ?? ??? ??????????)
                              : ; // ?????? ?? ??????, ??? Ok
        else // ??? ????????? ??????
          raise Exception.CreateFmt('?????? ????????? ???????? "%s": %s',[DirName,SysErrorMessage(GetLastError)]);
      end;
    finally
      if  h <> INVALID_HANDLE_VALUE  then Windows.FindClose(h);
    end;
  end;
begin // FindFilesByMask
  ScanDirs(IncludeTrailingPathDelimiter(DirName));
end;
Вызываю так
Код:
var
n: Integer;
begin
 FindFilesByMask(memo1.Lines, n, 'C:\', '*.xml');
Пытаюсь отправить:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var FileName: string;
var formData: TIdMultiPartFormDataStream;
response:string;
begin
FileName := memo1.text;
formData := TIdMultiPartFormDataStream.Create;
formData.AddFile('myfile',fileName,'application/octet-stream');
formData.AddFormField('param1', 'value1');
response := idhttp1.Post('/upload/gate.php',formData);
memo1.Lines.Text:=response;
formData.Free;
end;
Выходит сообщение
http://screenshot.ru/cb1e42fc7c578d0a7da54e8519c44c46
mitiay вне форума Ответить с цитированием
Старый 22.08.2014, 13:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Может в пути русские буквы затесались?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.08.2014, 17:32   #3
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Может в пути русские буквы затесались?
Нет нету русских букв
mitiay вне форума Ответить с цитированием
Старый 22.08.2014, 17:34   #4
WhatO_o?!
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 54
По умолчанию

А существует ли файл, который твоя программа Cannot open? Если да - от имени админа запускаешь? Быть может не пускают её в ту директорию?
Здесь могла бы быть ваша реклама
WhatO_o?! вне форума Ответить с цитированием
Старый 22.08.2014, 17:38   #5
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от WhatO_o?! Посмотреть сообщение
А существует ли файл, который твоя программа Cannot open? Если да - от имени админа запускаешь? Быть может не пускают её в ту директорию?
Запустил от имени администратора тоже самое...Файл существует так как я перед отправкой делаю поиск в данной директории файлов xml
mitiay вне форума Ответить с цитированием
Старый 22.08.2014, 17:52   #6
WhatO_o?!
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 54
По умолчанию

Ну тогда я не знаю)) пробуй показывать путь перед моментом возникновения ошибки, просмотришь на предмет косяков

PS: вообще не пойму, при чем тут Cannot open LocalService.exe, когда работает процедура с xml ... не может же он считать её директорией
Здесь могла бы быть ваша реклама
WhatO_o?! вне форума Ответить с цитированием
Старый 22.08.2014, 18:04   #7
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от WhatO_o?! Посмотреть сообщение
Ну тогда я не знаю)) пробуй показывать путь перед моментом возникновения ошибки, просмотришь на предмет косяков

PS: вообще не пойму, при чем тут Cannot open LocalService.exe, когда работает процедура с xml ... не может же он считать её директорией
Для проверки делал.Такой вопрос (чтоб не создавать новый топ)
Код:
 IdFTP.MakeDir(InttoStr(num));
          IdFTP.ChangeDir('/webspace/httpdocs/'
Все папку создает теперь как перейти в созданную папку ?
mitiay вне форума Ответить с цитированием
Старый 22.08.2014, 20:47   #8
WhatO_o?!
Пользователь
 
Регистрация: 11.06.2011
Сообщений: 54
По умолчанию

В смысле как перейти? как перейти на каком этапе? ты ведь в функцию директорию передаешь... либо я не понял
Здесь могла бы быть ваша реклама
WhatO_o?! вне форума Ответить с цитированием
Старый 23.08.2014, 08:14   #9
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от WhatO_o?! Посмотреть сообщение
В смысле как перейти? как перейти на каком этапе? ты ведь в функцию директорию передаешь... либо я не понял
IdFTP.MakeDir(InttoStr(num));- создаем новую папку

Как перейти в созданную папку так?

IdFTP.ChangeDir('/webspace/httpdocs/' + (num) так ругается
mitiay вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка одномерного массива - поиск среднего, поиск минимального, сортировка (Паскаль) nadez Паскаль, Turbo Pascal, PascalABC.NET 3 18.03.2014 08:45
отправка почты sys user Работа с сетью в Delphi 7 24.11.2013 13:27
поиск по сайту, INPUT TYPE='text' и отправка его содержания серверу AlienNation PHP 1 08.09.2011 20:30
Поиск файла в подкаталогах и отправка на сервер Ёжик в тумане Общие вопросы Delphi 1 20.07.2011 11:17
отправка формы weder PHP 4 02.05.2010 21:00