Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2007, 15:19   #1
metamfetamin
Пользователь
 
Аватар для metamfetamin
 
Регистрация: 02.11.2007
Сообщений: 68
По умолчанию

Помогите пожалуста, обьясните что к чему и что за чем делать!!!!!!!!
Задание: В Delphi разработать программу в которой имеется возможность запуска двух потоков (нитей) и просмотра системной информации о физической и виртуальной памяти процесса
1. Используя готовый модуль формы, восстановить интерфейс приложения:
2. Кнопки ПУСК – запускают потоки (один или два)
3. Кнопки СТОП – удаляют соответствующий поток
4. Кнопка ВЫДАЧА ИНФОРМАЦИИ выдает информацию о памяти. Каждое нажатие обновляет информацию.
5. Нельзя два раза нажать ПУСК (СТОП)
6. Сравнить выделяемую физическую и виртуальную память процесса. Почему они отличаются? Почему физической памяти больше? Почему физическая память постоянно изменяется?
7. Сколько виртуальной памяти выделено потоку 1 и 2.

Модуль формы:
Код:
unit Unit1; 
interface 
uses 
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
StdCtrls; 
type 
TForm1 = class(TForm) 
Button1: TButton; 
Button2: TButton; 
Button3: TButton; 
Button4: TButton; 
ScrollBar1: TScrollBar; 
GroupBox1: TGroupBox; 
Label1: TLabel; 
Label2: TLabel; 
Label3: TLabel; 
Label4: TLabel; 
Label5: TLabel; 
Button5: TButton; 
Label6: TLabel; 
procedure Button1Click(Sender: TObject); 
procedure Button3Click(Sender: TObject); 
procedure Button2Click(Sender: TObject); 
procedure Button4Click(Sender: TObject); 
procedure FormDestroy(Sender: TObject); 
procedure Button5Click(Sender: TObject); 
procedure FormCreate(Sender: TObject); 
private 
{ Private declarations } 
public 
{ Public declarations } 
end; 
TThread1 = class(TThread) 
private 
{ Private declarations } 
protected 
procedure Execute; override; 
procedure DoSomething; 
end; 
TThread2 = class(TThread) 
private 
{ Private declarations } 
protected 
procedure Execute; override; 
procedure DoSomething; 
end; 
var 
Form1: TForm1; 
T1:TThread1; 
T2:TThread2; 
MemSt:TMemoryStatus; 
SysInfo:TSystemInfo; 
implementation 
{$R *.DFM} 
procedure TThread1.Execute; 
begin 
repeat
Synchronize(DoSomething); 
until terminated; 
end; 
procedure TThread1.DoSomething; 
begin 
Form1.ScrollBar1.Position:=10; 
end; 
procedure TThread2.Execute; 
begin 
repeat 
Synchronize(DoSomething); 
until terminated; 
end; 
procedure TThread2.DoSomething; 
begin 
Form1.ScrollBar1.Position:=90; 
end; 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
T1:=TThread1.Create(false); 
T1.Priority:=tpLowest; 
Button1.Enabled:=false; 
Button2.Enabled:=true; 
end; 
procedure TForm1.Button3Click(Sender: TObject); 
begin 
T2:=TThread2.Create(false); 
T2.Priority:=tpHighest; 
Button3.Enabled:=false; 
Button4.Enabled:=true; 
end; 
procedure TForm1.Button2Click(Sender: TObject); 
begin 
T1.Suspend;T1.Terminate; T1.Free; 
Button1.Enabled:=true; 
Button2.Enabled:=false; 
end; 
procedure TForm1.Button4Click(Sender: TObject); 
begin 
T2.Suspend; T2.Terminate; T2.Free; 
Button3.Enabled:=true; 
Button4.Enabled:=false; 
end; 
procedure TForm1.FormDestroy(Sender: TObject); 
begin 
T1.Suspend; T2.Suspend; 
T1.Terminate; T1.Free; 
T2.Terminate; T2.Free; 
end; 
procedure TForm1.Button5Click(Sender: TObject); 
begin 
GetSystemInfo(SysInfo); 
GlobalMemoryStatus(MemSt); 
Label1.Caption:='Объем физической памяти процесса = ' 
+IntToStr(round(MemSt.dwTotalPhys/1024)); 
Label2.Caption:='Объем свободной физической памяти процесса = ' v 
+IntToStr(round(MemSt.dwAvailPhys/1024)); 
Label3.Caption:='Под процесс выделено физической памяти = ' 
+IntToStr(round((MemSt.dwTotalPhys-MemSt.dwAvailPhys)/1024)); 
Label4.Caption:= 'Объем виртуальной памяти процесса = ' +IntToStr(round(MemSt.dwTotalVirtual/1024)); 
Label5.Caption:= 'Объем свободной виртуальной памяти процесса = ' +IntToStr(round(MemSt.dwAvailVirtual/1024)); 
Label6.Caption:= 'Под процесс выделено виртуальной памяти = ' +IntToStr(round((MemSt.dwTotalVirtual-MemSt.dwAvailVirtual)/1024)); 
end; 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
Button2.Enabled:=false; 
Button4.Enabled:=false; 
end; 
end.
Помогите пожалуста, бо в универе горю по полной!!!!!

