Меню
>
Главная страница   
Экстренная связь
Сейчас на сайте

Админов: 3
Работников: 3
Клиентов: 2
Гостей: 24

Вход
Логин:  
Пароль:  
На заказ
Разместить заявку
Программирование
Информатика
Базы данных
Разработка ПО
Бухгалтерский учёт
Экономика, Аудит
Финанс. менеджмент
Финансовый анализ
Эконом. теория
Эконом. предприятия
Финансы и кредит
Менеджмент
Маркетинг
Юриспруденция
Право
Психология
Математика
Физика
ОТУ
Радиотехника
Электроника
Схемотехника
Механика
Метрология
Перефразирование
История
Английский
Студентам ТУСУР-а
Другой предмет
Готовые работы
Найти готовую
Программирование
Экономика, Аудит
Бухгалтерский учёт
Финансы и кредит
Юриспруденция
Право
История
Психология
Механика
Информация
О сайте
Контакты
Наши цены
Наши гарантии
Способы оплаты
Вопросы и ответы
Отзывы клиентов
Вакансии
Написать письмо
Мы работаем
ЕЖЕДНЕВНО
с 9:30 до 23:30 msk
Поиск по сайту
Полезное
Теор.выч.процессов
Разное
Архив заказов
Анекдоты
Облака тегов
Карточные игры
Преподы-монстры
Антиплагиат
Мысли вслух





Яндекс цитирования






Грызи гранит не портя зубы;)


Яндекс.Метрика









Класс!









Stats








(Напомнить)
Логин Пароль        

ВКонтактеFacebookНаш Instagram

Лабораторная работа
WinApi: информация о памяти, DLL
в среде программирования Delphi 7.0

Выполненный в 2016-м году заказ


Если Вы считаете, что данная страница каким-либо образом нарушает Ваши авторские права, то Вам следует обратиться в администрацию нашего сайта по адресу info@kursovik.com либо через форму обратной связи

Среда программирования: Delphi 7.0

Название работы: WinApi: информация о памяти, DLL

Вид работы: Лабораторная работа

Описание: ЗаказатьЛабораторная работа №1

Тема: ”Получение системной информации”

Теоретическая часть.

1. Получение информации о состоянии памяти

Информацию о состоянии памяти можно получить с помощью вызова API функции GlobalMemoryStatus(). Этой процедуре передается параметр типа TMemoryStatus. Запись TMemoryStatus определяется следующим образом:

typedef struct _MEMORYSTATUS { // mst
DWORD dwLength; // длина записи MEMORYSTATUS. Должно быть инициализовано
до вызова GlobalMemoryStatus()
DWORD dwMemoryLoad; // процент занятости памяти
DWORD dwTotalPhys; // общее число байтов физической памяти
DWORD dwAvailPhys; // объем свободной в данный момент памяти
DWORD dwTotalPageFile; // общее число байтов, которое может быть выведено
на жесткий диск в файл подкачки (не обязательно совпадает с размером файла подкачки)
DWORD dwAvailPageFile; // объем еще доступной памяти;
DWORD dwTotalVirtual; // общее число байтов виртуальной памяти;
DWORD dwAvailVirtual; //объем виртуальной памяти, доступной для вызывающего процесса
} MEMORYSTATUS, *LPMEMORYSTATUS;

Для форматирования строки используется функция Format():
function Format(const Format: string; const Args: array of const): string;
В файле справки Delphi описаны правила использования Format.

Для получения информации в удобном виде вводим текст с макроподстановкой.
const
{Строки состояния памяти}
SMemUse = 'Используется %d%% байт памяти';
STotMem = 'Общая физическая память составляет $%.8x байт';
SFreeMem = 'Свободная физическая память составляет составляет $%.8x байт';
STotPage = 'Общая память файлов подкачки составляет составляет $%.8x байт';
SFreePage = 'Свободная память файлов подкачки составляет составляет $%.8x байт';
STotVirt = 'Общая виртуальная память составляет составляет $%.8x байт';
SFreeVirt = 'Свободная виртуальная память составляет составляет $%.8x байт';

Где %d -- вывод подстановка целого типа;
%% – знак процента;
%p -- вывод подстановка указателя;
%.8x – подстановка, по шаблону: 8 знаков, шестнадцатиричное представление числа. Точка дополняет число слева нулями, если само число содержит меньшее количество цифр, чем то, какое указано в шаблоне.

