Понедельник, 2023-12-04, 7:52 PM

Поиск
Меню
Категории раздела
PHP [40]
Cкриптовый язык программирования общего назначения
MySQL [1]
Cвободная система управления базами данных (СУБД)
jQuery [8]
Библиотека JavaScript, фокусирующаяся на взаимодействии JavaScript и HTML
CSS [60]
Cредство описания, оформления внешнего вида веб-страниц
JavaScript [161]
Прототипно-ориентированный скриптовый язык программирования
Веб-дизайн [2]
Проектирование пользовательских веб-интерфейсов для сайтов или веб-приложений
RegExp [1]
Регулярные выражения
SEO [2]
Продвижение и раскрутка сайтов. Заработок в сети.
C/C++ [3]
Компилируемый статически типизированный язык программирования общего назначения
Windows [4]
Программистам под ОС MS Windows
HGE [2]
Игровой движок HGE (Haaf's Game Engine)
Игровой дизайн [8]
Психология дизайна игр
Разработка игр [2]
Общие моменты, относящиеся к геймдеву
wxWidgets [2]
Библиотека инструментов для разработки кроссплатформенных приложений
PureBasic [10]
Кроссплатформенный компилятор и IDE для быстрой разработки
VST [6]
Steinberg's Virtual Studio Technology (VST)
iOS [1]
Mобильная операционная система, разрабатываемая и выпускаемая американской компанией Apple
Пиксельная графика [9]
Pixel art и все, что с ним связано
libGDX [2]
Кроссплатформенный открытый движок на Java, позволяющий создавать 2D и 3D игры под различные платформы, среди которых: Android, HTML5, Windows, Linux, iOS.
Поддержи проект!
Рекомендуем


Блог разработчика

Главная » PureBasic
Бывают случаи, когда надо сохранить структурированную переменную в бинарный файл. Нижепреведенный код показывает один из вариантов реализации задачи:
Procedure WriteStringEx(FileID.l, String.s) 
 WriteLong(FileID, Len(String))
 WriteData(FileID, @String, Len(String) * SizeOf(Character)) 
EndProcedure 

Procedure.s ReadStringEx(FileID.l) 
 String.s = Space(ReadLong(FileID))
 ReadData(FileID, @String, Len(String) * SizeOf(Character)) 
 ProcedureReturn String
EndProcedure 

Structure Element
 Section1.s
 Section2.s
 Section3.s
EndStructure

Define source.Element

source\Section1 = "String 1"
source\Section2 = "String 2"
source\Section3 = "String 3"

file.s = "data.bin"

;- Write a structured variable to file

If CreateFile(0, file)
 size = SizeOf(Element) / 4
 
 WriteLong(0, size)
 
 For i = 0 To size - 1
 s$ = PeekS(PeekL(@source + i * 4))
 WriteStringEx(0, s$)
 Next 
 
 CloseFile(0) 
EndIf

;- Read a structured variable from file

Define destination.Element

If ReadFile(1, file)
 max = ReadLong(1) - 1 
 
 For i = 0 To max 
 s$ = ReadStringEx(1)
 *m = AllocateMemory(Len(s$) + 1)
 PokeS(*m, s$)
 PokeL(@destination + i * 4, *m)
 Next
 
 CloseFile(1) 
EndIf

Debug destination\Section1
Debug destination\Section2
Debug destination\Section3
Категория: PureBasic | Просмотров: 1846 | Добавил: pop | Дата: 2012-06-03

The packer library provides an efficient set of functions to pack and unpack data (compress/decompress). The pack/unpack routines are based on the excellent JCalG1 algorithm and are integrated to PureBasic (no external DLL needed).


Но это, я думаю, и так всем известно. Проблема заключается в том, что в паке у файлов нет имен, как в архивах. Но эту проблему решить несложно. Достаточно при упаковке создать список файлов в паке. Потом его можно включить в код (посредством IncludeBinary) или читать с диска при распаковке.

Рассмотрим мой пример...
Категория: PureBasic | Просмотров: 1704 | Добавил: pop | Дата: 2011-06-19

Пишем DLL на Purebasic и подключаем к проекту на MS Visual C++
Категория: PureBasic | Просмотров: 1794 | Добавил: pop | Дата: 2011-06-02

Этот простейший код сохраняет в файл структуру папок выбранной директории. На выходе вы получите файл подобного вида

||---server 
 |....|---bin 
 |........|---adsync 
 |............|---adsync.exe 
 |............|---adsync.pb 
 |........|---common src 
 |............|---common.pb 
 |........|---fwget 
 |............|---fwget.exe 
 |............|---fwget.log 
 |............|---fwget.pb
Категория: PureBasic | Просмотров: 1383 | Добавил: pop | Дата: 2011-05-12

В примере показано для случая урлов заключенных в апострофы. Для случая с кавычками используйте Chr(34)

Define subject.s = "<a href='http://site1.ru'>Site 1</a> Any text <a href='http://site2.ru/?a=f&b=5'>Site 2</a>"
Define pattern.s = "http://[^\']{2,}"

If CreateRegularExpression(0, pattern)
 Dim Result$(0)
 NbFound = ExtractRegularExpression(0, subject, Result$())
 For k = 0 To NbFound-1
 Debug Result$(k)
 Next
Else
 Debug RegularExpressionError()
EndIf
Категория: PureBasic | Просмотров: 1067 | Добавил: pop | Дата: 2011-04-26

Пример использования регулярного выражения, извлекающего все адреса электронной почты с доменом любого уровня из произвольной строки, даже если они обрамлены любыми служебными знаками.

Define subject.s = "'Vasiliy Ivanovitch' y@mail.org.kol.ru (*ColdplayC*) 'l@mbr.uk.com' kol@kol.com serjio k <orba@kimori.org.ua>, serjio k <orba1@kimori.org.ua>"
Define pattern.s = "[\.\-_A-Za-z0-9]+?@[\.\-A-Za-z0-9]+?[\.A-Za-z0-9]{2,}"

If CreateRegularExpression(0, pattern)
 Dim Result$(0)
 NbFound = ExtractRegularExpression(0, subject, Result$())
 For k = 0 To NbFound-1
 Debug Result$(k)
 Next
Else
 Debug RegularExpressionError()
EndIf
Категория: PureBasic | Просмотров: 1239 | Добавил: pop | Дата: 2011-04-26

Эта простая утилита позволяет посчитать MD5-хэш файла и скопировать его в буфер обмена
Категория: PureBasic | Просмотров: 1142 | Добавил: pop | Дата: 2011-01-23

Автор оригинального кода (портировано с VB) - perkin
Исправления связанные с утечкой памяти - Пётр и A.Zhukoff

Категория: PureBasic | Просмотров: 2203 | Добавил: pop | Дата: 2010-12-10

Самый простейший способ чтения библиотекой Database. И никаких дополнительных либ не надо.
Категория: PureBasic | Просмотров: 1249 | Добавил: pop | Дата: 2010-10-06

При переносе блитцевского года возникла проблема - отстутствие функции Rnd в Пурике...
Категория: PureBasic | Просмотров: 1271 | Добавил: pop | Дата: 2010-07-26