Pointer - требуется уточнение

Общие вопросы программирования, алгоритмы и т.п.

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

Re: Pointer - требуется уточнение

Сообщение alexey38 » 01.04.2013 21:11:02

vitaly_l писал(а): модуль работает только на 70-80%

Как Вы определили процент работоспособности модуля?
Откуда Вы взяли модуль? Как Вы оценили качество этого модуля? Кто его писал? Почему он у Вас не работает? Его прежний автор недописал? Он не работал у прежнего автора? Или Вы просто неправильно используете его модуль, или задали не те параметры для компилятора?
Вы с легкостью даете ответы, на глобальные вопросы, на которые эксперт мирового класса не смог бы ответить. Вы скорее всего стали рыть не в ту сторону, поэтому и не получается.

Добавлено спустя 2 минуты 23 секунды:
vitaly_l писал(а):Странно, но я вижу... однако возможно Вы правы, просто мы по разному понимаем понятие видеть...

Без Hex Вы видите не все символы, т.к. блокнот не все символы отображает. В блокноте Вы не отличите пробел от нулевого символа. Не будьте самоуверенны там, где еще очень мало опыта. Вы хотите научится, но бравитесь тем, что видите там, где мастер мирового уровня ничего не увидит.

Добавлено спустя 1 минуту 3 секунды:
vitaly_l писал(а):помимо этого выдаёт две ошибки при идентификации файлов

Это явный признак неправильного использования, либо неверно заданных параметров для компиляции.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Pointer - требуется уточнение

Сообщение vitaly_l » 01.04.2013 21:15:31

alexey38 писал(а):Кроме того, Вы пишите в ссылке "здесь кстати исправлена ошибка из-за которой LWO модуль рушил программу". Вы уверены, что верно исправили?

Нет не уверен, но модуль перестал падать и стал загружать файлы. А без моего исправления - модуль рушит всю программу.

alexey38 писал(а): Вы просто неправильно используете его модуль, или задали не те параметры для компилятора?

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


.

Добавлено спустя 2 минуты 39 секунд:
alexey38 писал(а):т.к. блокнот не все символы отображает. В блокноте Вы не отличите пробел от нулевого символа. Не будьте самоуверенны там, где еще очень мало опыта. Вы хотите научится, но бравитесь тем, что видите там, где мастер мирового уровня ничего не увидит.

Notepad++ - отображает все символы и там каждому символу дано своё название.

alexey38 писал(а):Это явный признак неправильного использования, либо неверно заданных параметров для компиляции.

А вот здесь я точно знаю что ошибка в модуле. Или скорее всего за 11 лет изменилась структура в GLScene/



/
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Pointer - требуется уточнение

Сообщение alexey38 » 01.04.2013 21:22:06

vitaly_l писал(а):В примере дано: ENVL 208; там: 208 - это размер data для ENVL?
В примере дано: NAME 12; там: 12 - это размер data для NAME?
В примере дано: SPAN 16; там: 16 - это размер data для SPAN?
Правильно я понимаю, так идентифицируются размеры data в данных(lwo) бинарных файлах?
Это то что я хотел понять и многократно спрашивал, то что для Вас очевидно для меня раньше идентифицировалось как часть данных и поэтому я не мог понять как оно работает, т.к. мы инопланетяне - не задаём размеры data, а узнаём размеры при чтении файла; равно как и не ставим #0 в конце строки, особенно когда указана её длинна.

Вы задаете вопросы, на которые никто не сможет ответить, поэтому Вы и не получаете ответа. Ошибка заключается в самом вопросе. Вы спрашиваете "NAME 12; там: 12 - это размер data для NAME?", а я откуда знаю. Это может быть что угодно. Может быть это Ваш инопланетянский язык. Вы пытаетесь нам, опытным программистам, доказать, что якобы Ваша цитата из непонятного всем SDK является некой классической формой изложения. Я Вам отвечаю, что это не так. Ваша цитата из SDK мало о чем говорит.

