purebasic.info

PureBasic forum
Текущее время: Сб июл 21, 2018 7:11 am

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




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Компилятор
СообщениеДобавлено: Чт мар 29, 2018 11:21 am 
Не в сети
доцент

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: Чт мар 29, 2018 12:26 pm 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 630
Благодарил (а): 66 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
файл пустышка компилится всего ни чего, ищи у себя в коде


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: Чт мар 29, 2018 1:36 pm 
Не в сети
профессор

Зарегистрирован: Пн янв 03, 2011 4:27 pm
Сообщений: 410
Благодарил (а): 5 раз.
Поблагодарили: 17 раз.
Пункты репутации: 0
убери галочку отладчика.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: Чт мар 29, 2018 6:32 pm 
Не в сети
доцент

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

И что ты мне предлагаешь писать файлы пустышки?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
RunProgram("cmd.exe", "", GetCurrentDirectory())
MessageRequester("", "")
 
Global NewMap MemoryAddresses()
Global IsMemory_Mutex = CreateMutex()
Procedure _FreeMemory(*Memory)
        FreeMemory(*Memory)
        LockMutex(IsMemory_Mutex)
        DeleteMapElement(MemoryAddresses(), Str(*Memory))
        UnlockMutex(IsMemory_Mutex)
EndProcedure
 
