Форум Magic Team


 

Новости:

01.01.2017: Релиз испанской версии Naruto - Ninja Council (GBA)
02.12.2016: Добавлена документация по Kruptar 7
09.10.2015: Обновление перевода игры Battletoads (NES) [версия 1.3]
22.01.2015: Kruptar Open Source
18.10.2014: Релиз обновлённой русской версии Castlevania - Dawn of Sorrow (GBA) от Owls Group
01.05.2014: Релиз русской версии Taiyou no Yuusha Firebird (NES)
24.06.2012: Добавлена доработанная документация и инструкция
26.05.2012: Обновление ORITON [версия 2.050]
11.05.2012: Обновление ORITON [версия 2.048]
11.03.2012: Обновление Kruptar 7 [версия 7.1.1.17]
29.01.2012: Обновление LZ77Restructor 2 [версия 1.02]
01.01.2012: Релиз русской версии Drill Dozer (GBA)

Подробнее на страничке новостей.
Ознакомьтесь с правилами нашего форума.


  • Форум
  • Поиск
  • Вход
  • Регистрация

  • Форум Magic Team »
  • Разное »
  • Программирование »
  • Kruptar
« предыдущая тема следующая тема »
  • Печать
Страницы: 1 ... 8 9 [10] 11   Вниз

