powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вставить файл внутрь exe
17 сообщений из 42, страница 2 из 2
Вставить файл внутрь 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
17 сообщений из 42, страница 2 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Вставить файл внутрь exe
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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