giveaway
-
Постов
69 -
Зарегистрирован
-
Посещение
-
Победитель дней
1
Сообщения, опубликованные giveaway
-
-
Решил попробовать применить zip из коробки для мультитомных архивов:
zip->ExtractZipFile(NameSaveFileAll[i],DirSaveFile);
Получаю такой алерт (cм. рис) Для одиночных архивов этот код работает. Что может быть? По ходу дела ему не нравится заголовок многотомного зипа, да? Он вообще умеет с ним работать?
-
-
Почему-то только System.Zip.TZipFile.Extract позволяет указывать, что не надо распаковывать в поддиректорию, а вот System.Zip.TZipFile.ExtractAll уже ее создает.
Может я что не так делаю? Мне нужно, чтобы все файлы архива распаковывались в указываемую пользователем директорию без создания каких-либо поддиректорий внутри ее.
-
1 час назад, Vitaldj сказал:
Он для мака? И кто вам сказал, что так будет работать?
Да, для мака. Скачал с сайта разработчика. Если руками этому бинарнику дать командую строку с ключами - он все распаковывает. Более того, если я к проекте прописывают путь к какой-то папке, где лежит unar, то моя аппликуха тоже его запускает и он работает.
Ок. Пусть он не запускается внутри контейнера. Меня устроит вариант, что я из контейнера предварительно закину этот unar в какую-то папку (по завершении оттуда удалю). Вопрос - как скопировать бинарник из контейнера куда-то по указанному пути? Мак это разрешает?
-
У меня тоже все работает. Но это вероятно из-за того, что приложение было написано на Делфи. Встречал в сети такую инфу, что не работает именно в Си.
В общем, мне удалось получит путь приложения нижеследующим кодом:
ExeDir=ExtractFilePath(GetModuleName(HInstance));// папка приложения NameFile_unrar_dll=ExeDir+"unar"; buffer=NameFile_unrar_dll+" "+NameSaveFileAll[i]+" -D -o "+DirSaveFile; retrn=system(buffer.c_str());
т.е. я пытаюсь обратиться с командной строкой на распаковку к бинарнику unar, который лежит внутри контейнера .app, но в итоге получаю такой alert (см. картинку). Терминал же ругается, что no such file or directory. Хотя путь в предупреждении прописан верный
-
На виртуальном, только у меня С, а не Delphi
-
14 часа назад, Vitaldj сказал:
Я понятия не имею, что уж у вас там не получается, вот результат вот этой функции:
procedure TForm2.Button1Click(Sender: TObject); begin showmessage(ExtractFilePath(ParamStr(0))); end;
Неа, не получается. Vitaldj, какой у вас сетап? Билдер, версия Mac OS?
Набрел вот на топик: http://codeverge.com/embarcadero.delphi.firemonkey/paramstr-1/1044953
Автор спрашивает
ЦитатаOpening a file in the Windows Explorer with my Firemonkey app works, but in the Finder of Mac OS it does not work. I use Paramstr(1). How can I read the filepath and filename in Mac OS X ?
А ему ответ общего плана, к сожалению конкретики не последовало:
ЦитатаOS X does not pass file names to GUI applications via the command line like Windows does. You need to (a) specify in the plist file (roughly equivalent to a manifest on Windows) what file types you application can open and (b) implement a custom delegate for NSApplication.
-
21 час назад, dnekrasov сказал:
Result := IncludeTrailingPathDelimiter(ExtractFilePath(GetModuleFolder(HInstance)));
А как и где определяется HInstance?
-
9 часов назад, dnekrasov сказал:
Лучше использовать System.IOUtils.TPath.GetLibraryPath
Данная функция определяет только юзерскую папку Library, а мое .app лежит совершенно в другом месте. Как составить в этом случае запрос с помощью TPath?
-
тип ExeDir AnsiString. Под Виндой эта фнукция мне возвращает нормальный путь, а для Мака - возвращает пустую строку. Почему?
-
7 часов назад, Vitaldj сказал:
А покажите часть кода, что вы используете эту функцию.
ExeDir=ExtractFilePath(ParamStr(0));// папка приложения
-
ExtractFilePath(ParamStr(0)) почему-то возвращает пустую строку. В чем может быть загвоздка?
-
22 минуты назад, Vitaldj сказал:
Я почему не пользуешься из коробки zip'ом?
Нужна возможность работы с мультитомными архивами.
22 минуты назад, Vitaldj сказал:Программа в маке - это обычная директория с расширением .app. Поэтому если ты с архивом будешь работать из этой же программы, то в эту же директорию и складывай. Я так делаю))
Ок, попробую тогда обратиться по пути MyApp.app\Contents\MacOS\unar
А чем MyApp может выяснить свое месторасположение? Для Мака это как делается?
-
13 минуты назад, Vitaldj сказал:
Ну если работает, то это уже кросс платформенный))
Так нормально работает только для Винды, а под Маком куда-то улетает в бесконечность))
А NetHTTP кросс-платформенный аналог TIdHTTP? С ним можно обспечить протокол HTTPS?
-
Коллеги, по вопросу с прокси сервером вот что получается.
Использую компонент TIdHTTP. Для приложения под Винду делаю посредством TIdHTTP запрос в Сеть, если меня "обругивают", то я инициализирую открытие окна для заполнения настроек прокси-сервера. Если туда все правильно вбить, то соединение устанавливается норм.
А вот в случае с Маком TIdHTTP не возвращает никакой "ругани", а просто подвисает. Ну думаю ладно, сделаю сразу вывод окна настроек прокси. Ввожу их и такая же песня - TIdHTTP висит, соединения нет. Может он не очень кросс-платформенный?))
-
Приложение под Мак должно распаковывать .rar-архивы. Делаю это бинаркником unar (не путать с unrar от RarLab). На данный момент через Deployment поместил его в контейнер .app
Но дальше мне его надо, или вынуть оттуда и куда-то положить (потом позднее обратиться к нему, зная, куда он лег), или прямо запускать его по командой строке внутри контейнера (если такое возможно).
Буду признателен за помощь в данном вопросе.
-
2 часа назад, Vitaldj сказал:
Просто в настройках пользователь сам указывает прокси и все.
Т.е. если юзер не зашел/не увидел, что в программе надо самому настроить прокси, то он сам и виноват?)))
-
Пишу приложение, которое будет распространяться и для Винды, и для Мака. Под Винду все легко найти/сделать, а вот чтобы было кросс-платформенно - здесь трудности.
Итак нужно чем:
1) Осуществить контроль, что приложение запущено в единственном экземпляре (не давать запускать еще один такой же процесс)
2) Чем проверить, не сидит ли юзер за локальным прокси, чтобы в этом случае выдавать ему окно для ввода логина/пароля для допуска в Интернет
3) Чем определить кол-во свободного места на диске
Заранее благодарю!
-
Со всем более-менее разобрался. Не найду только компонент для определения свободного места на диске. Буду признателен за подсказку.
-
А нет, не обновление. Скачиваются сторонние файлы. Программа представляет собой некоторую смесь качалки и распаковщика для полных ламеров, у которых данные операции почему-то очень часто вызывают проблемы.
-
Пока все пишу прежний. Под Мак просто ужас, а не программирование)
Приложение должно уметь распаковывать архивы rar. Для Мака unrar есть только в виде командной строки. Поэтому нужен запуск дочернего процесса.
-
Хочу чтобы мое приложение под Мак запускало unrar с ключом для распаковки архивов. Как это вообще сделать?
-
Задам вопрос в этот раздел.
Программа должна
1) Скидывать некоторые рабочие файлы в папку Temp на Маке
2) Определять свободное место на диске (-ах)
3) Давать пользователю руками вводить путь к папке (текстовый строкой)
Я не спец по Маку, но вижу, что там диски буквами не обозначаются. Они обозваны своими именами типа Macintosh HD, My Flash Media и т.д. Как работать с деревом файлов в данном случае?
Например по TEMP нашел:
"/tmp
На самом деле используется /private/tmp, а /tmp символьная ссылка. Приложения, которым требуется временное пространство на жестком диске обычно хранят их в этой директории. Хотя некоторые в /var/tmp."
Прямо и ставить путь '/tmp"? В данном случае системная TEMP на Маке найдется автоматически? -
Как обратится к бинарнику внутри контейнера .app или вытащить его оттуда?
в Развертывание приложений
Опубликовано · Изменено пользователем giveaway
В общем сделал я копирование бинарника unar из контейнера в нужную мне папку. Там уже лежат рары для распаковки.
Мое приложение посылает командную строку на распаковку, вылетает ошибка (я сделал спец.окно для ее вывода), НО(!) если из этого дебагерского окна делаю копи-паст данной командной строки в Терминал, то распаковка происходит. См.картинку - вверху окно с посылаемой командой и ошибкой, внизу это же команда в Терминале с успешным ее выполнением.
В чем может быть засада? Предварительно даже даю бинарнику атрибуты chmod 777