Если Вас не интересует причина неработоспособности чужого модуля, а интересует формат Файла, то Вы вместо того, чтобы воспользоваться советом и открыть файл в hex-viewer, начали упрямиться, упираться и писать самым нехорошим способом его аналог в поле мемо.
Поэтому, Вы вначале определитесь чего хотите. Хотите написать свой вариант hex-viewer - отлично, пишите его, но пишите не коряво, а правильно. А если интересует сам формат, то откройте файл в уже готовом hex-viewer.

Добавлено спустя 1 минуту 5 секунд:
vitaly_l писал(а):Нет не уверен, но модуль перестал падать и стал загружать файлы. А без моего исправления - модуль рушит всю программу.

Это верный признак того, что Вы ошибочно исправили, тем самым нарушили работу всей программы, Вы вместо решения проблемы создали 10 проблем на пустом месте.

Добавлено спустя 2 минуты 25 секунд:
vitaly_l писал(а):другие модули открывающие подобные форматы, при тех же настройках - замечательно работают. Модуль, который я хочу восстановить - писался 11 лет назад, ничего удивительного в том что он падает.

Удивительно, что падает. Тут либо неправильно выставленные настройки компилятора (за 11 лет многое что изменилось, и параметры по умолчанию сейчас совсем другие). Либо формат файла уже не тот, и Вам не нужно использовать этот модуль за базу, либо Вы что-то делаете не то.
То что другие модули работают - мало о чем говорит. Не будьте самоуверенны там, где еще мало опыта.

Добавлено спустя 2 минуты 19 секунд:
vitaly_l писал(а):Notepad++ - отображает все символы и там каждому символу дано своё название.

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

Добавлено спустя 1 минуту 5 секунд:
vitaly_l писал(а):Параллельно я получаю знания, которых у меня раньше не было.

Вы вместо обучения все смешиваете в кучу, и не менее 50% знаний Вам во вред, т.к. Вы запоминаете ошибочное знание.

Добавлено спустя 4 минуты 19 секунд:
vitaly_l писал(а):А вот здесь я точно знаю что ошибка в модуле. Или скорее всего за 11 лет изменилась структура в GLScene/

Опять мания величия? С Вашей болезнью (самоуверенность) Вам противопоказано программирование. Вы должны каждые 15 секунд повторять фразу "Я ничего не знаю, я ничего не понимаю, я надеюсь, что если буду учиться, то когда нибудь я научусь". Вы должны научится сомневаться в каждом своем действии, Вы должна доказывать себе и другим, что Ваши действия не ошибочны. Только тогда Вы сможете писать хорошие программы (быстро и без ошибок). Компьютер не любит самоуверенных, он работает по своей логике, а не по Вашим мыслям.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Pointer - требуется уточнение

Сообщение vitaly_l » 01.04.2013 21:43:42

alexey38 писал(а):Это верный признак того, что Вы ошибочно исправили, тем самым нарушили работу всей программы, Вы вместо решения проблемы создали 10 проблем на пустом месте.

Нет. Я всего лишь добавил: inherited Create; и модуль перестал падать.
alexey38 писал(а):Вы бунтуете.

Ну не бейте меня ногами... я честно смотрел вначале файл в Hex16 редакторе... и именно там я вначале понял как этот файл читать в Notepad++, онако безусловно Notepad++ показывает меньше чем Hex вьювер.
alexey38 писал(а):он макает в краску ботинок и им мажет на холсте

Так дозволено писать картины - только многолетним и уже всеми признанным мастерам Искусств. Сальвадор Дали - один из таких...
alexey38 писал(а):и не менее 50% знаний Вам во вред, т.к. Вы запоминаете ошибочное знание.

Ранее Вы писали: "Как Вы определили процент работоспособности модуля?",
соответственно отвечу Вам Вашим же учением: Как Вы определили что именно 50% знаний мне во вред?



Добавлено спустя 3 минуты 9 секунд:
alexey38 писал(а):Вы спрашиваете "NAME 12; там: 12 - это размер data для NAME?", а я откуда знаю.

Это bormant - знает т.к. он читает чанки этого формата.

.

Добавлено спустя 21 минуту 22 секунды:
alexey38 писал(а):Вы должны каждые 15 секунд повторять фразу

