Вверх ↑
Этот топик читают: Гость
Ответов: 15
Рейтинг: 0
#1: 2010-04-24 17:09:45 ЛС | профиль | цитата
Дело не в том что имеется острая необходимость в ниже описанной программе(ниже опишу)
но больше наверно в целях практического обучения. Оно лучше идет на практике когда что-то творишь
с ошибками или без(исправляя ошибки) а не просто от чтения документаций.
Хотя мне очень понравились наглядные примеры в HiAsm c пояснениями в папке tutorial,
так же конечно накачал и пересмотрел видеоуроки.
К сожалению ничего нет по работе с файлами и атрибутами файлов.

Я сразу же вошел в тупик. Вот пример там два варианта
coms.sha
вызова файла(оба файла и нужно но пока испробую разные варианты) и определения его размера - вывод размера не работает.
Так же вопрос нужно ли в память заносить имя файла или даже полный его путь?
Чтобы было более ясно изложу смысл задуманной программы:

Итак задача программы.
1. выбор двух файлов...
2. определение их размера
3. сравнение размера
4. в случае если размер не совпадает выводиться соответствующая надпись
и не активна кнопка которая продолжает работу программы...
Но можно снова вернуться к выбору файлов...

5.(в случае если размер совпадает) пользователь может нажать кнопку
побайтового сравнения двух файлов.
6. Программа в строку выводит адрес байта в HEX(шестнадцатеричном) формате,
в этой же строке разницу т.е. байт из первого файла и байт из второго файла...
(возможно тоже подумаю и сделаю возможность переключения chr - dec - hex - для визуального просмотра
числовых значений в программе. если с этим не будет большой сложности)

7. Далее всё это можно сохранить в лог.
!Либо в результате сравнения программа объявит что файлы обсалютно идентичны.

Далее планирую в самой программе возможность сразу же изменить по адресу тот
или иной байт. Но для начало хочу хотя бы реализовать сравнение и нахождение различий.
Почему байт. Вот тут тоже еще надо подумать я по другому пока не представляю
сравнивать то по байтам необходимо.
А ведь в файлах могут быть и word и четырех байтовые различия.
Мне вот интересно как допустим в артмоней программа определяет в памяти
байтовое или четырех байтовое значение. Тоже конечно бывает не точно.
Вообще то мысль есть, если подряд не совпадают байты программа допустим всёравно выводит их в строчку но
к примеру, когда байты идет подряд, сделать возможность опять же (в этой таблице) для визуального просмотра изменить(выпадающий скрол варианты выбора в зависимости от количества следующих подряд идущих байтов)
например однобайтовое значение на двух байтовое и больше(тоесть добавиться следующий байт).
Но это для визуального просмотра так сказать.
То есть результат - адрес и байт первого и второго файла надо записывать в динамический ^массив.
И результат выдавать в виде таблице с дополнительными возможностями, такими как просмотр значений в других форматах и присоединение к значению следующего или нескольких следующих байт.
При этом если двухбайтовый word то можно еще и перевернуть.
Но это так сказать планы.
Для начала и простейший листинг бы подошел.

1. выбор файла - нужно ли сразу заносить выбранный файл в память?
И понадобиться полный путь к файлу или достаточно его имя?
2. Определение размера не выходит, я пытался использовать для вывода размера лайбел - может это ошибка?
А как тогда?
3. еще до сравнения размера не дошел но уже думал как лучше это реализовать.
Наверно с помощью оператора IF . Но в случае если размер не совпадает,
будет ли возможность сделать активной или не активной кнопку?
Какую кнопку выбрать тогда лучше из палитры компонентов?
Вообще буду рад советом по оптимизации чтобы не было ничего лишнего и какие компоненты мне пригодятся для реализации этой проги.

Прошу прощения если это раздел не подходит для создания этой темы, я еще не очень хорошо ориентируюсь и новичек в HiAsm.

------------ Дoбавленo в 17.09:
Файл то не получилось присоединить пишет у меня нет прав.
А как тогда быть без файла не кто не увидит что я там натворил?
карма: 1

0
vip
#1.1контекстная реклама от партнеров
Ответов: 970
Рейтинг: 270
#2: 2010-04-24 17:10:15 ЛС | профиль | цитата
Если Ваш ранг на форуме "Участник", то Вы пока не можете прикреплять к своим сообщениям файлы, но можете воспользоваться сервисом Файлообмен и вставлять в сообщения ссылки на выложенные файлы. Учтите только, что "время жизни" файла в файлообменнике ограничено.

карма: 0

