Member
Статус: Не в сети Регистрация: 14.08.2003 Откуда: Питер
Вот еще такой вопрос:
Имеется массив как глабальная переменная:
Код:
type MatrixPtr = ^MatrixRec; MatrixRec = record MatrixRow : byte; MatrixCol : byte; MatrixArray : pointer; end; MatrixElement = real;
var Matr1: MatrixPtr;
Вопрос вот какой: Как программе отслеживать за изменением в массиве (nil он или нет)??? Просто я пока сделал такое отслеживание при помощи таймера, который каждые N мс проверяет Matr1. Но этот способ мне не нравиться. Есть ли другой способ???
Advanced member
Статус: Не в сети Регистрация: 23.10.2003 Откуда: Иркутск/Майкоп
Halfback А с какой целью? Он в процессе расчетов должен стать nil, но расчет не остановится? Если нужно показать какой-нибудь индикатор прогресса, лучше вызывать рисующую его процедуру из расчётной.
_________________ Края каждого совершенно нового крышка процессора не на 100% гладкая. Это связано с тем, что следов мастерства не избежать. (c) Али.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Halfback раскажи главную мотивацию таких действиях. Что тебе именно не нравиться и что нужно изменить/оптимизировать?
Если убрать таймер - воспользоваться потоком(класс TThread), если проверка на nil - воспользоваться Assigned.
Member
Статус: Не в сети Регистрация: 14.08.2003 Откуда: Питер
vorDaemonRay Adams Ну в общем так: пишу прогу для работы с матрицами - сложение, вычитание и всякое такое. Готовый юнит по операциям с матрицами есть. Но не это главное. Я хочу сделать упор на интерфейс. Т.е. например открываю файл с ячейками матрицы --> вывожу в StringGrid --> записываю в память --> произвожу вычисления. И все эти операции хочу динамически отображать в ListBox'е. Т.е. ListBox - в своем роде что-то вроде строки состояния матрицы Matr11( ну и/или Matr2). Конечно эти фичи можно прикрутить к событиям типа ButtonClick и тому подобных но хочу чтобы инфа о состоянии матрицы выводилась самостоятельно т.е. ни к чеме не была бы привязана.
Посему пока полностью соглашусь с Daemon
Цитата:
Если убрать таймер - воспользоваться потоком(класс TThread)
Только с потоками не дружу. Вообще. Поэтому и прошу помочь написать поток, который отслеживает за изменениями в матрице Matr1 (проверки на nil пока будет достаточно, но возможно будет какое-нибудь дополнение типа проверки матрици на вырожденность, симметричность и прочую байду).
Вот такие пироги.
Advanced member
Статус: Не в сети Регистрация: 09.06.2003 Откуда: USSR
Цитата:
Т.е. например открываю файл с ячейками матрицы --> вывожу в StringGrid --> записываю в память --> произвожу вычисления. И все эти операции хочу динамически отображать в ListBox'е.
Ну так кто мешает в конце расчета выводить данные в ListBox? Ты же сам расчет делаеш? А не сторонний поток!
Цитата:
Только с потоками не дружу. Вообще. Поэтому и прошу помочь написать поток, который отслеживает за изменениями в матрице Matr1 (проверки на nil пока будет достаточно, но возможно будет какое-нибудь дополнение типа проверки матрици на вырожденность, симметричность и прочую байду
Выкини из головы, зачем тебе? Ты сам меняеш данные , азначить знаеш когда они изменились, ну так и выводи изменения.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
Lord_of_Darkness хе Потому что динамический массив можно передавать без объявления типа, а массив с границами - с объявлением типа, так издавна повелось, когда Паскаль не имел типа динамических массивов.
Member
Статус: Не в сети Регистрация: 05.01.2004 Откуда: Челябинск
У меня вопрос: при выполнении программы выпадет ошибка
Access violation at address 00403354 in module 'WareHouse.exe'. Read of address 008C8000
Суть проги следующая, мне нужно сделать так: при кликании на основной форме, эта форма должна закрыться и открыться другая:
procedure THelloForm.ContinueClick(Sender: TObject);
begin
RegistrationForm.Show;
HelloForm.Free;
end;
но при кликании выкидываеться ошибка, ее (ошибку) можно закрыть, и продолжить работать. Помогите плиз, как сделать, реализовать мою идею?:))) Наверно вопрос ламерский, но я недавно перешел с Паскаля на делфи и пока еще не со всем знаком.
Member
Статус: Не в сети Регистрация: 23.09.2004 Откуда: Казань
Вместо HelloForm.Free попробуй HelloForm.Close
Добавлено спустя 28 минут, 8 секунд: Кто-нибудь работал с Virtual Treeview?
Есть два вопроса (глупые, наверно, но я только второй день с ним вожусь и успел уже прогу перевести с ListView на VTV, причем все работает ):
1. Есть ли там опция автоматического изменения ширины колонок под контент? Если нет, то как это можно реализовать?
2. Как получить доступ к конкретному по номеру ноду? Я пока дошел только до такого:
Код:
i := 0;
Node := vstMain.GetFirst; while i <= vstMain.ChildCount[nil] - 1 do begin NodeData := vstMain.GetNodeData(Node);
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения