QPas - квесты на Pascal'e

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Apromix
новенький
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

QPas - квесты на Pascal'e

Сообщение Apromix »

Здраствуйте! Хочу сделать интерпретатор текстовых квестов РИЛ на Лазарусе, чтобы проблем с кроссплатформенностью поменьше было бы. Вот столкнулся со множеством проблем при миграции с Дельфи на Лазарус:

1. Среди компонентов Лазаруса не нашел html-броузера. Есть ли нечто подобное IE-котрола, но для Лазаруса, чтобы потом и под Линукс пошло?

2. Для скриптов думал использовать PaxCompiler. Есть такой компонент для Лазаря?

3. Компонент ZipForge существует под Лазарус? Если нет, то, возможно, есть другой под Лазарус, который позволяет работать с архивами .zip (только распаковка).

Спасибо за ответы :)
Аватара пользователя
minoshi
постоялец
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Сообщение minoshi »

ответы от меня
1. IE - на то он и IE что он только для Винды (не зря же у него подпольная кличка - ОСЕЛ). Нет, конечно , ИЕ можно запустить и в линуксе, но через wine. Но оно это надо - в качестве условия работы программы ставить наличие wine?.

Ссылки по вопросу 1
сссылка намбер раз viewtopic.php?f=6&t=5110&start=0&st=0&sk=t&sd=a&hilit=%D0%BF%D0%BE+%D1%83%D0%BC%D0%BE%D0%BB%D1%87%D0%B0%D0%BD%D0%B8%D1%8E

ссылка намбер два http://lazarus.freepascal.org/index.php ... pic=7854.0

ссылка нумбер три viewtopic.php?f=23&t=5935&p=43418&hilit=%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80#p43418

ссылка нумбер четыре viewtopic.php?f=23&t=5899&p=43080&hilit=%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80#p43080

пять viewtopic.php?f=5&t=4075&start=0&st=0&sk=t&sd=a&hilit=%D0%B1%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80


2. Понятия не имею

3.Конкретно zipForge не встречал. Но есть вот это - http://wiki.lazarus.freepascal.org/ZipFile.

Добавлено спустя 22 секунды:
Вообще - то поиск рулит :)
Последний раз редактировалось minoshi 06.10.2010 16:31:37, всего редактировалось 1 раз.
Apromix
новенький
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Сообщение Apromix »

Александр, спасибо огромное :D

Да, нужен именно аналог IE для Лазаруса :) Вобщем пошел разгребать ссылки и пробовать кодить.
Аватара пользователя
minoshi
постоялец
Сообщения: 279
Зарегистрирован: 17.05.2008 21:23:38

Сообщение minoshi »

Всегда пожалуйста, обращайтесь
Apromix
новенький
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Сообщение Apromix »

Нда, разочарований моих нет предела :(
Аватара пользователя
amateur
энтузиаст
Сообщения: 552
Зарегистрирован: 03.08.2007 10:15:32

Сообщение amateur »

1. https://lazarus-ccr.svn.sourceforge.net ... /thtmlport (или тащить за собой Qt)

2. pascalscript

3. уже ответили (в принципе существуют еще варианты)

Нда, разочарований моих нет предела
- относительное понятие...
Apromix
новенький
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Сообщение Apromix »

amateur писал(а):в принципе существуют еще варианты


Да, хотелось бы и их попробовать (особенно с примерами).

И уже назрел еще вопрос: знаю, как отыскать временный каталог для распаковки архива в Windows. Как такое сделать в Лазарусе для Linux и Mac?
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Используем функции RTL

Код: Выделить всё

GetTempDir
GetTempFileName
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

Apromix писал(а):Да, хотелось бы и их попробовать (особенно с примерами).

Например, TZipper: http://www.freepascal.ru/forum/viewtopi ... &sk=t&sd=a

P.S.
И по поводу РИЛ (это уже в порядке рекламы, если модераторы сочтут нужным, можно потереть). Если ещё не видели INSTEAD (Interpreter of simple text adventures), возможно вам будет интересно на него взглянуть. Open source проект, правда не на Lazarus, а на C, и использует в качестве движка скриптов Lua. Если решите продолжать собственный проект, то как минимум сможете подсмотреть у существующего удачные решения.
Apromix
новенький
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Сообщение Apromix »

Спасибо :) Я прекрасно знаю плюсы и минусы существующих движков для РИЛ :) INSTEAD - прекрасный кроссплатформенный движок и мне очень понравился.

Добавлено спустя 4 минуты 28 секунд:
У меня возник вопрос по файловым системам Линукс и Винды. Как все это грамотно в коде организовать, чтобы проблем небыло со слешами и другим?
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

PathDelim, он же DirectorySeparator -- это разделитель на текущей платформе (/ или \)
IncludeTrailingPathDelimiter/ExcludeTrailingPathDelimiter -- добавляют или убирают последний разделитель из пути.

LineEnding, он же sLineBreak -- перевода строки на текущей платформе (#13 или #10 или #13#10)

Плюс нужно помнить про то, что GUI в Lazarus работает в кодировке UTF-8, и вполне оправдан выбор её в качестве внутренней кодировки строк всего приложения. В этом случае при вызове функций и использовании невизуальных классов из FCL (в основном работа с файлами, типа FindFirst/FindNext, StringList.SaveToFile/LoadFromFile и т.п.) нужно преобразовывать строку из UTF-8 в кодировку операционной системы. Для этого можно воспользоваться специализированными функциями (типа FindFirstUtf8/FindNextUtf8, находятся в модуле FileUtil) или функциями преобразования ( FindFirst(Utf8ToSys(path), ...); ).

Ещё довольно полезная информация есть тут (на английском):
http://wiki.lazarus.freepascal.org/Mult ... ming_Guide
Последний раз редактировалось Odyssey 06.10.2010 22:32:53, всего редактировалось 3 раза.
Mr.Smart
долгожитель
Сообщения: 1796
Зарегистрирован: 29.03.2008 00:01:11
Откуда: из леса!

Сообщение Mr.Smart »

Проблем со слешами не будет, но есть возможность нарваться на проблемму с UTF8.
Apromix
новенький
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Сообщение Apromix »

Спасибо за ответы ;) А что там с кодировками может быть не так? Да, было бы неплохо, чтобы прога работала в современной utf-8.
Odyssey
энтузиаст
Сообщения: 580
Зарегистрирован: 29.11.2007 16:32:24

Сообщение Odyssey »

См. чуть выше, я дополнил своё сообщение.
Apromix
новенький
Сообщения: 28
Зарегистрирован: 06.10.2010 15:15:51
Откуда: Черновцы, Украина

Сообщение Apromix »

Омг :) Столько всего нового :) Чувствую, эти кодировки выпотрошат всю душу :) Вопрос 1, вот я знаю путь к временному каталогу и мне нужно будет в него распаковать архив в отдельный каталог. Создаю новый каталог:

Код: Выделить всё

function GetRandomDirName: string;
begin
  Randomize;
  Result := Trim(IntToStr(Round(Random(888888888) + 111111111)));
end;


Затем распаковываю в него архив и работаю с файлами. Как мне потом удалить этот каталог со всеми файлами?

Вопрос 2, я перетягиваю архив на форму (drag-n-drop) и он открывается в Виндовс. То же будет и в Линукс без изменений кода?
Ответить