0
Ответов: 15
Рейтинг: 0
#3: 2010-04-24 17:21:52 ЛС | профиль | цитата
Вот залил: coms.rar
прямая ссылка http://www46.zippyshare.com/v/95819412/file.html
------------ Дoбавленo в 17.21:
Извиняюсь, теперь понял как вставить... только в описание написано из контекстного меню нажать копировать, но если нажать правую кнопку мыши то выделение спадает.
Add(MainForm,2953706,21,126)
{
Width=745
Height=413
}
Add(Browse,1796768,119,35)
{
BrowseObj=3
link(onBrowse,4960415:doEvent1,[])
}
Add(Browse,7830492,119,105)
{
BrowseObj=3
link(onBrowse,13544703:doValue,[])
}
Add(Button,13395307,63,35)
{
Left=20
Top=10
Width=70
Height=25
Caption="Выбрать"
Data=String()
link(onClick,1796768:doBrowse,[])
}
Add(Button,4154920,63,105)
{
Left=20
Top=50
Width=70
Height=30
Caption="выбрать"
Data=String()
link(onClick,7830492:doBrowse,[])
}
Add(Label,5271197,301,35)
{
Left=110
Top=10
Width=92
Height=17
Caption="Выберите файл 1"
}
Add(Label,5554364,301,105)
{
Left=110
Top=50
Width=92
Height=17
Caption="Выберите файл 2"
}
Add(FileAttributes,13259379,189,49)
{
Point(FileSize)
}
Add(Hub,4960415,161,35)
{
link(onEvent1,7688918:doPart,[])
link(onEvent2,13259379:doRead,[(182,48)(182,55)])
}
Add(Label,13398401,371,84)
{
Left=295
Top=10
Width=117
Height=17
Caption="размер файла"
link(Text,13259379:FileSize,[(377,86)(216,86)])
}
Add(Label,16504830,294,189)
{
Left=295
Top=45
Width=77
Height=17
Caption="размер файла"
link(Text,14222223:FileSize,[(300,177)(251,177)(251,205)(202,205)])
}
Add(FilePartElm,7688918,238,35)
{
link(onPart,5271197:doText,[])
}
Add(Memory,13544703,175,105)
{
link(onData,14133043:doPart,[])
}
Add(FileAttributes,14222223,175,161)
{
Point(FileSize)
link(FileName,13544703:Value,[])
}
Add(FilePartElm,14133043,245,105)
{
link(onPart,5554364:doText,[])
}
карма: 1

0
Ответов: 8887
Рейтинг: 823
#4: 2010-04-24 19:07:10 ЛС | профиль | цитата
Limon, code_17940.txt для примера
карма: 19

0
файлы: 1code_17940.txt [3.9KB] [544]
Ответов: 15
Рейтинг: 0
#5: 2010-04-26 00:11:43 ЛС | профиль | цитата
Леонид писал(а):
...
для примера

Спасибо. Конечно хотелось бы и подробнее по пунктам почему так а не иначе. Еще я заметил что сложнее разбираться в чужих
исходняках это касаться и исходников на паскале, дельфи и вот кстати схемки тоже. Я некоторые цепочки пока еще не могу проследить и понять
в какой там момент идет например определение размера файла.
Но тем не менее всё равно спасибо огромное. Буду разбираться. И хоть буду знать в каких случаях использовать те или иные компоненты.
карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#6: 2010-04-26 00:47:25 ЛС | профиль | цитата
Limon писал(а):
не могу проследить и понять в какой там момент идет например определение размера файла

Считывается с точки Size компонентов FileStrem
карма: 22

0
Ответов: 15
Рейтинг: 0
#7: 2010-04-26 01:00:22 ЛС | профиль | цитата
nesco писал(а):
Считывается с точки Size компонентов FileStrem

А, нашел! Только вот еще вопрос а чего там делает цикл for? И почему размер файла там привязан както к циклу?

карма: 1

0
Ответов: 2193
Рейтинг: 673
#8: 2010-04-26 01:43:10 ЛС | профиль | цитата
For в схеме Леонида ничего не делает. Но будет делать если ты сделаешь так: code_17949.txt обрати внимание на свойство IncludeEnd = False в элементе For
карма: 10

0
файлы: 1code_17949.txt [1019B] [495]
Ответов: 15
Рейтинг: 0
#9: 2010-04-26 01:57:55 ЛС | профиль | цитата
sla8a писал(а):
For в схеме Леонида ничего не делает. Но будет делать если ты сделаешь так: code_17949.txt обрати внимание на свойство IncludeEnd = False в элементе For

Спасибо за пример, очень интересно. Так вот даже удобнее потихоньку разбираться, с небольшими схемками. Только вот теперь вопрос по твоей схеме а файл нужно закрывать в конце? Корректно ли оставлять файл не закрытым или это не имеет значения после выхода программы он типа закроется сам?

карма: 1

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#10: 2010-04-26 02:06:12 ЛС | профиль | цитата
Limon писал(а):
после выхода программы он типа закроется сам?

Деструктор родительского класса закроет файл при выходе из программы
карма: 22

0
Ответов: 4641
Рейтинг: 334
#11: 2010-04-26 17:57:50 ЛС | профиль | цитата
Limon писал(а):
пользователь может нажать кнопку
побайтового сравнения двух файлов

а толку побайтово сравнивать? Думаю лучше вычислить хеш сумму Hashsum и все. Вот и сравнение.
------------ Дoбавленo в 17.57:
хотя именно если надо увидеть значение в нужном байте... то да.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 15
Рейтинг: 0
#12: 2010-04-26 19:19:21 ЛС | профиль | цитата
Ravilr писал(а):
хотя именно если надо увидеть значение в нужном байте... то да.

Ну так не только значение, нужен еще адрес байта и потом может еще с этими байтами нужно будет делать некоторые манипуляции.

------------ Дoбавленo в 19.19:
Вот меня смущает что нет типа Byte
карма: 1

0
Ответов: 4641
Рейтинг: 334
#13: 2010-04-26 19:44:25 ЛС | профиль | цитата
Limon писал(а):
нужен еще адрес байта и потом может еще с этими байтами нужно будет делать некоторые манипуляции

ага HEX-редактор
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#14: 2010-04-26 19:50:16 ЛС | профиль | цитата
Ravilr писал(а):
ага HEX-редактор

Нафиг он кому нужен, их и так прорва в нэте лежит, бери -- не хочу.

Limon писал(а):
Вот меня смущает что нет типа Byte

При чтении потоков есть такой параметр, как побайтовое чтение и компоненты такие есть


Add(Stream2Hex,11139342,42,455)
{
}


Add(DataToFile,10375873,56,532)
{
}
карма: 22

0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)