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

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

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

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


Гость






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

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

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


Гость






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

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


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

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


Гость






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


Гость






Тоесть я создам нетипизированный указатель и при помощи него буду читать переменные разных типов... А как мне выводить не значение переменных, а значения байт, которые в памяти хранятся?
 К началу страницы 
+ Ответить 
volvo
сообщение 18.12.2007 19:15
Сообщение #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
 К началу страницы 
+ Ответить 
-Антон-
сообщение 19.12.2007 17:14
Сообщение #6


Гость






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


Гость






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

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

 

- Текстовая версия 27.07.2025 22:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"