powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вставить файл внутрь exe
42 сообщений из 42, показаны все 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
Вставить файл внутрь exe
    #36702112
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovsky_какая часть непонятна?
1) перевод в/из base64
2) формирование синтаксиса DW с данными

1 непонятна
2 а что если в переменную string, зачем тут DW
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36702291
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал закодировать http://www.greywyvern.com/code/php/binary2base64
и пробовал закодировать http://www.delphisources.ru/pages/faq/base/base64.html
(в конце пример на делфи)
а раскодировать /topic/194266&hl=base64
там Локшин Марк выложил скрипт.
Пока не получилось но я думаю что скорее всего получится
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36702826
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06ФилиппА зачем? :-)))))
Ждал этот вопрос. У меня возникают проблемы с копированием файла через FileCopy.
Запускаю от себя - все нормально. Запускаю от пользователя файл не копируется. Копирую от пользователя вручную, через explorer - копируется.
Кроме того хотелось бы иметь такой прием взапасе.

Попробуйте скопировать файл штатными средствами :-)
Код: plaintext
1.
FUNCTION BOOLEAN CopyFileA(REF string lpExistingFileName,REF string  lpNewFileName,	 BOOLEAN  bFailIfExists) library "kernel32.dll" 

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public function boolean api_copyfile (string as_Source, string as_Destination, boolean ab_switch);
string lpExistingFileName
string  lpNewFileName
boolean lb_RET
lpExistingFileName = as_Source
lpNewFileName = as_Destination
lb_RET = CopyFileA(lpExistingFileName, lpNewFileName, ab_switch) 

