![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
-Антон- |
![]()
Сообщение
#1
|
Гость ![]() |
Вообщем вот текст задачи:
Создать программу для последовательного побайтного считывания из памяти переменных с различной длиной представления в памяти. Значения байт выводить в шестнадцатеричной системе счисления. Объясните пожалуйста на примере что тут требуется, а то вообще почти не пойму... И как, хотя бы в общих словах, это все делать, а то вообще не представляю... |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Объясните пожалуйста на примере что тут требуется Ну, например, возможно такое толкование задания... Есть несколько разнотипных переменных, скажем: Var i: integer; f: real; L: longint;
От тебя требуется написать программу, позволяющую побайтно напечатать в 16-ричном виде содержимое области памяти, занятой каждой из этих переменных... Ну, а по поводу "как сделать" - это смотреть в сторону указателей и преобразований типов. Если это именно то, что тебе нужно - скажи, я расскажу немного более развернуто, как именно можно это реализовать... |
-Антон- |
![]()
Сообщение
#3
|
Гость ![]() |
Спасибо, ща почитаю... будут вопросу спрошу, хорошо?
|
-Антон- |
![]()
Сообщение
#4
|
Гость ![]() |
Тоесть я создам нетипизированный указатель и при помощи него буду читать переменные разных типов... А как мне выводить не значение переменных, а значения байт, которые в памяти хранятся?
|
volvo |
![]()
Сообщение
#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.
С другими переменными то же самое ![]() |
-Антон- |
![]()
Сообщение
#6
|
Гость ![]() |
Тоесть при помощи этой процедуры я получаю значения байт, при помощи указателей делаю что бы эта процедура делалась для всех переменных разных типов... и значения массива потом с помощью другогй процедуры перевожу в шестнадцатиричную систему? Правильно я понял?
|
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата при помощи указателей делаю что бы эта процедура делалась для всех переменных разных типов Это - лишнее... Ты уже в приведенную мной процедуру можешь передавать переменные разных типов, главное - не забывать передавать их правильный размер. Все, что осталось - это переводить байты в Hex. |
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 22:39 |