Вы уверены что, чтобы стать хорошим программистом - эту фразу нужно повторять именно каждые 15 секунд?



.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Pointer - требуется уточнение

Сообщение alexey38 » 02.04.2013 04:31:15

vitaly_l писал(а):онако безусловно Notepad++ показывает меньше чем Hex вьювер.

Поэтому смотрим только в Hex, и там легче понять, сколько реально байтов занимает та, или иная конструкция, есть ли там #0 в конце строки, или нет. Это видно там очень хорошо.

Добавлено спустя 7 минут 18 секунд:
vitaly_l писал(а):Вы уверены что, чтобы стать хорошим программистом - эту фразу нужно повторять именно каждые 15 секунд?

Человеческий разум основан на образном мышлении. Современный компьютер и современные языки программирования - это чисто логические машины. Логика - это раздел математики. Математика работает через доказательство и только через доказательство. Образное подобие дает намек в сторону поиска решения, но не дает доказательства правильности такого решения. Поэтому при написании программы нужно как бы регулярно проводить доказательства правильности таких действий.

Учитывая образное мышление и необходимость регулярного доказательства возникает практический совет. Думать не тогда, когда пишите текст программы, думать заранее, тогда можно думать как привычно, не насилуя себя сложными правилами. Когда все продумали, только тогда начинаете писать код, очень внимательно и аккуратно пишите текст, сосредотачиваетесь уже на отдельных строках и операторах, проверяя правильность написания именно их. Тогда реально получается писать программы из нескольких тысяч строк в которых все ошибки выявляются и устраняются только на уровне компиляции. То есть написали, и скомпилировали и программа уже работает на все 100%, а не на 70%.

Добавлено спустя 2 минуты 18 секунд:
vitaly_l писал(а):Это bormant - знает т.к. он читает чанки этого формата.

Отлично, то есть в этом файле есть некая система. Значить вероятность победы очень высока.
Но Вам нужно либо самому в Hex-редакторе все просмотреть в части формата, и не пытаться некрасивыми операторами выводить в мемо (если хотите написать свой hex-вьювер, то пишите, но без привязки к конкретному формату).

Добавлено спустя 5 минут 15 секунд:
vitaly_l писал(а):Нет. Я всего лишь добавил: inherited Create; и модуль перестал падать.

Возможно, что данное исправление было верным. Но Вы не ответили на вопрос, почему этого не было ранее?
Хороший программист вначале подумает на себя, что он сам дурак. А плохой программист на любую ошибку говорит, что это плохой компилятор.

Давайте с начала. Откуда Вы взяли данный модуль 11 летней давности? Для какого компилятора он был предназначен, для Дельфи или для FPC? Прежние авторы что про него говорят, он работал или не работал?
Если в той редакции кода что-то было сделано определенным образом, значит на то были основания. Вначале поймите, почему тогда было написано так, тогда станет ясно, что нужно изменить сегодня.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Pointer - требуется уточнение

Сообщение bormant » 02.04.2013 08:04:56

alexey38, в общем случае всё верно.
значит на то были основания
...или человеку свойственно ошибаться. Касательно конкретно этого иправления, оно завист от ответа на простой вопрос -- должен ли наследник TList в конструкторе Create вызвать inherited Create? В TLWChunkList(TList).Create(...) такого вызова не было.
Аватара пользователя
bormant
постоялец
 
Сообщения: 407
Зарегистрирован: 21.03.2012 11:26:01

Re: Pointer - требуется уточнение

Сообщение Sergei I. Gorelkin » 02.04.2013 09:08:03

Вообще говоря, наследник должен всегда вызывать конструктор предка, равно как и деструктор.
Просто реализация TList в Дельфи ничего не делает при создании, поэтому там нарушение этого правила "сходит с рук".
В FPC TList реализован по-другому, и невыполнение конструктора приводит к падению.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Pointer - требуется уточнение

Сообщение vitaly_l » 02.04.2013 11:58:44

alexey38 писал(а):есть ли там #0 в конце строки, или нет. Это видно там очень хорошо.

