powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вставить файл внутрь exe
25 сообщений из 42, страница 1 из 2
Вставить файл внутрь exe
    #36699608
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно ли както из программы выгружать заранее загруженный в нее файл.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36699650
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вернее выгружать то понятно как
integer li_FileNum
blob blob1
li_FileNum = FileOpen("C:\1.xls", StreamMode!, Write!, Shared!, Replace!)
FileWrite(li_FileNum, blob1)

вот только как загрузить файл в blob1, не во время выполнения, а изначально, тоесть чтоб файл был внутри программы.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36699790
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06Вернее выгружать то понятно как
integer li_FileNum
blob blob1
li_FileNum = FileOpen("C:\1.xls", StreamMode!, Write!, Shared!, Replace!)
FileWrite(li_FileNum, blob1)

вот только как загрузить файл в blob1, не во время выполнения, а изначально, тоесть чтоб файл был внутри программы.
Какого размера файл?
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36699804
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Файл 27КБ
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36699829
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06Файл 27КБ
В принципе, это не важно, просто хотел воспользоваться реестром, но функция, реализованая в PB напрямую для этого не подходит...
Делать надо как-то так
Код: plaintext
blob gb_myblob = gf_getmyblob()

Весь фокус в том, что значение gf_getmyblob() будет посчитано на момент компиляции...

Можно сделать и более экзотическими способами... Например прикреплять предварительно подготовленную bmp в которой в растре содержится нужный файл, или ресурс в виде двоичного файла к программе подсоединять и извлекать его, но в этом случае просто сборкой из PB нельзя будет ограничиться.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36699865
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно более подробно...
Что должно быть в gf_getmyblob()
И куда совать bmp
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700070
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06А можно более подробно...
Что должно быть в gf_getmyblob()
И куда совать bmp
gf_getmyblob должен возвращать blob содержащий нужный файл.
BMP засунуть в PBR файл, тогда он подлинкуется к проекту.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700181
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк
gf_getmyblob должен возвращать blob содержащий нужный файл.
так я собственно и спрашивал как это сделать.

BMP засунуть в PBR файл, тогда он подлинкуется к проекту и это как сделать я тоже не знаю, я конечно могу поизучать. Но если не сложно напишите пожалуйста как это сделать.

И какой вариант лучше?
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700262
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06Локшин Марк
gf_getmyblob должен возвращать blob содержащий нужный файл.
так я собственно и спрашивал как это сделать.

Написать функцию, которая читает нужный файл в блоб и возвращает его.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700452
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк
Написать функцию, которая читает нужный файл в блоб и возвращает его.
Так в том и проблема что мне нужен файл внутри ехе, а не снаружи. Так я бы просто воспользовался бы FileCopy
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700535
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркДелать надо как-то так
Код: plaintext
blob gb_myblob = gf_getmyblob()

Весь фокус в том, что значение gf_getmyblob() будет посчитано на момент компиляции...

К сожалению для блобов этот способ не годится, т.к. блобы не поддерживают инициализацию переменной при объявлении.

Да и вообще я сомневаюсь что в инициализации можно вызывать юзерские ф-и. Мне кажется можно только встроенные.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700572
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин Марк
Весь фокус в том, что значение gf_getmyblob()
Дошло до меня, но когда я так пишу
Код: plaintext
blob gb_myblob = gf_getmyblob()
и нажимаю сохранить - PB 8.0 вылетает
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700611
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно както это провернуть через объект picture на форме?
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700612
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyЛокшин МаркДелать надо как-то так
Код: plaintext
blob gb_myblob = gf_getmyblob()

Весь фокус в том, что значение gf_getmyblob() будет посчитано на момент компиляции...

К сожалению для блобов этот способ не годится, т.к. блобы не поддерживают инициализацию переменной при объявлении.

Да и вообще я сомневаюсь что в инициализации можно вызывать юзерские ф-и. Мне кажется можно только встроенные.
С утра проверял - вроде нормально компилировалось. Сейчас билдер падает...
Ну а если не поддерживается инициализация blob'ов и с пользовательскими функциями проблема, то уж точно можно вернуть строку, в которой содержится искомый файл, правда предварительно его придется подготовить, если там содержатся символы с кодом 0, а потом при записи изменить обратно.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700627
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитав например содержимое файла при помощи функции ProfileString (но тут тоже есть проблема, т.к. не возвращается содержимое файла длинной более 4 кб). Нужно будет объявлять несколько переменных и потом их склеивать...
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700665
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06А можно както это провернуть через объект picture на форме?
Через объект picture провернуть можно, только нужно будет получить изображение в массив при помощи вызова нескольких функций Windows API и предварительно его подготовить в виде картинки.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36700690
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно еще перевести бинарник в base64 потом разбить на строки по макс. размеру строкового столбца в DW и сформировать синтаксис DW с этими встроенными данными.
Это DW можно импортировать при сборке, а в рантайм инстанцировать, слить все строки и обратно перекодировать.

Вариаций много.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36701103
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Через ProfileString - не понял как.
Через объект picture - мне бы эти самые Windows API функции, а еще лучше пример.
бинарник в base64 - както мудренно, но наверно самое для меня выполнимое, но опять таки пример бы функции для конвертации
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36701189
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06Через ProfileString - не понял как.

Поставить вместо getmyblob() - будет работать и не будет падать.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36701327
Anatoly Moskovsky_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DDD06
бинарник в base64 - както мудренно, но наверно самое для меня выполнимое, но опять таки пример бы функции для конвертации
какая часть непонятна?
1) перевод в/из base64
2) формирование синтаксиса DW с данными
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36701600
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06Возможно ли както из программы выгружать заранее загруженный в нее файл.
Попробуйте как-то так:
- создайте в программе строковую переменную с максимальной длинной и заранее известным значением, например "000...0";
- после компиляции, используя HEX-редактор найдите в ехе-файле эту последовательность, запомните адрес и замените её на "нужную" информацию;
- в программе должна быть пользовательская функция, которая сможет прочитать часть файла начиная с указанного адреса. На выходе этой функции необходимый Вам Blob.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36701624
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIS
Попробуйте как-то так:
- создайте в программе строковую переменную с максимальной длинной и заранее известным значением, например "000...0";
- после компиляции, используя HEX-редактор найдите в ехе-файле эту последовательность, запомните адрес и замените её на "нужную" информацию;
- в программе должна быть пользовательская функция, которая сможет прочитать часть файла начиная с указанного адреса. На выходе этой функции необходимый Вам Blob.
Этому может помешать следующее:
В PBL/PBD данные хранятся в связанном списке блоками по 512 байт, в каждом из которых есть заголовок. Поэтому шаблонная строковая константа не будет непрерывной в PBD.

Хотя конечно зная формат PBL можно обойти это. Но в этом случае проще просто воспользоваться библиотекой как архивом и хранить файл прямо в иcходном виде в PBD (указав его в файле ресурсов).
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36701637
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky ,
вообще-то я ориентировался на "ехе-файл" (как в теме), но Ваш вариант с "PBL/PBD" - интересней.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36701638
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06Возможно ли как то из программы выгружать заранее загруженный в нее файл.
А зачем? :-)))))
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36702107
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ФилиппА зачем? :-)))))
Ждал этот вопрос. У меня возникают проблемы с копированием файла через FileCopy.
Запускаю от себя - все нормально. Запускаю от пользователя файл не копируется. Копирую от пользователя вручную, через explorer - копируется.
Кроме того хотелось бы иметь такой прием взапасе.
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вставить файл внутрь exe
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]