Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Задача... вообщем не пойму на что

Автор: -Антон- 18.12.2007 0:08

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

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

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

Автор: volvo 18.12.2007 0:16

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

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


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

Ну, а по поводу "как сделать" - это смотреть в сторону указателей и преобразований типов. Если это именно то, что тебе нужно - скажи, я расскажу немного более развернуто, как именно можно это реализовать...

Автор: -Антон- 18.12.2007 0:24

Спасибо, ща почитаю... будут вопросу спрошу, хорошо?

Автор: -Антон- 18.12.2007 23:07

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

Автор: volvo 18.12.2007 23:15

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

{$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

Автор: -Антон- 19.12.2007 21:14

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

Автор: volvo 19.12.2007 21:23

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