Этого там не видно. Точнее невозможно определить: Этот ноль относится к концу строки или началу следующей записи?

bormant писал(а):должен ли наследник TList в конструкторе Create вызвать inherited Create? В TLWChunkList(TList).Create(...) такого вызова не было.

Спасибо добрый bormant.
Sergei I. Gorelkin писал(а):невыполнение конструктора приводит к падению

Спасибо добрый Sergei I. Gorelkin.
alexey38 писал(а):Если в той редакции кода что-то было сделано определенным образом, значит на то были основания. Вначале поймите, почему тогда было написано так, тогда станет ясно, что нужно изменить сегодня.

На этот вопрос наилучшим образом ответили: вопрос bormant'а и безапелляционный ответ Sergei I. Gorelkin'a.

Когда-то на планете Земля жил Академик Козырев. В том числе, он занимался: Зеркалами Козырева. Он умер, а его зеркала изучают до сих пор. Суть в том что, благодаря его зеркалам выяснили, что люди могут телепатически общаться на больших расстояниях. Но когда стали изучать, выяснилось что, люди за несколько дней до самих событий - предсказывали события. Это доказано экспериментально, в частности: Проводились опыты по передаче графических символов. И получилось так что, человек, который являлся приёмником... Внимание: За несколько дней до событий - знал и рисовал знаки, которые ему будет передавать человек, который играл роль передатчика. Для чистоты эксперимента и исключения погрешностей: символы выбирались путём вытаскивания из колоды. Тобишь: никто не мог знать, какие из 777 символов вынет передатчик. А приёмник, умудрялся за несколько дней до событий - нарисовать картинки из будущего. Эксперимент проводили десятки Академиков. Это также подтвердилось и в исследованиях Бехтеревой. Согласно которым - томографы фиксируют активность мозга, при решении задачи - задолго до того как человек принимает решение, например: Нажать или не нажать кнопку? У тех кто это видел своими глазами - волосы стояли дыбом. Этого не может объяснить никто.

alexey38 писал(а):Человеческий разум основан на образном мышлении.
Это ошибочное мнение и оно не Ваше, т.к. ни Вы, и ни тот кто придумал этот мем(англ. meme) - не знали на чём основан человеческий разум.

Касаемо модуля :roll: ; я каждый 15 секунд, повторял всю ночь: "Я ничего не знаю, я ничего не понимаю, я надеюсь, что если буду учиться, то когда нибудь я научусь" и пришёл к простому выводу - нельзя программировать так, как запрограммирован этот модуль. И тогда весь модуль уместился в одну простую и понятную мне функцию.

Спасибо всем - это было весело и познавательно :cry: .
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Pointer - требуется уточнение

Сообщение alexey38 » 02.04.2013 15:15:33

Sergei I. Gorelkin писал(а):Вообще говоря, наследник должен всегда вызывать конструктор предка, равно как и деструктор.
Просто реализация TList в Дельфи ничего не делает при создании, поэтому там нарушение этого правила "сходит с рук".
В FPC TList реализован по-другому, и невыполнение конструктора приводит к падению.

Это пример того, что при переводе некого старого текста программы на новую платформу нужно вначале подумать на предмет того, чем отличалась старая платформа от новой. Если не знаете про отличие платформ, то желательно найти тот компилятор и новый компилятор, и сравнить поведение на старой и новой платформе. Если код был под Дельфи-7 (6, 5 и т.п.), то не так сложно их найти. Может оказаться, что подобных фишек было очень много.

Добавлено спустя 24 секунды:
vitaly_l писал(а):И тогда весь модуль уместился в одну простую и понятную мне функцию.

Отлично, я рад.

Добавлено спустя 1 минуту 21 секунду:
vitaly_l писал(а):Этого там не видно. Точнее невозможно определить: Этот ноль относится к концу строки или началу следующей записи?

Это будет понятно, когда путем анализа посмотрите несколько похожих конструкций. Метод такой же, как и контрразведка расшифровывает вражеские шифры.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Пред.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 35

Рейтинг@Mail.ru
cron