purebasic.info

PureBasic forum
Текущее время: Сб июн 23, 2018 10:21 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: IncludeBinary и строка
СообщениеДобавлено: Ср мар 07, 2018 4:21 am 
Не в сети
доцент

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 50
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Ошибка: Только строку можно использовать после 'IncludeBinary'.
Код:
1
2
3
a.l=0
strings$=Chr('d'+a)Chr('a'+a)Chr('.'+a)Chr('p'+a)Chr('n'+a)Chr('g'+a)
FileInstall(strings$, _WorkingDir() + "\" + strings$)



Битый час ломаю голову, не могу передать переменную стрингс в функцию.

Библиотека: http://www.purebasic.fr/english/viewtop ... 14&t=66067

Из библиотеки:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Macro FileInstall(source, dest, overwrite = 0)
      DataSection
        FILEINSTALL_BEGIN#MacroExpandedCount:
          IncludeBinary source
        FILEINSTALL_END#MacroExpandedCount:
      EndDataSection
 
      If Not PathFileExists_(dest) Or overwrite
        __file.i = CreateFile(#PB_Any, dest)
        If __file
          WriteData(__file, ?FILEINSTALL_BEGIN#MacroExpandedCount, ?FILEINSTALL_END#MacroExpandedCount - ?FILEINSTALL_BEGIN#MacroExpandedCount)
          CloseFile(__file)
        EndIf
      EndIf
    EndMacro



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: IncludeBinary и строка
СообщениеДобавлено: Ср мар 07, 2018 1:24 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11194
Благодарил (а): 4 раз.
Поблагодарили: 417 раз.
IncludeBinary требует константную строку, потому что выполняется при компиляции и в этот момент содержимое strings$ неизвестно.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: IncludeBinary и строка
СообщениеДобавлено: Ср мар 07, 2018 10:30 pm 
Не в сети
доцент

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 50
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
IncludeBinary требует константную строку, потому что выполняется при компиляции и в этот момент содержимое strings$ неизвестно.


Все равно не понятно, как сделать чтобы он съел? ее.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: IncludeBinary и строка
СообщениеДобавлено: Чт мар 08, 2018 2:19 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1625
Откуда: Алматы
Благодарил (а): 14 раз.
Поблагодарили: 44 раз.
Пункты репутации: 5
я видимо чего-то не понимаю - но зачем название такое замудренное?
FILEINSTALL_BEGIN#MacroExpandedCount

просто FILEINSTALL_BEGIN нельзя? без этой второй части #MacroExpandedCount


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: IncludeBinary и строка
СообщениеДобавлено: Чт мар 08, 2018 2:50 am 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 230
Благодарил (а): 31 раз.
Поблагодарили: 22 раз.
Пункты репутации: 0
#MacroExpandedCount - генерирует новый номер, и получается уникальное имя метки при многократном использовании.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: IncludeBinary и строка
СообщениеДобавлено: Чт мар 08, 2018 5:01 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1625
Откуда: Алматы
Благодарил (а): 14 раз.
Поблагодарили: 44 раз.
Пункты репутации: 5
и все равно замудрёно как-то :) это получается ехе файл сам в себя временный файл пишет, а потом когда надо из себя создает копию файла в туда куда надо?

Macro FileInstall(source.s, dest, overwrite = 0)

а вот так если? само source - это надеюсь путь до файла? то есть строка? по идее и dest тоже должен быть с .s или dest$

а если это указатель на память - то думаю через метку не прокатит. указатель сам и есть метка - сразу с ним и работай, без этих танцев с бубном через IncludeBinary.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: IncludeBinary и строка
СообщениеДобавлено: Чт мар 08, 2018 7:12 am 
Не в сети
доцент

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 50
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
SereZa писал(а):
и все равно замудрёно как-то :) это получается ехе файл сам в себя временный файл пишет, а потом когда надо из себя создает копию файла в туда куда надо?

Macro FileInstall(source.s, dest, overwrite = 0)

а вот так если? само source - это надеюсь путь до файла? то есть строка? по идее и dest тоже должен быть с .s или dest$

а если это указатель на память - то думаю через метку не прокатит. указатель сам и есть метка - сразу с ним и работай, без этих танцев с бубном через IncludeBinary.


Хотел цикл сделать, и запихнуть все через цикл, чтобы не делать вот так
FileInstal("file.png", ...)
FileInstal("file2.png", ...)
FileInstal("file4.png", ...)
FileInstal("file3.png", ...)

source.s так же не работает.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB