Новости:

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)

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

Главное меню

Помощь по Delphi

Автор BlueHairLady, 27 февраля 2009, 11:09:59

« назад - далее »

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

Guyver

О-ё-ё-й... Сейчас кажется у кого-то карма начнёт уменьшаться ;о)))

Zalbard

Оу? Всё, молчу тогда.)

BlueHairLady

Долго тупо смотрела в окно...

Цитата: Guyver от 25 марта 2009, 13:51:40
Теперь прога работает, но у меня в Висте она не помещается в своё окно...
Висты у меня нет. И если честно, я её даже никогда не видела. К сожалению, здесь я ничего придумать не способна.

Цитата: Guyver от 25 марта 2009, 13:51:40
Потом, например размер файла 10 h... когда я ставлю пределы изменяемых величин на самое последнее значение от 10 h до 10 h, то возникает Range check Error и прога виснет... Надо обработать такую исключительную ситуацию...

Эта же ошибка возникает тогда, когда файл изменяется весь сразу... От самого начала до самого конца... Но не в первый, а во второй раз - когда делаешь то же самое...
Пытала программу долго и упорно. Ну не возникает у меня здесь никаких ошибок! Не знаю почему, ну нету у меня зависаний! Нету!! Ну не могу я ничего с этим поделать!

Цитата: Guyver от 25 марта 2009, 13:54:37
В общем, пока прога практически не работает
Уже сколько над программой изголяюсь - и ни одной ошибки! Ну дайте мне щелбан!

Быть может, это из-за того, что я там, где нужно вставлять значение типа Byte, использовала значения типа Integer, рассчитывая на то, что преобразование произойдёт автоматически? А оно происходит не во всех операционных системах...

Цитата: Guyver от 25 марта 2009, 14:20:40
Хекс компонент в самом низу - как я понял, он останавливается на последнем байте, который был изменён?
Имеешь в виду текстовые поля, где выводится образец хекс-кода из файла? В них показывается начало участка, который был изменён, анализируется или просто выбран на диаграмме. Я ведь вроде везде там проставила небольшой поясняющий текст... А длинные объяснения к компонентам там оставлять просто негде.

Цитата: Guyver от 25 марта 2009, 14:20:40
Может лучше сделать в нём показ всего диапазона изменённых байт со скроллбаром вертикальным?
Неплохая идея. Но для этого нужно переписать значительную часть кода, а у меня сейчас мало времени. Возможно, когда-нибудь в будущем.

Цитата: Guyver от 25 марта 2009, 14:20:40
А можно 2 окна таких - до и после...
Снова не поняла... У меня ведь там две строки: верхняя показывает первоначальное состояние данного участка, а нижняя - в данный момент времени. Как раз и сделала это для того, чтобы можно было изменения отслеживать. Чувствуется, недостаточно пояснительного текста, но куда его там пихать? Может, попытаться сделать какие-нибудь контекстные подсказки?


Guyver, как я поняла, ты все испытания в Висте проводил? Похоже, мой корруптор для неё не подходит. Пусть тестирование будет открытым: http://bhlady.narod.ru/other/MyNewCorruptor.7z (это чуть оптимизированная версия, чем я Guyver-у отправила, но по существу то же самое).
Zalbard, если поможешь, разрешу сводить себя в пиццерию. (Когда я в последний раз пиццу ела? Всего несколько раз за всю жизнь! Украдкой!)
Надеюсь на возвращение, но сейчас меня нет.

Griever

Цитата: BlueHairLady от 25 марта 2009, 19:33:30
Цитата: Guyver от 25 марта 2009, 13:51:40
Потом, например размер файла 10 h... когда я ставлю пределы изменяемых величин на самое последнее значение от 10 h до 10 h, то возникает Range check Error и прога виснет... Надо обработать такую исключительную ситуацию...
Эта же ошибка возникает тогда, когда файл изменяется весь сразу... От самого начала до самого конца... Но не в первый, а во второй раз - когда делаешь то же самое...
Пытала программу долго и упорно. Ну не возникает у меня здесь никаких ошибок! Не знаю почему, ну нету у меня зависаний! Нету!! Ну не могу я ничего с этим поделать!
?
ЦитироватьНебольшой выигрыш даёт снятие флажков с Range checking и Overflow checking в опциях компилятора (правда они по умолчанию и так должны быть сняты). Снятие флажков с I/O checking и со всех пунктов в группе Debugging не уменьшило размер скомпилированной программы ни на байт.

ЦитироватьZalbard, если поможешь, разрешу сводить себя в пиццерию.


BlueHairLady

Griever, не совсем понимаю, что ты имеешь в виду. Думаешь, что это из-за того, что я в настройках компилятора сняла контроль за всевозможными переполнениями? Свои тестирования я также проводила при данных отключённых опциях, уверена, за границы там ничего не выходит. Ведь не является же ошибкой, к примеру, такой код:

var i: Integer;
     bt: Byte;
----------------
i := 5;   //т.е. значение от 0 до 255
bt := i;
Надеюсь на возвращение, но сейчас меня нет.

BlueHairLady

Кстати, насчёт той злополучной библиотеки qtintf70.dll . Перекопала из-за неё весь код программы, но всё же нашла то, что её вызывает. И это что-то называется QControls. Дети, запомните, никогда не нужно произносить это плохое слово! Самое интересное, что после лёгкой правки кода размер программы сразу же сократился на 30%! LOL


Оказывается, что это целая наука: сделать так, чтобы программа корректно отображалась в различных ОС. Да что там в различных системах, даже при различных настройках одной и той же системы - и то целая проблема. Более того, в зависимости от настроек даже ошибки в работе могут возникать или не возникать! *F_INSANE*
Надеюсь на возвращение, но сейчас меня нет.

BlueHairLady

P.S.
Ой, снова нельзя сообщение отредактировать.
Прошлое высказывание касалось не последнего затруднения, а то как я до этого искала ошибку с qtintf70.dll, выравнивала диаграммы и т.п. Делала изменения в коде, перезагружала компьютер в другую ОС (в смысле, тоже XP Home, но с другими настройками) и смотрела на результат. И так десятки раз! Ужас!! В одной XP Home есть ошибка, в другой XP Home нет. И не совсем понятно, почему. Ну вот, снова болтаю без дела. *MALVINA3*
Надеюсь на возвращение, но сейчас меня нет.

Zalbard

Цитата: BlueHairLady от 25 марта 2009, 19:33:30Zalbard, если поможешь, разрешу сводить себя в пиццерию. (Когда я в последний раз пиццу ела? Всего несколько раз за всю жизнь! Украдкой!)
Всё, договорились. *FRIENDS* Как буду в Гонолулу, сразу откормлю тебя пиццей. А пока:

Всё, больше оффтопить не буду. По теме:
Можешь ещё Сравнилку прямо в Ромкор добавить, будет ещё удобнее. :)

BlueHairLady

Цитата: Zalbard от 25 марта 2009, 22:39:54Можешь ещё Сравнилку прямо в Ромкор добавить, будет ещё удобнее.
Не вижу смысла. Программы слишком разные. Только путаница будет.

Ах да, чуть не забыла.
Цитата: Guyver от 25 марта 2009, 14:20:40
Работать только с каждым Х-ым байтом... Например со вторым, а прога-то начинает работу с первого байта в диапазоне ;о) Парадокс получается ;о))) Надо как-то по-другому написать?
Такой эффект и задуман. Первый байт изменяемого участка обрабатывается абсолютно всегда, а дальше - через указанный интервал. По-моему, довольно логично. Разве что немного уточнить формулировку? Если кто-то может более точно определить суть той или иной команды, я непременно подправлю соответсвующую надпись.



Бегло, поверхностно пообщалась с парой человек. Всё же похоже, что все вышеуказанные проблемы - именно из-за нестыковки моей программы с Вистой. Увы, но похоже Ромкор с Вистой не сочетается. Это программа для XP, там проблем быть не должно.
Надеюсь на возвращение, но сейчас меня нет.

Guyver

Это не отмазка - давай делай нормально чтоб было!!!! ;о) Я вот могу поспорить, что прога криво идёт не только в одной Висте ;о))) И я готов это доказать!!!

Если что - шли исходники мне - я их к Висте попробую приучить, и с размерами окон лучше будет - достаточно изменить их в Висте, а на ХР они останутся такими же... У меня так было...

Джинни

Чтобы с окнами не было проблем в разных виндоус-системах нужно использовать свойства Align, Anchors, ClientWidth, ClientHeight.

BlueHairLady

Для большей понятности решила ко всем элементам добавить небольшие всплывающие подсказки (свойство Hint). Естественно, отключаемые. Но уж слишком быстро они исчезают, за 5 секунд не все из них успеваешь целиком прочесть. Скажите пожалуйста, а в Delphi7 есть возможность сделать так, чтобы они отображались большее время? *F_QUESTION* Скажем, секунд 20?
Надеюсь на возвращение, но сейчас меня нет.

Guyver

Свойство - HintPause
Затрагиваемые объекты   - TApplication
Назначение - Свойство HintPause определяет период времени, которое должно пройти перед отображением подсказки.
Объявление - property HintPause: Integer;
Пример синтаксиса

procedure TForm1.FormCreate(Sender: TObject);
begin
// Установить HintHidePause в 5 секунд
   Application.HintHidePause := 5000;
// Установить HintPause в 1 секунду
   Application.HintPause := 1000;
end;

Описание - Когда мышь находится над компонентом, который будет отображать подсказку, перед собственно отображением возникает небольшая пауза. Продолжительность паузы определяется свойством HintPause и измеряется в миллисекундах. По умолчанию пауза равна 800 миллисекунд. Подсказки доступны через свойство Hint различных компрнентов.

Guyver

П.С. теперь в Висте всё работает, кроме того, что программа не влазит в окно по ширине и длине - появились вертикальный и горизонтальный скроллбары...

BlueHairLady

Теперь всё работает даже в Висте! *F_GLASSES* (Вернее, должно работать, самая последняя редакция ещё не проверялась). Забавно пытаться запустить своё приложение в ОС, о которой ты совершенно ничего не знаешь.:D Спасибо Guyver-у за то, что послужил моими глазами. *FRIENDS* (Вот где бы ещё найти парочку человек, чтобы один работал моими руками, а второй - моей головой. ^,^)


Если это кому-то интересно, то сбои происходили вследствие того, что XP и Vista немного по-разному работают с памятью, отведённой различным динамическим массивам. Виста не всегда "понимает", что может существовать пара ячеек, необходимых просто для чёткой структуры, без конкретного содержания.

Для правильного же определения размеров формы в различных ОС я использовала выражения вида
var d: Integer;
.............
d := ClientOrigin.X-Left;
Constraints.MaxWidth := 646+d*2;
Constraints.MinWidth := Constraints.MaxWidth;
Constraints.MinHeight := 625+ClientOrigin.Y-Top+d;



Информация для тех, кто успел скачать бетку: она хромает, лучше стерите.
Надеюсь на возвращение, но сейчас меня нет.

BlueHairLady

Ну теперь уж точно всё! Все мелкие поправки и дополнения, которые хотела сделать, внесла. Краткую инструкцию об особенностях программы написала. Барабанная дробь: http://bhlady.narod.ru/programs/romcor.htm .

Надеюсь, что из-за небольшой спешки в последние дни нигде не сглупила, за лишнюю проверку буду благодарна.

Есть идеи по дальнейшему улучшению, но для этого нужно серьёзно модернизировать код. А у меня сейчас на это нет больше времени. Так что возможно..., быть может..., когда-нибудь..., мне бы самой хотелось..., но не сейчас.
Надеюсь на возвращение, но сейчас меня нет.

gegmopo3

Скажите, а  как можно присвоить свою таблицу символов?
inttostr?
и как выделить, значения до '=', чтобы читал, как хекс и присваивал ему букву или слово?

Джинни

В цикле обрезать, ну или с помощью Pos и Copy.

gegmopo3

ТАк-c, с этим понятно, а чтобы если увидет, например значение '$4056=You', чтобы инк равный $4056 выводит вданое слово, конечно, можно самому сделать, но мне интерено, как сделать, чтобы он из таблы это читал...

Джинни

? загрузить таблицу в память и читать.

gegmopo3

Все, разобрался=)
пришлось функцию добавить hextoint, чтобы из тоблы присваивалось=)
Пока конечно чуть не корректно, там иногда символы вылазят не те, но это поправимо)
Он пока знаки припенания и пробел не ставит LOL

gegmopo3

все, норм ставит, только скорость подкашивает+))))

Oraculum


gegmopo3

An unknown building.
 A Sorcerer's Guild.  You feel eyes watching you.
 A Guild of the Knights of the Holy Order of Separation.  Clanks and bangs emerge from within.
 An Archer's Guild.
 A creepy Necromancer's Guild.

вот такой кусок он 5-10 секунт выдерает=)

0001=An
0002=unknown
0003=building
...
CD88=version?
CD89=errors?
CD8A=differences?
может из-за такого кол-ва долго мутит?
Oraculum
да для игрухи одной=)
----------------------
код:
tbl[hextoint(copy(form1.memo1.lines.strings,1,4))]:=copy(form1.memo1.lines.strings,6,length(form1.memo1.lines.strings)-6);
..........
s:=tbl[swap(buf)]
.....
form4.memo1.SelText:=s;

Джинни