![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Geroi |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 29 Репутация: ![]() ![]() ![]() |
Её явно закрыли, а вопросы остались.
Спасибо тем, кто помог. Сейчас буду сидеть разбиратся. Ну а вот на счёт первой задачи как быть? У меня единственнйы вопрос, как там сделать замену числа? Решать её ненадо !!! Просто подскажите, как заменить в файле чётное число на его произведние, Т.е. К примеру у нас в файле написано: 2, 13, 45, 56. Нам надо, чтоб там стало 4, 13, 45, 112. Вот как сделать, чтоб чётное число заменялось, без создание нового файла и писалось на том же месте. СРазу говорю, число максимальное будет 15000. Чтоб не было лишних разговоров. Ну а если Я там был не прав, то извиняюсь. Хотя наврядли ! |
GLuk |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дык, я ж исходник выложил, может тебя смущает немного асма, но основная идея должна быть понятна. В файле есть так называемый указатель позиции записи/чтения. Который после чтения числа увеличивается на длину прочитанных данных которое, по ходу, нужно изменить я уменьшаю на 2 байта, а после записываю удвоенное/утроенное число, и указатель снова становится на место...
![]() |
___ALex___ |
![]()
Сообщение
#3
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
всё можно сделать легко через BlockWrite/BlockRead/Seek
асм вообще не к месту |
Geroi |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 29 Репутация: ![]() ![]() ![]() |
такс
![]() у к примеру : Procedure ReadInt;Assembler; расшифруй пожалуйста "asm, lea" Alex сделать через "BlockWrite/BlockRead/Seek " это ты имеешь ввиду заменить там существующие функции на эту? Разъясни. P.S. ну хрен с ним что Я ламер в Паскале.......... пока.... ![]() |
GLuk |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата всё можно сделать легко через BlockWrite/BlockRead/Seek асм вообще не к месту Реализуй пожалуйста, после хоккея ;) В плане исходника... To Geroi: lea dx,W - это значит загрузка относительного смещения переменной W в регистр dx (по англ. load effective address). В данном случае получается, что DS:DX указывает на переменную W, что используется (как эквивалент можно привести тип Pointer) в качестве исходных данных для записи, т.к. пишем тип Integer, то в CX помещаем 2. Кстати, работает прога то?... |
Geroi |
![]()
Сообщение
#6
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 29 Репутация: ![]() ![]() ![]() |
нет
![]() Она проще должна решатся....... Но всё равно спасибо, может довиду до ума. |
___ALex___ |
![]()
Сообщение
#7
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
щас третий период досмотрю и напишу
![]() |
___ALex___ |
![]()
Сообщение
#8
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
как и обещал:
program For_Forum; Без BlockRead/... но это без разницы - принцип там тот же - делал как по условию задачи от Нас требовали to GLuk У тебя по асме какая книжка? to Geroi "Сейчас буду сидеть разбиратся. " Вот это уважаю! вот слова написанные одной программистой "Никакой Интернет со всеми его конференциями, статьями и примерами никогда не заменит программисту собственного опыта. Только то, что добыто (разобрано и понято) своими силами, запоминается надолго и приносит пользу. Опыта надо набираться обязательно. Читайте help, ищите ответ в исходниках, экспериментируйте с проектом сколько душе угодно, но только обязательно сами... " в них Истина! |
Geroi |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 29 Репутация: ![]() ![]() ![]() |
Спасибо Alex за задачу.
Если есть мыло или Аська то дай плиз, чтоб форум н забивал если буду вопросы. |
GLuk |
![]()
Сообщение
#10
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ты ж говорил, что все это реализуется через BlockRead/Write. Через типизированный я и сам мог сделать, а если попробовать через эти функции, то ничего не получится (ошибка №6). А все из-за чего, из-за кривого кода работы с FSB в паскале! Поэтому и сделал через дескрипторы. По асме книг нету, только в электр. виде (авторы в явном виде не задаются).
To Geroi: Фишка в том, что переменную W нужно не возводить в квадрат, а умножать на 2. Поэтому происходит такая фигня. Прога хоть файл то создает? |
AlaRic |
![]()
Сообщение
#11
|
... ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 347 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Её явно закрыли, а вопросы остались. Её закрыли из-за хамского поведения участников форума. Будет повторяться - темы будут закрываться! |
___ALex___ |
![]()
Сообщение
#12
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
program For_Forum; to GLuk вот если так хотелось никакой кривоты я тут не увидел to Geroi ___ALex___@inbox.ru |
GLuk |
![]()
Сообщение
#13
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Не работает нифига, я примерно так сначала и сделал, как и раньше, выдает мне ошибку №6 (это типа несуществующий дескриптор) ??? :o А с типизированным работает...
|
___ALex___ |
![]()
Сообщение
#14
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 282 Репутация: ![]() ![]() ![]() |
to GLuk
в каком месте ошибка происходит? И что этот номер ошибки значит? У меня всё работает... |
GLuk |
![]()
Сообщение
#15
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Выдает ошибку после третьего обращения к BlockWrite, а ошибка эта значит, что ДОС передан неверный номер дескриптора... эта ошибка в принципе не может возникнуть, если конечно не затереть номер дескриптора в блоке описаловки файла открытого ТП.
И самое обидное:Потестил на другой машине - все идет :'( Меня терзают смутные сомнения, может что с машиной не так :( :o |
![]() ![]() |
![]() |
Текстовая версия | 25.03.2023 15:46 |