Автор Тема: Kruptar  (Прочитано 192901 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Oraculum

  • Magic Team
  • Сообщений: 534
  • Репутация: +11/-4
  • oraculum[гав-гав]ro.ru
    • Просмотр профиля
Kruptar
« Ответ #225 : 26 Октября 2013, 15:42:28 »
При компиляции любого плагина в Delphi XE2 в Круптаре часто выскакивает "Invalid pointer operation".
Из Needs.pas:
Код: Delphi [Выделить]

destructor TTextStrings.Done;
var
 N: PTextString;
begin
 while Root <> NIL do
 begin
  N := Root^.Next;
  Root^.Str := '';
  Dispose(Root);
  Root := N;
 end;
 Count := 0;
 Cur := NIL;
end;

Поменял из интереса "Root <> NIL" на "Root^.Next <> NIL", ошибка не выскакивает, но, естественно, утекает память.
Почему так?  *SCRATCH*

Оффлайн Hatsuyuki

  • Magic Team
  • Сообщений: 1261
  • Репутация: +19/-5
    • Просмотр профиля
Kruptar
« Ответ #226 : 26 Октября 2013, 16:33:31 »
Тут не про эту ситуацию?
Цитата: http://delphi.about.com/od/objectpascalide/l/aa103003b.htm
The "Invalid pointer operation" exception only occurs when a module attempts to free the last allocated block of another module's free list, and, failing to recognize an invalid element, attempts to merge the free block with (what seems to be) a marker element (or might simply be garbage), which causes the error.
Otium sine litteris mors est et hominis vivi sepultura.

Оффлайн greengh0st

  • Magic Team
  • Сообщений: 696
  • Репутация: +7/-1
  • Мы лучшие среди худших и худшие среди лучших
    • Просмотр профиля
Kruptar
« Ответ #227 : 26 Октября 2013, 16:45:13 »
Сложности с написанием плагина? Блин я бы помог если бы хоть немного шарил((

Оффлайн Hatsuyuki

  • Magic Team
  • Сообщений: 1261
  • Репутация: +19/-5
    • Просмотр профиля
Kruptar
« Ответ #228 : 26 Октября 2013, 16:55:34 »
Может, ещё это поможет:
Цитата: http://edn.embarcadero.com/article/33416#28ChangedBehaviour
From the above notes it should be clear that the new memory manager is less tolerant of heap corruption bugs caused by the application. The upside to this is that this should make it easier to catch bugs during the development cycle. The downside being that it could make life more frustrating for customers having to use an application containing such bugs.

The old memory manager that was used by Delphi 2005 (and earlier Delphi versions) is available on CodeCentral in the form of a replacement memory manager module. This module may be useful in comparing the performance of the old and new memory managers, and can also be used in cases where the behaviour of the old memory manager is desired above the behavior of the new one.
Можно старый менеджер памяти попробовать, если не хочется возиться с поиском возможного бага ::)

Цитата: greengh0st от 26 Октября 2013, 16:45:13
Сложности с написанием плагина? Блин я бы помог если бы хоть немного шарил((
После более внимательного прочтения поста Оракулума мне кажется, что сложности с миграцией на новую версию ;)
Otium sine litteris mors est et hominis vivi sepultura.

Оффлайн Oraculum

  • Magic Team
  • Сообщений: 534
  • Репутация: +11/-4
  • oraculum[гав-гав]ro.ru
    • Просмотр профиля
Kruptar
« Ответ #229 : 26 Октября 2013, 17:26:36 »
Цитата: Hatsuyuki от 26 Октября 2013, 16:55:34
From the above notes it should be clear that the new memory manager is less tolerant of heap corruption bugs caused by the application.
Склоняюсь более к этому, т.к.
Цитата: Oraculum от 26 Октября 2013, 15:42:28
Поменял из интереса "Root <> NIL" на "Root^.Next <> NIL", ошибка не выскакивает, но, естественно, утекает память.

Цитата: Hatsuyuki от 26 Октября 2013, 16:55:34
Можно старый менеджер памяти попробовать, если не хочется возиться с поиском возможного бага ::)
Не хочу возиться с пробованием старого менеджера. :D

[Дата добавления: 26 Октября 2013, 17:38:16]
Дружно проверяем код на возможные ошибки :) :
Код: Delphi [Выделить]
PTextStrings = ^TTextStrings;
 TTextStrings = object
  Root, Cur: PTextString;
  Count: LongInt;
  constructor Init;
  function Add: PTextString;
  function Get(I: LongInt): PTextString;
  destructor Done;
 end;

constructor TTextStrings.Init;
begin
 Root := NIL;
 Cur := NIL;
 Count := 0;
end;

function TTextStrings.Add: PTextString;
begin
 New(Result);
 If Root = NIL then Root := Result Else Cur^.Next := Result;
 Cur := Result;
 Inc(Count);
 Result^.Str := '';
 Result^.Next := NIL;
end;

destructor TTextStrings.Done;
var
 N: PTextString;
begin
 while Root <> NIL do
 begin
  N := Root^.Next;
  Root^.Str := '';
  Dispose(Root);
  Root := N;
 end;
 Count := 0;
 Cur := NIL;
end;

Оффлайн Hatsuyuki

  • Magic Team
  • Сообщений: 1261
  • Репутация: +19/-5
    • Просмотр профиля
Kruptar
« Ответ #230 : 26 Октября 2013, 17:40:25 »
После ещё более внимательного чтения понял, что дело, похоже, не в коде Оракулума :-[
Цитата: Oraculum от 26 Октября 2013, 15:42:28
любого плагина
И сам Круптар, и стандартные плагины написаны Джинни. Тугодум я ;D

[Дата добавления: 26 Октября 2013, 17:42:21]
Цитата: Oraculum от 26 Октября 2013, 17:26:36
Дружно проверяем код на возможные ошибки
А ошибка точно локализована там? Может, она в исходниках Круптара, которые всем подряд не дают :P
Otium sine litteris mors est et hominis vivi sepultura.

Оффлайн Oraculum

  • Magic Team
  • Сообщений: 534
  • Репутация: +11/-4
  • oraculum[гав-гав]ro.ru
    • Просмотр профиля
Kruptar
« Ответ #231 : 26 Октября 2013, 18:01:06 »
Цитата: Hatsuyuki от 26 Октября 2013, 17:40:25
Цитата: Oraculum от 26 Октября 2013, 17:26:36
Дружно проверяем код на возможные ошибки
А ошибка точно локализована там? Может, она в исходниках Круптара, которые всем подряд не дают :P
Я и не писал, что она там. Я написал: "Дружно проверяем код на возможные ошибки".

Оффлайн greengh0st

  • Magic Team
  • Сообщений: 696
  • Репутация: +7/-1
  • Мы лучшие среди худших и худшие среди лучших
    • Просмотр профиля
Kruptar
« Ответ #232 : 26 Октября 2013, 18:36:58 »
И чего, чего, чего готов!!!!))))????

Оффлайн German

  • Пользователь
  • Сообщений: 367
  • Репутация: +1/-0
    • Просмотр профиля
Kruptar
« Ответ #233 : 26 Октября 2013, 19:33:09 »
Просмотрел. Ошибок в синтаксисе не нашёл. Так что ошибка наверное где-то в логике, но я не вижу  :)

Оффлайн Hatsuyuki

  • Magic Team
  • Сообщений: 1261
  • Репутация: +19/-5
    • Просмотр профиля
Kruptar
« Ответ #234 : 26 Октября 2013, 22:18:14 »
Может, проблема в том, что делается Dispose конечного элемента в тот момент, когда на него ещё указывает Cur? Может, так делать запретили, чтобы было меньше ошибок?
Otium sine litteris mors est et hominis vivi sepultura.

Оффлайн Oraculum

  • Magic Team
  • Сообщений: 534
  • Репутация: +11/-4
  • oraculum[гав-гав]ro.ru
    • Просмотр профиля
Kruptar
« Ответ #235 : 26 Октября 2013, 22:30:54 »
Цитата: Hatsuyuki от 26 Октября 2013, 22:18:14
Может, проблема в том, что делается Dispose конечного элемента в тот момент, когда на него ещё указывает Cur? Может, так делать запретили, чтобы было меньше ошибок?
Не помогло.

Качаю Delphi 7. *F_SMOKE*

Оффлайн Hatsuyuki

  • Magic Team
  • Сообщений: 1261
  • Репутация: +19/-5
    • Просмотр профиля
Kruptar
« Ответ #236 : 27 Октября 2013, 00:54:29 »
Жаль, что не помогло. Больше в приведённом коде ничего усмотреть не могу. Да и не мог Джинни накосячить в таком простом месте, наверное. А ты и Круптар пересобирал в новой версии или только плагины? :)
Otium sine litteris mors est et hominis vivi sepultura.

Оффлайн Oraculum

  • Magic Team
  • Сообщений: 534
  • Репутация: +11/-4
  • oraculum[гав-гав]ro.ru
    • Просмотр профиля
Kruptar
« Ответ #237 : 27 Октября 2013, 13:34:35 »
Цитата: Hatsuyuki от 27 Октября 2013, 00:54:29
А ты и Круптар пересобирал в новой версии или только плагины? :)
Исходников Круптара у меня нет. Только плагин NULL и переписанный мной под FM3 плагин NULL.

Оффлайн Hatsuyuki

  • Magic Team
  • Сообщений: 1261
  • Репутация: +19/-5
    • Просмотр профиля
Kruptar
« Ответ #238 : 27 Октября 2013, 15:51:04 »
А библиотеки, собранные в новых версиях, часто совместимы с приложениями, собранными в старых? Я с такими ситуациями не сталкивался, поэтому интересно узнать на будущее :)

Думал, что это Трикстер согласился с ФМ3 помочь. Всё оказалось гораздо проще. Закабалили нас ;D
Otium sine litteris mors est et hominis vivi sepultura.

Оффлайн greengh0st

  • Magic Team
  • Сообщений: 696
  • Репутация: +7/-1
  • Мы лучшие среди худших и худшие среди лучших
    • Просмотр профиля
Kruptar
« Ответ #239 : 27 Октября 2013, 23:51:14 »
Не он вроде не умеет писать плагины. Хотя я могу сильно ошибаться, но он редко появляется, а какой хакер)))

Оффлайн Джинни

  • Администратор
  • Сообщений: 1339
  • Репутация: +666/-0
  • Metamorphosis
    • Просмотр профиля
    • Magic Team
Kruptar
« Ответ #240 : 28 Октября 2013, 09:57:46 »
Лучше взять старый менеджер памяти, я думаю.

Оффлайн Hatsuyuki

  • Magic Team
  • Сообщений: 1261
  • Репутация: +19/-5
    • Просмотр профиля
Kruptar
« Ответ #241 : 28 Октября 2013, 15:33:28 »
Цитата: greengh0st от 27 Октября 2013, 23:51:14
Не он вроде не умеет писать плагины. Хотя я могу сильно ошибаться, но он редко появляется, а какой хакер)))
Ну, библиотеку на Delphi Трикстер в состоянии написать, полагаю. Именно Круптар он, может, и не разбирал :)

Джинни, очень удачно в Круптаре используется моноширинный шрифт. Сейчас выравниваю пробелами и не надо каждый скрин проверять. Сам бы, наверное, долго до такого додумывался *F_COOL*



Может быть, у тебя уже спрашивали про следующую возможность. В Notepad++, например, отображается количество выделенных байтов. По-моему, было бы здорово, если бы в Круптаре отображалось количество выделенных символов. Если бы развитие Круптара продолжилось, то эта фича не была бы добавлена из-за:
а) сильного влияния на быстродействие?
б) сложности имплементации?
в) вредности? ;D

Otium sine litteris mors est et hominis vivi sepultura.

Оффлайн greengh0st

  • Magic Team
  • Сообщений: 696
  • Репутация: +7/-1
  • Мы лучшие среди худших и худшие среди лучших
    • Просмотр профиля
Kruptar
« Ответ #242 : 28 Октября 2013, 17:57:21 »
Да сам пользуюсь таким блокнотом и там это удобно очень.

Оффлайн Hatsuyuki

  • Magic Team
  • Сообщений: 1261
  • Репутация: +19/-5
    • Просмотр профиля
Kruptar
« Ответ #243 : 28 Октября 2013, 21:14:14 »
Прочитал, что в Notepad++ 6.4.4 изменили способ подсчёта. Те, кому нужны символы, а не байты, могут обновиться ;)
Цитата: http://notepad-plus-plus.org/download/v6.4.4.html
Change behaviour: statusbar reports the number of selected characters instead of number of bytes now.