RETURN lb_RET
end function
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36702865
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтото у меня не получается.
Этот код должен возвращать архив который во вложении, но возвращает чтото не то.
С текстовыми файлами вроде все впорядке.
А вот архив не получается.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
string is_data
is_data="UmFyIRoHAM+QcwAADQAAAAAAAAAzP3Qgkj0ArAYAAABOAAACmrQbTgBE1zwdNRgAIAAAAI/g"
is_data=is_data+"rqKl4KqgLmRvYwAEXR9AgZBA8ICQAgDwQAGCDCGQ0QyN/JgaM3tfdO6TiTpwHHSASdD1Wq1R"
is_data=is_data+"dCgrAKQkCfgltQQVCoCqpBISRQCScWEEItqVitRKfAEpVfgCVEv34S/VK1WoXFErar8QLZUq"
is_data=is_data+"kAgvwKralUpAJaIoRSw9ColQ2rG92BZIm9196JxPUU+fYk+x628zG8be6/Hr7f8pr3x5vjzM"
is_data=is_data+"3H/Lz+ze8zt7nz31Nck9zn86Zt+Jxpu4CQKiBUO8s6BxHSah4ZiJ0PCrNLu+Pei8Ty4svXy5"
is_data=is_data+"Z1vh5QZ3ZzRAC7e8iLeyYPf8euSqXCp216+xrBBe2+q+CiPTJrRKMwdAxuX9sxi0def/m0hq"
is_data=is_data+"hFOb4NeyTGu2TL9RfZdlOyVxKFwdxfzrjsQL2dmUbDUrs3CRldcFuVVp04tKGXqFLRgyeCc3"
is_data=is_data+"g7biMJEsVqloTC1GGrZp+Ao+GjK5E6KOVwhTkevZyCw6HiRY1UMTI2mx1qOQeAEawjt9lt3H"
is_data=is_data+"Ae8s/ceYPDD5LlyNVxK74y5BThyPWbFyX1AI1ma2Ln/W6MNLYucLwAhjgYRgyjwzCvFSxXEF"
is_data=is_data+"pjRTgpcHirC4xpnGabZXwz5qOvS2NdxWfhm5qyfLY2wIYuGUnxCXrTpKMlETPE0Bz6IkEmQA"
is_data=is_data+"1fLTHBk8ctaev+u0C9fL5h3k63TS88D6t4uWomE4YSOltE18+6EnxFpyjMJPr8XqxCAoVecD"
is_data=is_data+"qCD29s5rHQUFq8U0W4R2Hs7D3s/Ah/XST0N+4zEPoq5m15CuatbAmbhlWUh/a2fng7tbZsDF"
is_data=is_data+"fLn1o2mAen7B9ww7/GB/njwS1J8Ql39MZUf8LNmCMN3KBOEoCeiTUk0h/3Qp20H4af0L32VM"
is_data=is_data+"oSoOevppom5MWQ4SuKQLxbiFhuWcmUpCaRkHwj9v14AUxwflCSlJpjx4J2rzThCdQeBo2AbU"
is_data=is_data+"Owtxw2EcpTEdVm+LTnSL7KEejJQleWDKds478z/4OAUlVa5qI3PI1HbVRYcswT4bcOytyjnC"
is_data=is_data+"KuZUMuTQM1HgR6U6spGQzCE1GJ01mtPI/YDEKOEaIJXZpgaU+ebeOjuBlDOWaXeCiuU9LdNI"
is_data=is_data+"cxZ3wdsu0SdylSUKI1L+jwkrUatm1Oog8m9epgeugibTVEO2eR1mqNMuZIVy/i9MLANueEIN"
is_data=is_data+"2FgzKxE+jUhB0OtrLSMdUxqX1qpzP8Fs4VbkbtlSe767O1urOIppV6GuPfVXhVhuTz2rOfdj"
is_data=is_data+"6QQjydQds3poDqd+u3b98UlHDZu04zB7UQy/91obw6KpOk1zB5mcZbks4I2QRr9IFidpUMos"
is_data=is_data+"wd7ugc79+F2jy261mmp36v1rIB4NPvVEvuOYvTfRVeeHKpX+Hx34928juuT4i8t+45CtUG+D"
is_data=is_data+"27Oxz6/1ExtL9qNnf1M97kyi6eJr1TbAseTdrTB75aUq6RGewc9rDYIzH68Z5i1ZZ7FsOR2g"
is_data=is_data+"qJLzx5XRk05KdPc9+HIhJ8QiIiJcx7yxkfVgxaoUt97/287lPWvPk95yHlZ3j/lBH2TzEymf"
is_data=is_data+"tU6LrhJ1t98qQBf0g0BnzGgL0PxBoCnTTpKv5Tr7iPZY9KP1GveM0JzuxpRyA6wZcfVGYGqF"
is_data=is_data+"4NcORGyFDTpLk4DSXzru66Nzd9W3NE5FBmo0/991+/YW698M36kaXq4VjX1FdP1UKyxNCgK3"
is_data=is_data+"5TVbXaWMLcwqyygU9ZWeB1cDX34lU0DdmWo+zMgvP5/Bcb97y1C6QNk34BRVL1x53JXJ8QiI"
is_data=is_data+"iIiIiIlxGIj8bdDm9Dhz+Vee/wSnl9ziwUzDszrQaHL3CR8b4bUGtgkjYF5Qp/5PsI+JPrK4"
is_data=is_data+"ZTIp2Cb4pyQaHx9yRsv0DBj1oRc+36fUury57Vxb9fqo9e/YiMrmM7LMsEFhp5x40jdR+wad"
is_data=is_data+"vGm8nEzHNt/26N/f1LmKyJPiEREREREREvglEja1U+7LbpHilEjQP8PblUjNu0jpy6R+3iZ9"
is_data=is_data+"6keGSBn4FS+Yb9hzZTKjlhy6Rr2dBn/ywvHdPDMpjmmT4i/1PzN7etke4v/gWBz2IbzHWDHx"
is_data=is_data+"9o8YlGETh01tJfJHUR9L5P0bxHwRnNxudNUAa4KgKkK4KsPESlwbMtG8bnha+86jc2968IR7"
is_data=is_data+"aqgpTn2gbpHN/qHDxqU2dopG+N7xqjol3gb61lsH5zeof35525WM1UiRwB9qePYG2fIO0Tz4"
is_data=is_data+"RuNMo/De5G3OO6hQpfmObZNG1qBp0c9vNwFOfARtgx6T1HP7mO2i8esBcQbpGxRu0n5Ni9fL"
is_data=is_data+"VVD3+KyrWEUj3u0eaVtddXsda5695AwrjbyVYNVrURqWFtGc6kR58/Ruq+rsLKfoQ7Oh+bxz"
is_data=is_data+"lrk+IuN/tMQ9ewBABwB="


char speed[]
long lc_table[ 256 ] =       { 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 62 , 99 , 99 , 99 , 63 , &
                             52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 99 , 99 , 99 , 64 , 99 , 99 , &
                             99 ,  0 ,  1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 ,  8 ,  9 , 10 , 11 , 12 , 13 , 14 , &
                             15 , 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , &
                             41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , &
                             99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99 , 99  &
                            }
long i,j,p,ln,k
long mas[ 4 ]
char out[]

ln = len(is_data) //is_data - ñòðîêà äëÿ äåêîäèðîâàíèÿ
speed = is_data
j =  1 
for i =  1  to ln
  p = lc_table[asc(speed[i]) +  1 ]
  if p <>  99  then
    mas[j] = p
    j = j + 1 
    if j =  5  then
      //Íàáðàëè ÷åòâåðêó áàéò
      k ++
      out[k] = char(mas[ 1 ] *  4  + truncate(mas[ 2 ]/ 16 , 0 ))
      if mas[ 3 ] <>  64  then 
        k ++
        out[k] = char(mod(mas[ 2 ], 16 ) *  16  + truncate(mas[ 3 ]/ 4 , 0 ))
      end if
      if mas[ 4 ] <>  64  then 
        k ++
        out[k] = char(mod(mas[ 3 ], 4 ) *  64  + mas[ 4 ])
      end if
      j =  1 
    end if
  end if		
