IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача... вообщем не пойму на что, На работу с памятью вроде
сообщение
Сообщение #1


Гость






Вообщем вот текст задачи:

Создать программу для последовательного побайтного считывания из памяти переменных с различной длиной представления в памяти. Значения байт выводить в шестнадцатеричной системе счисления.

Объясните пожалуйста на примере что тут требуется, а то вообще почти не пойму... И как, хотя бы в общих словах, это все делать, а то вообще не представляю...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Объясните пожалуйста на примере что тут требуется
Ну, например, возможно такое толкование задания...

Есть несколько разнотипных переменных, скажем:
Var i: integer; f: real; L: longint;


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

Ну, а по поводу "как сделать" - это смотреть в сторону указателей и преобразований типов. Если это именно то, что тебе нужно - скажи, я расскажу немного более развернуто, как именно можно это реализовать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Спасибо, ща почитаю... будут вопросу спрошу, хорошо?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Тоесть я создам нетипизированный указатель и при помощи него буду читать переменные разных типов... А как мне выводить не значение переменных, а значения байт, которые в памяти хранятся?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Придется "накладывать" массив байт на расположение нужной переменной в памяти:

{$R-}
var
b: byte; f: real; L: longint;

procedure print(var p; size: integer);
var
arr: array[1 .. 1] of byte absolute p;
i: integer;
begin
for i := 1 to size do write(arr[i]:3);
writeln;
end;

begin
f := 0;
print(f, sizeof(f));
f := 10.5;
print(f, sizeof(f));
end.

С другими переменными то же самое smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






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


Гость






Цитата
при помощи указателей делаю что бы эта процедура делалась для всех переменных разных типов
Это - лишнее... Ты уже в приведенную мной процедуру можешь передавать переменные разных типов, главное - не забывать передавать их правильный размер. Все, что осталось - это переводить байты в Hex.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.09.2020 6:32
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name