Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача... вообщем не пойму на что
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Антон-
Вообщем вот текст задачи:

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

Объясните пожалуйста на примере что тут требуется, а то вообще почти не пойму... И как, хотя бы в общих словах, это все делать, а то вообще не представляю...
volvo
Цитата
Объясните пожалуйста на примере что тут требуется
Ну, например, возможно такое толкование задания...

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


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

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

{$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
-Антон-
Тоесть при помощи этой процедуры я получаю значения байт, при помощи указателей делаю что бы эта процедура делалась для всех переменных разных типов... и значения массива потом с помощью другогй процедуры перевожу в шестнадцатиричную систему? Правильно я понял?
volvo
Цитата
при помощи указателей делаю что бы эта процедура делалась для всех переменных разных типов
Это - лишнее... Ты уже в приведенную мной процедуру можешь передавать переменные разных типов, главное - не забывать передавать их правильный размер. Все, что осталось - это переводить байты в Hex.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.