Исходники здесь
Вот такие скомпилированные версии есть у меня.
Ниже данные устарели.
Репозиторий находится тут (открывать через SVN клиент)
Удобный просмотр репозитория через браузер тут
Скомпилированные версии тут Пароль к архиву: coderx.ru
Есть ли предложения по модернизации существующего кода с описанием как должно и что хотелось бы заменить/добавить?
Дополнительные компоненты брать тут. (<-- TPerlRegEx есть только там)
/upd:
для компиляции последних ревизий понадобятся JCL, JVCL (ссылки выше) а так же:
jwapi2.2a, SyntEdit, TRichView.v11.0+ScaleRichView.v2.0, TsiLang (letitbit / upload.com.ua)
Немного подправленный FastScript искать в файловом архиве.
Последний раз редактировалось NLObP, 17.10.2016 в 00:02.
RoZ, угу jvcl (3.35) вроде тестовая под дельфи 2009...
Добавлено через 6 минут Такс, на SVN сделал ревизию 38, добавлена поддержка плагинов.
НО!, пока поддержка плагинов не полностью стабильна, глючит если включать плагины до захода в игру, но если после захода то вроде всё пашет как надо.
Да и пока OnConnect и OnDisconnect из плагина не вызываются...
Вобщем смотрим и думаем что ещё добавить ибо счас плагин писать не очень удобно, мало встроенных возможностей.
ЗЫ исходники простейшего плагина так же на SVN...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
Последний раз редактировалось xkor, 06.10.2008 в 02:55.
Причина: Добавлено сообщение
Я так понимаю, палгины в нашем случае это тотже скрипт только уже ввиде скомпиленного dll,
это кулл, тоесть скрипты теперь не будут юзатся для изобретения сложных скриптов ну например как рыбалка это просто замечательно...
воть, но структуры и функции на С++ сам переписывай.., мне пока не до этого...
Как я уже говорил в Дельфи не силён...посему не пинайте сильно если что не так.
Код:
function TPlugin.LoadInfo: Boolean;
begin
...
Info:=String(GetPluginInfo(version));
>>> GetPluginInfo возвращает указатель на строку
и присваивает его нашей глобальной переменной Info.
...
FreeLibrary(hLib);
>>> уничтожаем библиотеку и заодно наш указатель на строку (на самом деле он продолжает висеть в памяти, так как DLL сделанная в Дельфи не освобождает переменные String пока счётчик использований не достигнет 0)
Result:=True;
end;
предлагаю внести небольшое изменение в функции TPlugin.LoadInfo и TPlugin.LoadPlugin
Код:
function TPlugin.LoadInfo: Boolean;
var
tempString:PChar;
begin
...
tempString:=(GetPluginInfo(version));
Info:=tempString;
...
end;
Код:
function TPlugin.LoadPlugin: Boolean;
var
tempString:PChar;
begin
...
tempString:=(GetPluginInfo(version));
Info:=tempString;
...
end;
RoZ, ты не прав, Info:=String(GetPluginInfo(version)) - копирует строку находящуюся по указателю возвращаемому GetPluginInfo в переменную Info так как типы PChar и String в одном месте памяти плохо ужываются ибо разные они....
__________________
Я здесь практически не появляюсь!, Skype - ikskor
RoZ, ты не прав, Info:=String(GetPluginInfo(version)) - копирует строку находящуюся по указателю возвращаемому GetPluginInfo в переменную Info так как типы PChar и String в одном месте памяти плохо ужываются ибо разные они....
Да, ты приводишь PChar к String, уже потом их приравниваешь, но строки в Дельфи очень хитрые люди делали, и они решили сэкономить на памяти и поэтому при присваивании String:=String копируется адрес, так сказать оптимизация во всей красе... http://www.sources.ru/magazine/0804/delphistr.html - вот тут очень подробно расписаны особенности строк в Дельфи.
З.Ы. Почему собственно я это заметил, дело в том что если DLL написана на С++, то при уничтожении библиотеки, по адресу перменной Info пустота...
З.Ы.Ы. Прошу сильно не пинать и показать где я ошибся.
RoZ, дело в том что если преобразовывать String в PChar то получается просто указатель на первый символ строки, а вот если наоборот PChar в String, то надо перед первым символом ещё разместить счётчик ссылок и длинну строки, поэтому строка при этом копируется и получается что если есть переменная p типа PChar, то PChar(String(p))<>p
__________________
Я здесь практически не появляюсь!, Skype - ikskor