Процедура вызова API функции и отображения информации о состоянии памяти. В данной реализации вызывается в момент показа формы приложения.

procedure TForm1.FormShow(Sender: TObject);
var
MS: TMemoryStatus; // Объявляем переменную типа MS
begin
MS.dwLength:=SizeOf(MS); // Инициализируем поле dwLength структуры TMemoryStatus
GlobalMemoryStatus(MS); //Вызываем процедуру GlobalMemoryStatus с параметром MS
with LB.Items, MS do //Выводим в ListBox содержимое полей структуры TMemoryStatus
begin
Clear;
Add(Format(SMemUse, [dwMemoryLoad]));
Add(Format(STotMem, [dwTotalPhys]));
Add(Format(SFreeMem, [dwAvailPhys]));
Add(Format(STotPage, [dwTotalPageFile]));
Add(Format(SFreePage, [dwAvailPageFile]));
Add(Format(STotVirt, [dwTotalVirtual]));
Add(Format(SFreeVirt, [dwAvailVirtual]));
end;
end;

2. Получение информации о версии ОС

Получить информацию об установленной на данном компьютере версии Windows и Win32 можно получить с помощью API функции GetVersionEx(). Этой функции по ссылке передается только один параметр – запись TOSVersionInfo, которая определяется следующим образом:

typedef struct _OSVERSIONINFO{
DWORD dwOSVersionInfoSize; // должно быть инициализовано значение SIZEOF(TOSVersionInfo)
до вызова функции GetVersionEx()
DWORD dwMajorVersion; // Содержит старший номер версии ОС.
DWORD dwMinorVersion; // Содержит младший номер версии ОС.
DWORD dwBuildNumber; // Содержит номер ОС, который хранится в ее самом младшем слове
DWORD dwPlatformId; // Описывает текущую платформу Win32 и может иметь значения:
VER_PLATFORM_WIN32s в Windows 3.1
VER_PLATFORM_WIN32_WINDOWS в Windows 95
VER_PLATFORM_WIN32_NT в Windows NT

TCHAR szCSDVersion[ 128 ]; // Доп. информация. часто хранит пустую строку
} OSVERSIONINFO;

3. Получение информации о каталогах

Операционная система активно использует каталоги Windows и System для хранения библиотек dll, драйверов, приложений и ini файлов. Кроме того, Win32 поддерживает текущий каталог для каждого процесса. При создании различных приложений Win32 может потребоваться получить точную информацию о расположении этих каталогов. Для этих целей предназначены следующие функции:
GetWindowsDirectory();
GetSystemDirectory();
GetCurrentDirectory();

Пример вызова:
Const
SWinDir = ‘Директория Windows %s’;