[Дата добавления: 28 Октября 2013, 21:19:16]
Вообще, в Notepad++ можно вывести всё сразу, но для этого нужно каждый раз вызывать отдельное окно, что не так удобно: http://sourceforge.net/apps/mediawiki/notepad-plus/index.php?title=Statistics
Otium sine litteris mors est et hominis vivi sepultura.

Оффлайн greengh0st

  • Magic Team
  • Сообщений: 696
  • Репутация: +7/-1
  • Мы лучшие среди худших и худшие среди лучших
    • Просмотр профиля
Kruptar
« Ответ #244 : 29 Октября 2013, 10:57:03 »
И там не совсем удачный плагин орфографии.

Оффлайн Slam

  • Новичок
  • Сообщений: 5
  • Репутация: +0/-0
    • Просмотр профиля
Kruptar
« Ответ #245 : 02 Июля 2015, 17:27:34 »
Всем доброго времени суток. Начал писать плагин, для перевода, и появилась пара вопросов. Как получить символ из загруженной строки в плагине (именно символ который в текстовом файле, а не его выходной код из таблицы). И как записывать коды полученные из внешнего файла в выходной поток. Просто документации на Круптар почти нет, поэтому и вопросы. Если не сложно подскажите, пожалуйста.

Оффлайн Джинни

  • Администратор
  • Сообщений: 1339
  • Репутация: +666/-0
  • Metamorphosis
    • Просмотр профиля
    • Magic Team
Kruptar
« Ответ #246 : 07 Июля 2015, 22:35:00 »
В плагине нет доступа к символам из таблицы. Можно декодировать исходные данные представив одни коды другими кодами. Потом программа транслирует коды в читабельный текст с помощью таблиц.
Как писать плагины, подробно рассказано здесь:
http://magicteam.net/?page=documents&show=Написание плагинов для Kruptar 7

Оффлайн Slam

  • Новичок
  • Сообщений: 5
  • Репутация: +0/-0
    • Просмотр профиля
Kruptar
« Ответ #247 : 09 Июля 2015, 20:37:16 »
Я уже понял, что нельзя получать символы в плагине, но спасибо за ответ. У меня теперь другая проблема, более труднорешаемая. Нужно немного изменить SeekSame, чтобы поиск велся не только одинаковых строк, но и частей строк (например одна строка "мама мыла раму", а вторая "мыла раму"). И по аналогии с оригинальным SeekSame строка не записывалась бы отдельно, а  высчитывался бы поитнер на вторую строку = длинна строки 1 минус длинна строки 2 плюс адрес начала строки 1. Решил изменить код Круптара и столкнулся с трудностями. Версия 7.2.1.30 компилируется, но там какая то беда с поинтерами, возможно из-за ошибки в строке procedure PointersSortActionUpdate(Sender: TObject), скрин в аттаче (1). А версия 7.1.1.24 не компилируется из-за отсутствия функции WideFileNameToAnsi, в каком то модуле, и еще пара ошибок в аттаче (2,3). Помогите, пожалуйста, исправить ошибки и скомпилировать, или может быть есть исходники, которые можно спокойно компилировать, наример Версий 7.1.1.10-7.1.1.17.

Оффлайн Джинни

  • Администратор
  • Сообщений: 1339
  • Репутация: +666/-0
  • Metamorphosis
    • Просмотр профиля
    • Magic Team
Kruptar
« Ответ #248 : 09 Июля 2015, 22:07:32 »
Репозиторий обновлён. Теперь собирается на Delphi 7 без проблем. Нужно открыть Kruptar7.bpg собрать и установить компоненты TntUnicodeControls_D7, MyLib, KruptarComponentsD7, LocalizerControls.
Сборка на Delphi XE7 неправильно работает из-за нового формата строк, я думаю.

Оффлайн Slam

  • Новичок
  • Сообщений: 5
  • Репутация: +0/-0
    • Просмотр профиля
Kruptar
« Ответ #249 : 09 Июля 2015, 22:55:13 »
Теперь компилируется нормально, спасибо большое. Только вот Круптар в этой версии после пересчета строки записывает не по порядку, а в разнобой (адрес присваивается странно). Так и должно быть да?

  • Печать
Страницы: 1 ... 8 9 [10] 11   Вверх
« предыдущая тема следующая тема »
  • Форум Magic Team »
  • Разное »
  • Программирование »
  • Kruptar
 

  • SMF 2.0.12 | SMF © 2011, Simple Machines
  • XHTML
  • RSS
  • Мобильная версия

  • GreenUP by Neekiinh0.

Размер занимаемой памяти: 2 мегабайта.
Страница сгенерирована за 0.074 секунд. Запросов: 74.