next


blob emp_id_pic
FOR i= 1  to k
	emp_id_pic = emp_id_pic + Blob (out[i])
NEXT


integer li_FileNum
li_FileNum = FileOpen("C:\111111.rar", StreamMode!, Write!, Shared!, Replace!)
FileWrite(li_FileNum, emp_id_pic)
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36702906
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PL99Попробуйте скопировать файл штатными средствами :-)
Спасибо, наверно так и придется, если с встраиванием ничего не получится.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36703211
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06Anatoly Moskovsky_какая часть непонятна?
1) перевод в/из base64
2) формирование синтаксиса DW с данными

1 непонятна
2 а что если в переменную string, зачем тут DW

1 - вы ж привели код по переводу, там все правильно, кроме того что при записи в файл через FileWrite нужно организовать цикл, т.к. за раз она умеет только 32КБ

2 - если файл мелкий, несколько килобайт, то можно и в строковом литерале, но большие файлы так не выйдет, т.к. в PB есть ограничения на объем откомпилированных скриптов.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36703392
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1 файл 1.75 килобайт выгружается неправильно
2 об этом я не подумал, а какое там ограничение?
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36703877
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А еще вариант, скорее всего глупый конечно, не бейте меня если что
А можно внутри проги создать базу данных чтоб можно было сделать:
SELECTBLOB pole
INTO : blob
FROM tablica;
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36703892
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вариант хранить файл в БД не устроит?
Кстати какая база?
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36703915
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShtuckenshnuderА вариант хранить файл в БД не устроит?
Кстати какая база?
Неплохой вариант. Но это приложение будет стоять там где нет БД, а ставить ее специально не вариант.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36703979
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06
Но это приложение будет стоять там где нет БД, а ставить ее специально не вариант.

Приложение на PB, не работающее с базой- это извращение!
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36704011
Shtuckenshnuder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ikir, "И я того же мнения..."
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36704224
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDD06ФилиппА зачем? :-)))))
Ждал этот вопрос. У меня возникают проблемы с копированием файла через FileCopy.
Запускаю от себя - все нормально. Запускаю от пользователя файл не копируется. Копирую от пользователя вручную, через explorer - копируется.
Кроме того хотелось бы иметь такой прием взапасе.
Может filecopyex надо использовать? :-))
А на хрен такой прием взапасе? :-)
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36704880
DDD06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Короче действительно нахрен :-)
Не копируется в нашей корпоративной сети, но тут есть база.
А там где нет сети и базы скорее всего все будет копироваться.
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36746792
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyAIS
Попробуйте как-то так:
- создайте в программе строковую переменную с максимальной длинной и заранее известным значением, например "000...0";
- после компиляции, используя HEX-редактор найдите в ехе-файле эту последовательность, запомните адрес и замените её на "нужную" информацию;
- в программе должна быть пользовательская функция, которая сможет прочитать часть файла начиная с указанного адреса. На выходе этой функции необходимый Вам Blob.
Этому может помешать следующее:
В PBL/PBD данные хранятся в связанном списке блоками по 512 байт, в каждом из которых есть заголовок. Поэтому шаблонная строковая константа не будет непрерывной в PBD.

Хотя конечно зная формат PBL можно обойти это. Но в этом случае проще просто воспользоваться библиотекой как архивом и хранить файл прямо в иcходном виде в PBD (указав его в файле ресурсов).
Заинтересавала фраза и решение.
Любой файл? И как это его в PBD можно вставить в исходном виде? И как с ним потом работать?
Ничего не понял, но очень интересно.
Что Вы имели ввиду? Можно ли немного по подробнее?
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36747247
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISAnatoly MoskovskyНо в этом случае проще просто воспользоваться библиотекой как архивом и хранить файл прямо в иcходном виде в PBD (указав его в файле ресурсов).
Заинтересавала фраза и решение.
Любой файл? И как это его в PBD можно вставить в исходном виде? И как с ним потом работать?
Ничего не понял, но очень интересно.
Что Вы имели ввиду? Можно ли немного по подробнее?
PBD/PBL это файловая система в одном файле. Наподобие .ZIP.
PowerBuilder там хранит откомпилированные версии объектов проекта в виде файлов (имя-дата-содержимое).
Но ничто не мешает туда вставить любые другие файлы.
Например это можно сделать указав эти файлы в .PBR при сборке (возможно изменив расширение в имени файла).

Теперь про извлечение. Я не интересовался этим вопросом, но возможно есть бесплатные библиотеки для чтения из PBL.
В любом случае формат PBL известен , и ничто не мешает написать библиотеку для извлечения файлов из PBD.
Ну или купить готовую у меня :)
...
Рейтинг: 0 / 0
Вставить файл внутрь exe
    #36747316
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky ,
спасибо за информацию, думаю что пригодится, и пока не знаю для чего, но креатив уже бьет ключом. :)
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вставить файл внутрь exe
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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