Size.l
*buf = 0
strr.s
*buf = ReceiveHTTPMemory("")
If *buf
    Size = MemorySize(*buf)
    strr = PeekS(*buf, Size, #PB_UTF8|#PB_ByteLength)
    _FreeMemory(*buf)
    *buf = 0
EndIf



Проверяй. 193кб.

@ZOLO@ писал(а):
убери галочку отладчика.

Не использую.

Я несколько поискал инфы viewtopic.php?f=10&t=4286, но что делать с этим дальше не вразумлю. Т.к пробовал батничек написать который будет линковать лишь некоторые библы которые я укажу, в итоге ничего не вышло.

ReceiveHTTPMemory + 100кб.

Батник
Код:
1
2
3
4
5
set FileName=tasks
D:\purebasic\Compilers\pbcompiler.exe %FileName%.pb /COMMENTED /EXE
D:\purebasic\Compilers\fasm.exe PureBasic.asm
D:\purebasic\Compilers\polink.exe PureBasic.obj /out:%FileName%.exe /ENTRY:PureBasicStart /SUBSYSTEM:Windows /NODEFAULTLIB /LIBPATH:"D:\purebasic\Compilers\" /LIBPATH:"D:\purebasic\PureLibraries\Windows\Libraries" PureBasic.obj SystemBase.lib StringUtility.lib UnicodeFunctions.lib MSVCRT.lib KERNEL32.lib USER32.lib GDI32.lib COMDLG32.lib ADVAPI32.lib COMCTL32.lib OLEAUT32.lib D:\purebasic\compilers/objectmanager.lib D:\purebasic/stringmanager.lib OLEAUT32.LIB ADVAPI32.LIB OLE32.LIB SHELL32.LIB COMCTL32.LIB UUID.LIB SHELL32.LIB WINMM.LIB MSVCRT.LIB KERNEL32.LIB
pause


еще инфы http://www.purebasic.info/phpBB3ex/view ... f=1&t=3698


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: Чт мар 29, 2018 7:55 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6327
Благодарил (а): 19 раз.
Поблагодарили: 189 раз.
Пункты репутации: 48
Смотри фокус, закомментируй всего одну строчку
;*buf = ReceiveHTTPMemory("")
и на выходе exe-шник станет волшебным образом ~ 14 Kb всего.
А все потому, что используешь PureBasic - Http, сетевая либа большая размером.

Тут один выход - вместо встроенных больших библиотек использовать Winapi.

_________________
read-only


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

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11206
Благодарил (а): 4 раз.
Поблагодарили: 421 раз.
ReceiveHTTPMemory использует Curl для загрузки страницы. Отсюда и размер.
Размер можно уменьшить до 15 КБ.
Код:
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
RunProgram("cmd.exe", "", GetCurrentDirectory())
MessageRequester("", "")
 
Global NewMap MemoryAddresses()
Global IsMemory_Mutex = CreateMutex()
 
Procedure _FreeMemory(*Memory)
  FreeMemory(*Memory)
  LockMutex(IsMemory_Mutex)
  DeleteMapElement(MemoryAddresses(), Str(*Memory))
  UnlockMutex(IsMemory_Mutex)
EndProcedure
 
Procedure DownloadToMem(URL.s, *lpRam, ramsize)
  Protected agent.s, hInet, hData, Bytes.l
 
  Bytes=-1
  agent.s = "Opera/12.00"
  hInet = InternetOpen_(@agent,0,0,0,0 )
  If hInet
    hData = InternetOpenUrl_(hInet, @URL, "", 0, $4000000 | $200, 0 )
    If hData
      If InternetReadFile_(hData, *lpRam, ramsize, @Bytes)=0
        Bytes=-1
      EndIf
      InternetCloseHandle_(hData)
    EndIf
    InternetCloseHandle_(hInet)
  EndIf
 
  ProcedureReturn Bytes
EndProcedure
 
Size.l=1024*1024
*buf = AllocateMemory(Size)
strr.s
Size=DownloadToMem("", *buf, Size)
If *buf
  strr = PeekS(*buf, Size, #PB_UTF8|#PB_ByteLength)
  _FreeMemory(*buf)
  *buf = 0
EndIf


kvitaliy писал(а):
Тут один выход - вместо встроенных больших библиотек использовать Winapi.
Или библиотеку Network.

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


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: Пт мар 30, 2018 4:56 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 630
Благодарил (а): 66 раз.
Поблагодарили: 20 раз.
Пункты репутации: 5
Pypsikan писал(а):
И что ты мне предлагаешь писать файлы пустышки?

я предложил поискать в коде, и как тебе сказали Виталик и Пётр, там оно и было


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

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 50
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Пётр писал(а):
ReceiveHTTPMemory использует Curl для загрузки страницы. Отсюда и размер.
Размер можно уменьшить до 15 КБ.
Код:
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
RunProgram("cmd.exe", "", GetCurrentDirectory())
MessageRequester("", "")
 
Global NewMap MemoryAddresses()
Global IsMemory_Mutex = CreateMutex()
 
Procedure _FreeMemory(*Memory)
  FreeMemory(*Memory)
  LockMutex(IsMemory_Mutex)
  DeleteMapElement(MemoryAddresses(), Str(*Memory))
  UnlockMutex(IsMemory_Mutex)
EndProcedure
 
Procedure DownloadToMem(URL.s, *lpRam, ramsize)
  Protected agent.s, hInet, hData, Bytes.l
 
  Bytes=-1
  agent.s = "Opera/12.00"
  hInet = InternetOpen_(@agent,0,0,0,0 )
  If hInet
    hData = InternetOpenUrl_(hInet, @URL, "", 0, $4000000 | $200, 0 )
    If hData
      If InternetReadFile_(hData, *lpRam, ramsize, @Bytes)=0
        Bytes=-1
      EndIf
      InternetCloseHandle_(hData)
    EndIf
    InternetCloseHandle_(hInet)
  EndIf
 
  ProcedureReturn Bytes
EndProcedure
 
Size.l=1024*1024
*buf = AllocateMemory(Size)
strr.s
Size=DownloadToMem("", *buf, Size)
If *buf
  strr = PeekS(*buf, Size, #PB_UTF8|#PB_ByteLength)
  _FreeMemory(*buf)
  *buf = 0
EndIf


kvitaliy писал(а):
Тут один выход - вместо встроенных больших библиотек использовать Winapi.
Или библиотеку Network.


Интересно, я туже попробовал использовать winapi и размер действительно изменился. Вывод: не использовать пуриковские функции. (точнее те что дают слишком большой размер)

Всем спасибо за помощь.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: Пт мар 30, 2018 8:18 am 
Не в сети
доцент

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 50
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Смотри фокус, закомментируй всего одну строчку
;*buf = ReceiveHTTPMemory("")
и на выходе exe-шник станет волшебным образом ~ 14 Kb всего.
А все потому, что используешь PureBasic - Http, сетевая либа большая размером.

Тут один выход - вместо встроенных больших библиотек использовать Winapi.

Уже догадался, но спасибо за инфу.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: Пт мар 30, 2018 9:06 am 
Не в сети
доцент

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 50
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
+150 кб.
Код:
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
Procedure.l StringRegExp3(Array match.s(1), string.s, pattern.s, offset.l = 1)
    Define result.l = 0, re.i = CreateRegularExpression(#PB_Any, pattern)
    IIf(offset > 1, string = Mid(string, offset))
    Repeat
        IIf(re = 0, Break) ; Error 2: Bad pattern, array is invalid
        IIf(ExamineRegularExpression(re, string) = 0, Break)
        IIf(NextRegularExpressionMatch(re) = 0, Break) ; Error 1: Array is invalid. No matches
 
        Define index.l = 0, size.l = 10, groups.l = CountRegularExpressionGroups(re)
 
        If groups = 0 ; flag = 3, it will return all full match if there is no group
            count.l = ExtractRegularExpression(re, string, match())
            ReDim match(count)
            Break
        EndIf
    ReDim match(size)
    Repeat
        For i = 1 To groups
            match(index) = RegularExpressionGroup(re, i)
            index + 1
 
            If size - index < 1
                size * 2
                ReDim match(size)
            EndIf
        Next
    Until NextRegularExpressionMatch(re) = 0
    ReDim match(index)
    result = index
    Until #True
    IIf(re, FreeRegularExpression(re))
    ProcedureReturn result
EndProcedure



Есть функция чтоб искало по регулярным выражениям, но естественно с меньшим размером скомпиленого файла.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: Пт мар 30, 2018 10:07 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2282
Откуда: Russia — Belarus
Благодарил (а): 6 раз.
Поблагодарили: 72 раз.
Пункты репутации: 11
Конечно, потому что PCRE подключается.
Можно искать через String функции.

_________________
EnableExplicit User


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

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 50
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
qpAHToMAS писал(а):
Конечно, потому что PCRE подключается.
Можно искать через String функции.

Через FindStrirng? как тогда найти регулярное выражение.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Компилятор
СообщениеДобавлено: Пт мар 30, 2018 1:05 pm 
Не в сети
профессор

Зарегистрирован: Чт сен 22, 2011 6:21 pm
Сообщений: 231
Благодарил (а): 31 раз.
Поблагодарили: 22 раз.
Пункты репутации: 0
Pypsikan писал(а):
... как тогда найти ...
http://rus-linux.net/nlib.php?name=/MyLDP/algol/cpattern/Regular_Expressions_in_C_ru.htmlПоиск регулярок - непростой алгоритм (потому вероятно и либа здоровая), и если надо сильно ужаться (а вам вижу надо), придется от них отказаться. (посимвольный разбор, вроде уже предлагали)


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

Зарегистрирован: Пн мар 05, 2018 4:49 am
Сообщений: 50
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Kuzmat писал(а):
Pypsikan писал(а):
... как тогда найти ...
http://rus-linux.net/nlib.php?name=/MyLDP/algol/cpattern/Regular_Expressions_in_C_ru.htmlПоиск регулярок - непростой алгоритм (потому вероятно и либа здоровая), и если надо сильно ужаться (а вам вижу надо), придется от них отказаться. (посимвольный разбор, вроде уже предлагали)


Случайно нашел вот такой код, вполне рабочий, он мне показался даже быстрее поиска по регулярным выражениям.
Код:
1
2
3
4
5
6
7
8
9
Procedure.s Between_2(string.s, L.s, R.s)
    Position = FindString(string, L.s, 1)
    string2.s = Right(string, Len(string)+1-Position-Len(L.s))
    Position2 = FindString(string2, R.s, 1)
    string3.s = Left(string2, Position2-1)
    If Position <> 0
        ProcedureReturn string3.s
    EndIf
EndProcedure



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

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


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

Сейчас этот форум просматривают: alone67 и гости: 5


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

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