Вопрос № 90300: Уважаемые господа
У кого есть подробный пример работы с функцией GetProcessMemoryInfo()
нужно узнать сколько памяти занимает процесс ну к примеру Project1.exe
Delphi 7 Win XP SP=0...Вопрос № 90324: Здравствуйте уважаемые эксперты!Мне в моём приложении необходимо
что бы при клике по StringGrid'у у таблицы подсвечивалась бы та строка на которую пришёлся клик, а в переменную ARow заносился бы индекс этой строки....Вопрос № 90326: Привет всем! Вопрос следующий. В объекте есть несколько методов-ф-ций с одинаковым набором параметров и возвращаемым типом. (Напр. ф-ции формируют строку для INSERT, UPDATE и DELETE). Также существует метод-процедура, в которой нужно вызывать одну из...Вопрос № 90355:
Господа эксперты!
Подскажите компонент - Label с выводом текста по вертикали. На Torry не нашел, а ставить ради одного компонента большой пакет не хочется.
Спасибо.
Vitaly Grobshtein...Вопрос № 90361: Здраствуйте ! Проблема с TtreeView !
Как зделать так что бы в скомпилированной программе selectedindex изменялся ? напиример по томуже счетчику !
Заранее спасибо !...Вопрос № 90427: можно ли в Delphi перевести переменную типа real в переменную типа string....
Вопрос № 90.300
Уважаемые господа
У кого есть подробный пример работы с функцией GetProcessMemoryInfo()
нужно узнать сколько памяти занимает процесс ну к примеру Project1.exe
Delphi 7 Win XP SP=0
Отправлен: 06.06.2007, 16:53
Вопрос задал: Lejon (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 1)
procedure TForm1.Button1Click(Sender: TObject);
var
pmc:PPROCESS_MEMORY_COUNTERS;
begin
GetMem(pmc, SizeOf(_PROCESS_MEMORY_COUNTERS));
pmc.cb:=SizeOf(_PROCESS_MEMORY_COUNTERS);
If GetProcessMemoryInfo(GetCurrentProcess(), pmc, pmc.cb) then
Application.MessageBox(PChar(IntToStr(pmc^.WorkingSetSize)+' Bytes'),
'Memory', MB_OK or MB_ICONINFORMATION)
else
Application.MessageBox('Unable to retrieve memory usage structure',
'Memory', MB_OK or MB_ICONINFORMATION);
FreeMem(pmc);
end;
Ответ отправил: Н.В. (статус: Студент)
Ответ отправлен: 06.06.2007, 16:59 Оценка за ответ: 5
Отвечает: Кэр Лаэда
Здравствуйте, Lejon!
http://delphiworld.narod.ru/
uses psAPI;
procedure TForm1.Button1Click(Sender: TObject);
var
pmc: PPROCESS_MEMORY_COUNTERS;
cb: Integer;
begin
cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
GetMem(pmc, cb);
pmc^.cb := cb;
if GetProcessMemoryInfo(GetCurrentProcess(), pmc, cb) then
Label1.Caption := IntToStr(pmc^.WorkingSetSize) + ' Bytes'
else
Label1.Caption := 'Unable to retrieve memory usage structure';
FreeMem(pmc);
end;
Ответ отправил: Кэр Лаэда (статус: 10-ый класс)
Ответ отправлен: 06.06.2007, 17:01 Оценка за ответ: 5
Отвечает: PGM
Здравствуйте, Lejon!
Вот универсальный вариант из рабочей программы (см.приложение).
Приложение:
Ответ отправил: PGM (статус: 8-ой класс)
Ответ отправлен: 07.06.2007, 00:51 Оценка за ответ: 5 Комментарий оценки: Наиогромнейшее спасибо!!! Об этой функции я и мечтать не мог. Но delphi ругался пока pps : TPROCESS_MEMORY_COUNTERS; не переименовал в pmc : TPROCESS_MEMORY_COUNTERS; но это мелочи если можно было поставить 10 я бы с радостью сделал бы это!!!
Отвечает: xXx
Здравствуйте, Lejon!
Смотрите приложение. Данный код показывает размер текущего процесса...
Приложение:
Ответ отправил: xXx (статус: 6-ой класс)
Ответ отправлен: 07.06.2007, 05:55 Оценка за ответ: 5 Комментарий оценки: Большое спасибо
Вопрос № 90.324
Здравствуйте уважаемые эксперты!Мне в моём приложении необходимо
что бы при клике по StringGrid'у у таблицы подсвечивалась бы та строка на которую пришёлся клик, а в переменную ARow заносился бы индекс этой строки.
Отправлен: 06.06.2007, 19:19
Вопрос задал: GAZOT (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Устинов С.Е.
Здравствуйте, GAZOT!
В событие OnClick объекта StringGrid поместите: ARow:=StringGrid1.Row; или ARow:=StringGrid1.Selection.Top;.
А для "подсветки" в Options объекта StringGrid установите свойство goRowSelect:=true, или во время выполнения программы StringGrid1.Options:=StringGrid1.Options+[goRowSelect];
Ответ отправил: Устинов С.Е. (статус: Специалист)
Ответ отправлен: 06.06.2007, 19:33 Оценка за ответ: 5
Отвечает: Ерёмин А.А.
Здравствуйте, GAZOT!
Добавлю, что вместо OnClick можно использовать специальное событие "при выделении ячейки" - OnSelectCell(). Это надёжнее. Единственное неудобство - у этого события уже есть локальная переменная с именем ARow, т.е. придётся либо глобальную переменную назвать иначе, либо немного схитрить. Лучше схитрить :-) А делается просто.
Допустим, объявлена необходимая глобальная переменная ARow:
var
Form1: TForm1;
..
ARow: Integer;
Тогда пишем простую процедуру смены её значения:
procedure ChangeARow(NewValue: Integer);
begin
ARow:=NewValue
end;
А в событии OnSelectCell() вызываем нашу процедуру:
procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
ChangeARow(ARow)
end;
Всё довольно просто. Желаю удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин А.А. (статус: Профессор) Россия, Тула WWW:Программирование на DELPHI ---- Ответ отправлен: 06.06.2007, 20:04 Оценка за ответ: 5
Отвечает: Sashok
Здравствуйте, GAZOT!
Для того чтобы подсвечивалась вся строка достаточно включить опцию StringGrid1.Options.goRowSelect в диспетчере объектов. Индекс текущей выделенной строки всегда автоматически заносится в Stringgrid1.Row.
Ответ отправил: Sashok (статус: 3-ий класс)
Ответ отправлен: 06.06.2007, 21:22 Оценка за ответ: 4
Отвечает: Градов Юрий Михайлович
Здравствуйте, GAZOT!
Обрабатываете событие onDrawCell, там же можно взять координаты ячейки aCol,ARow.
Приложение:
--------- Глаза боятся - руки делают!
Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 06.06.2007, 21:46 Оценка за ответ: 5
Вопрос № 90.326
Привет всем! Вопрос следующий. В объекте есть несколько методов-ф-ций с одинаковым набором параметров и возвращаемым типом. (Напр. ф-ции формируют строку для INSERT, UPDATE и DELETE). Также существует метод-процедура, в которой нужно вызывать одну из этих ф-ций. Можно ли передать ф-цию в качестве параметра метода-процедуры? Если можно, то как это выглядит синтаксически.
Отправлен: 06.06.2007, 19:30
Вопрос задал: Idens (статус: Посетитель)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Устинов С.Е.
Здравствуйте, Idens!
Думаю саму функцию передать в метод-процедуру не получится, можно передать только ее результат.
Лучше передать в метод-процедуру не функцию, а символ, отвечающий за функцию, например так:
procedure ffffff(ch: Char, __ тут остальные параметры для функций __);
begin
case ch of
'i': FuncInsert(__параметры__);
'u': FuncUpdate(__параметры__);
'd': FuncDelete(__параметры__);
end;
end;
Ответ отправил: Устинов С.Е. (статус: Специалист)
Ответ отправлен: 06.06.2007, 19:39
Отвечает: Ерёмин А.А.
Здравствуйте, Idens!
Да, функции можно передавать. Условие только одно - параметры должны быть похожие (т.е. их количество и типы должны совпадать). Для работы удобно объявить тип данных "ссылка на функцию". Приведу пример с двумя функциями, работающими с числами.
Создаём тип данных - ссылку на функцию с двумя числовыми параметрами и числовым выходным параметром:
type
TFunc = function(A,B: Integer): Integer;
Далее описываем две разных функции - пусть одна будет складывать числа, а другая их перемножать:
function FuncAdd(A,B: Integer): Integer;
begin
Result:=A+B;
end;
function FuncMult(A,B: Integer): Integer;
begin
Result:=A*B;
end;
Далее мы можем пользоваться нашим типом данных - можем завести переменную этого типа и присвоить ей какую-либо функцию. Вызвать нашу функцию можно по имени переменной. Продолжение примера:
procedure TForm1.Button1Click(Sender: TObject);
Var MyFunc: TFunc; R: Integer;
begin
if MessageDlg('Сложить числа?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
MyFunc:=FuncAdd
else
MyFunc:=FuncMult;
R:=MyFunc(5,5);
ShowMessage(IntToStr(R));
end;
Что происходит: появляется диалоговое окно и спрашивается, что сделать с числами. Если выбрано сложение, присваиваем нашей функции функцию сложения, иначе - функцию умножения. А затем вызываем функцию как обычно и выводим результат её работы. В зависимости от ответа на вопрос результатом будет соответственно либо 5 + 5 = 10, либо 5 * 5 = 25.
Данный механизм довольно удобен.
Желаю удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: Sattar
Здравствуйте, Idens!
Если правильно понял то код в приложении.
Будут вопросы обращайся.
Приложение:
--------- Programming is like sex, one mistake and you have to support it for the rest of your life.
Ответ отправил: Sattar (статус: 3-ий класс)
Ответ отправлен: 06.06.2007, 20:32
Отвечает: Sashok
Здравствуйте, Idens!
Передать в качестве параметра процедуру или функцию можно. Передаётся указатель на неё. Сначала объявляешь тип функции или процедуры:
type TMyfunc = function (a: integer; b: integer): integer;
А потом в заголовке функции или процедуры пишешь:
function MainFunc (a: integer; b: TMyfunc): integer;
Далее в реализации функции вызываешь: b(a,c);
Ответ отправил: Sashok (статус: 3-ий класс)
Ответ отправлен: 06.06.2007, 21:14
Отвечает: Louken
Здравствуйте, Idens!
Попробуйте так:
TF=function(...): string of object;
вместо:
TF=function(...): string;
Ответ отправил: Louken (статус: 3-ий класс)
Ответ отправлен: 06.06.2007, 22:42
Отвечает: PGM
Здравствуйте, Idens!
Судя по тому, что предыдущие ответы вас не удовлетворили, вам требуется такой вариант описания типа функции
TF=function(...): string of object;
Тогда можно использовать методы в качестве параметров-функций (если их описание совпадает с тем что у вас за многоточием, естественно).
Приложение:
Ответ отправил: PGM (статус: 8-ой класс)
Ответ отправлен: 07.06.2007, 00:44
Вопрос № 90.355
Господа эксперты!
Подскажите компонент - Label с выводом текста по вертикали. На Torry не нашел, а ставить ради одного компонента большой пакет не хочется.
Спасибо.
Vitaly Grobshtein
Отправлен: 06.06.2007, 23:56
Вопрос задал: Vitaly (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Градов Юрий Михайлович
Здравствуйте, Vitaly!
Используйте Canvas и TextOut.
Этот пример выводит на Form1.Canvas текст. Пример из DelphiWord6
http://delphiword.narod.ru
Приложение:
--------- Глаза боятся - руки делают!
Ответ отправил: Градов Юрий Михайлович (статус: Студент)
Ответ отправлен: 07.06.2007, 00:51 Оценка за ответ: 3 Комментарий оценки: Спасибо, но мне нужна именно Label с ее Align и OnClick.
Отвечает: Архангельский Андрей Германович
Здравствуйте, Vitaly!
Raize Components теперь идет как замена популярной библиотеке RxLib2.75
В этой библиотеке есть очень много чего, в том числе и поворот текста и не только в Label
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Здраствуйте ! Проблема с TtreeView !
Как зделать так что бы в скомпилированной программе selectedindex изменялся ? напиример по томуже счетчику !
Заранее спасибо !
Отправлен: 07.06.2007, 00:52
Вопрос задал: VaNuk (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Gh0stik
Здравствуйте, VaNuk!
Вам достаточно воспользоваться таким подходом: node.SelectedIndex:=random(ImageList1.Count-1)+1;, где node:TTreeNode;
В данном случаем индекс будет сгенерирован произвольно в зависимости от количества картинок в ImageList1.
Более детальный код смотрите в приложении, а еще лучше полный проект в прикрепленном файле.
Good Luck!!!
Приложение:
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессор) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 07.06.2007, 23:27
Вопрос № 90.427
можно ли в Delphi перевести переменную типа real в переменную типа string.
Отвечает: Кэр Лаэда
Здравствуйте, Сидоров Александр Александрович!
можно
воспользуйтесь функцией FloatToStr()
Ответ отправил: Кэр Лаэда (статус: 10-ый класс)
Ответ отправлен: 07.06.2007, 15:30
Отвечает: Rusland
Здравствуйте, Сидоров Александр Александрович!
Для этого есть функция FloatToStr.
Ответ отправил: Rusland (статус: Профессионал) Россия, Казань Адрес: Мой адрес не дом и не улица, мой адрес советский союз WWW:Логотипы для сотовых телефонов ---- Ответ отправлен: 07.06.2007, 15:30
Отвечает: Ерёмин А.А.
Здравствуйте, Сидоров Александр Александрович!
Преобразование вещественного числа в строку делается с помощью функций FloatToStr() и FloatToStrF(). Вторая функция позволяет дополнительно указать количество символов, которые будут оставлены после запятой, а также общий формат числа. В общем случае первая функция выполняет то, что требуется. Пример: var a: Real; Str: String;
...
Str:=FloatToStr(a);
Удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.