Procedure TForm1.GetDirInfo;
Var
S:array[0..MAX_PATH] of char;
Begin
GetWindowsDirectory(S, SizeOf(S));
LB.Items.Add(Format(SWinDir, [S]); // вывод в ListBox
GetSystemDirectory(S, SizeOf(S));
// вывод в ListBox
GetCurrentDirectory(SizeOf(S), S);
// вывод в ListBox
End




4. Получение некоторых специфических подробностей о работе ОС

В интерфейсе Win32 API предусмотрена процедура GetSystemInfo(), которая считывает некоторые специфические подробности о работе операционной системы. Этой процедуре по ссылке передается один параметр типа TSystemInfo, после чего она заполняет указанную запись соответствующими значениями. Формат TSystemInfo для WindowsNT имеет вид (в разных ОС определения несколько различаются):

typedef struct _SYSTEM_INFO { // sinf
union {
DWORD dwOemId;
struct {
WORD wProcessorArchitecture;
WORD wReserved;
};
};
DWORD dwPageSize;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORD dwActiveProcessorMask;
DWORD dwNumberOfProcessors;
DWORD dwProcessorType;
DWORD dwAllocationGranularity;
WORD wProcessorLevel;
WORD wProcessorRevision;

} SYSTEM_INFO;

1. Поле dwOemId используется для Windows95. Всегда устанавливается в 0 или PROCESSOR_ARCHITECTURE_INTEL;
2. В среде Windows NT используется поле wProcessorArchitecture, которое описывает тип архитектуры процессора, установленного на данном компьютере. Содержимое составляет тип PROCESSOR_ARCHITECTURE_INTEL;
3. Поле wReserved в настоящее время не исползуется
4. dwPageSize указывает размер страницы в килобайтах и определяет степень разбиения при защите и фиксации страниц.
5. lpMinimumApplicationAddress (lpMaximumApplicationAddress) хранит самый младший (старший) адрес памяти, доступный приложениям и функциям библиотек dll.
6. dwActiveProcessorMask возвращает маску, представляющую набор процессоров, установленных в системе. Разряд 0 представляет собой первый процессор, разряд 31 – 32 процессор
7. dwNumberOfProcessors также возвращает количество процессоров в системе
8. dwProcessorType оставлено для совместимости
9. dwAllocationGranularity возвращает степень разбиения, учитываемое при распределении памяти.
10. wProcessorLevel определяет уровень процессора, зависящий от архитектуры системы. Содержит различные значения для разных процессоров. Для процессоров Intel параметр принимает следующие значения:
3 – 80386
4 – 80486
5 – Pentium
6 – Pentium Pro и выше
11. wProcessorRevision определяет модификацию процессора, зависящую от архитектуры системы.

Вызов осуществляется аналогично вызову процедуры GlobalMemoryStatus()

5. Получение информации о среде

С помощью функции API GetEnvironmentStrings можно получить список переменных окружения (различные set – установок, путей, формы приглашения). Эта функция не имеет параметров и возвращает список строк окружения, разделенных нулями. Формат этого списка (0 – разделитель, два нуля – признак завершения списка):
Строка1 #0 Строка2 #0 ….. Строка N #0#0

Функция вызывается следующим образом:
Procedure TForm1.ShowEnviroment;
Var
EnvPtr, SavePtr: PChar;
Begin
EnvPtr:= GetEnvironmentStrings; // Получаем указатель на список
SavePtr:=EnvPtr; // Дублируем указатель
LB.Items.Clear; // Очищаем TListBox
Repeat
LB.Items.Add(StrPas(EnvPtr));
Inc(EnvPtr, StrLen(EnvPtr)+1);
Until EnvPtr^ = #0; // Цикл по списку, пока не встретится #0
FreeEnviromentStrings(SavePtr);
End;

Практическая часть

Изучите приложение, выводящее в компонент TListBox информацию о состоянии памяти

Задание

1. Напишите программу, выводящую следующую системную информацию:
- информация о памяти (взять из примера);
- версия ОС;
- номер версии;
- платформа;
- архитектура процессора;
- размер страницы;
- минимальный и максимальный адрес приложения;
- число процессоров;
- степень разбиения при выделении ресурсов;
- уровень процессора;
- каталог Windows;
- системный каталог Windows;
- текущий каталог;
- список переменных окружения и их значения.
2. Оформите пояснительную записку по плану:
- постановка задачи;
- описание механизма вызова используемых API функций;
- описание переменных окружения (наименование, предназначение);
- текст программы;
- системная информация, выведенная программой.


Задания на лабораторную работу №3

Напишите приложения с явной и неявной загрузкой функций из DLL библиотек (см. варианты). Приложение включает 2 формы:
• главную (для вызова диалоговой модальной формы и отображения результатов работы алгоритма)
• диалоговую модальную (для передачи входных данных в алгоритм).
Модальная форма загружается явно из DLL библиотеки. Передача данных, вызов функции и вывод результата по 1му клику мыши.

Схема работы:

Вариант 8. Отсортировать одномерный массив по возрастанию или убыванию значения

Год выполнения: 2016

Данный заказ (лабораторная работа) выполнялся нашим сайтом в 2016-м году, в рамках этого заказа была разработана программа в среде программирования Delphi 7.0. Если у Вас похожее задание на программу, которую нужно написать на Delphi 7.0, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2016-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".


Форма заказа
*Имя:
*E-Mail:
Моб.телефон:
Skype:
Icq:
Страна:
 
ВУЗ:
Город ВУЗа:
Специальность:
 
*Введите код с картинки:
код
(сменить)


© 2001-2017 kursovik.com
Данный сайт не является средством массовой информации