Короче повставлял я на форму соответствующие менюшки:
Но при нажатии на одну из кнопок меню Botton вообще ничего не происходит......хотя мое мнение что что то должно происходить с бегунком меню ScrollBar1: TScrollBar.
Кто что думает по етому поводу...подскажите!!!!!!!!!!!!!

Сообщения можно редактировать. SupVis

Последний раз редактировалось SuperVisor; 07.11.2007 в 07:45.
metamfetamin вне форума Ответить с цитированием
Старый 07.11.2007, 07:55   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Для начачала объясните мне, юноша, на кого вы учитесь и на каком курсе...
После можете рассказать мне работали ли вы с потоками.
И уже затем позволю вам заметить, что программа тупо виснет при убиении потоков. Думайте. Код относительно рабочий, но не ваш. Потому посоветую взять голову в руки и убить себя апстену, при условии, что ваша специальность связана с программированием. Иными словами - "Не зная броду, не суйся в воду" и "Воля и труд - все перетрут".
Включаем голову или едем во фриланс.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 07.11.2007, 09:27   #3
metamfetamin
Пользователь
 
Аватар для metamfetamin
 
Регистрация: 02.11.2007
Сообщений: 68
По умолчанию

Цитата:
Сообщение от SuperVisor Посмотреть сообщение
Для начачала объясните мне, юноша, на кого вы учитесь и на каком курсе...
После можете рассказать мне работали ли вы с потоками.
И уже затем позволю вам заметить, что программа тупо виснет при убиении потоков. Думайте. Код относительно рабочий, но не ваш. Потому посоветую взять голову в руки и убить себя апстену, при условии, что ваша специальность связана с программированием. Иными словами - "Не зная броду, не суйся в воду" и "Воля и труд - все перетрут".
Включаем голову или едем во фриланс.
Факультет компьтерная инженерия вообщем главний предмет курса СХЕМОТЕХНИКА. 2 курс. С потоками не работал, препод претрушеный на лекциях расказывает о истории опер. систем, а лабы требует. На вопрос "Я Delphi не учил и понятия не имею как в нем работать" он отвечает "а меня ето не волнует" А предмет о котором я прошу о помощи назывется называется Операционные системы!!!! Препод напрягает все ето делать на Delphi. Я его не учил вообще (ну с помощью вас все же мало знаю, но понятие имею).Что касается кода, то его дал препод.Сказал оформить в Delphi!!Вот такие вот пироги!!

И такой вопрос, после чего именно подвисает прога, при нажатие на какую то кнопку!!!!!
metamfetamin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Физическая форма" Rusl92 Общие вопросы Delphi 28 22.03.2009 01:40
Виртуальная машина Linux в домене Stilet Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 2 09.04.2008 15:52
Что такое виртуальная машина? Amon Операционные системы общие вопросы 9 02.03.2008 21:58
виртуальная функция? SERGOO Общие вопросы C/C++ 4 18.09.2007 21:43
Нужна программа "виртуальная витрина" Alexsey Фриланс 9 30.08.2007 15:16