Вопрос № 79070: Здраствуй народ. У меня вопрос, но он более подходит под статус "обмен опытом". Смысл вот в чем: есть некая функция (обзовем ее func(a: Integer): Integer; Но дело в том что ее работа основана на поиски в таблице (Table: TTable). И если я эт...Вопрос № 79084: дНПНЦХЕ ЩЙЯОЕПРШ ОНДЯЙЮФХРЕ Я ВЕЦН МЮВЮРЭ ХГСВЕМХЕ ЯЕРЕБШУ ОПЕКНФЕМХИ. рН ЕЯРЭ ЙЮЙ МЮОХЯЮРЭ ОПНЯРЕИЬСЧ ОПНЦПЮЛЛС ДКЪ ОЕПЕДЮВХ ЯННАЫЕМХИ Б ЯЕРХ....Вопрос № 79136: Здравствуйте Уважаемые эксперты! Вопросы у меня возникли при работае с компонентом AlphaSkins 4.83. 1) как в OpenDialog сделать так, чтобы сразу отображалась нужная папка, а не "Рабочий стол".
2) как убрать сетку при нажатии на кнопку в...Вопрос № 79165: Уважаемые Эксперты !
Как правильно передать указатель на массив
в процедуру и, самое главное,
Как правильно описать указатель на массив в
самой процедуре ?
Спасибо....
Вопрос № 79.070
Здраствуй народ. У меня вопрос, но он более подходит под статус "обмен опытом". Смысл вот в чем: есть некая функция (обзовем ее func(a: Integer): Integer; Но дело в том что ее работа основана на поиски в таблице (Table: TTable). И если я эту функцию переношу в некий модуль My_Unit, где сбоник моих функций и процедур, то соответсвенно функция пребразуется func(a: Integer; var Table: TTable): Integer; что бы это функция могла работать в любом месте моей программы (программа создает не одну форму "Диалог").
Я понимаю, что это не лучший вариант. А есть другие?
Отвечает: Ерёмин Андрей
Здравствуйте, Карасев Алексей Александрович!
Нет, других не изобрели - либо функция объявлена в модуле, где описан этот TTable и напрямую с ним работает, либо она в отдельном модуле с передачей в качестве параметра. Вариант с параметром предпочтительнее, т.к. это делает функцию независимой от конкретной формы. Ничего другого придумать не получится.
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Отвечает: Melamed
Здравствуйте, Карасев Алексей Александрович!
В Delphi рекомендуют все, что связано с данными, помещать в Модуль данных. Там строить связи между
таюлицами и туда ставить компонент TDataSource. В формах только у компонент, которых
1088;аботают с данными из БД ставяться нужный компонент TDataSource. Они из экспектора объектов видны,
если Ваш модуль данных присоединен оператором Uses в секции interface.
Вашу функцию я бы поместил бы в модуль данных и пеоеджавал только целочисленный параметр,
если вы, конечно, не планируете ее использовать в других своих проектах.
Если же вы планируете использовать ее в других своих проестах, то я бы написал бы заголовок
этой функции следующим образом
function func(a:integer; const Table:TTable):integer;
В этом случае, не будет лишних проверок, а изменять содержимое таблицы и значений полей
будет возможно.
Ответ отправил: Melamed (статус: 10-ый класс)
Ответ отправлен: 20.03.2007, 17:51
Вопрос № 79.084
дНПНЦХЕ ЩЙЯОЕПРШ ОНДЯЙЮФХРЕ Я ВЕЦН МЮВЮРЭ ХГСВЕМХЕ ЯЕРЕБШУ ОПЕКНФЕМХИ. рН ЕЯРЭ ЙЮЙ МЮОХЯЮРЭ ОПНЯРЕИЬСЧ ОПНЦПЮЛЛС ДКЪ ОЕПЕДЮВХ ЯННАЫЕМХИ Б ЯЕРХ.
Отправлен: 20.03.2007, 14:52
Вопрос задал: Oleg73 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Melamed
Здравствуйте, Oleg73!
С компонентов TSocketClient и TSocketServer.
А вообще то надо смотреть более конкретно Вашу программу. Может быть, Вам подойдут сообщения,
которые уже реализуют треюуемые Вами протоколы.
Ответ отправил: Melamed (статус: 10-ый класс)
Ответ отправлен: 20.03.2007, 15:22
Вопрос № 79.136
Здравствуйте Уважаемые эксперты! Вопросы у меня возникли при работае с компонентом AlphaSkins 4.83. 1) как в OpenDialog сделать так, чтобы сразу отображалась нужная папка, а не "Рабочий стол".
2) как убрать сетку при нажатии на кнопку в OpenDialog и в PageControl. В Button убрал с помощью свойства FocusMargin, а здесь никак не найду как... 3) можно ли как-нибудь убрать popup меню при клике на заголовок формы, т.е чтобы нельзя было менять скин? Только чтобы SkinProvaider оставался на форме... и наконец 4) можно ли как-нибудь "проскинить" StringGrid?
Заранее спасибо! С Уважением, Кирилл!
Отвечает: Mo-skin
Здравствуйте, Букаев Кирилл Иванович!
По первому пункту:
OpenDialog1.InitialDir:=ExtractFilePath(Application.ExeName);
указывается папка в которой находится исполняемый файл вашего приложения.
Можете указать и любое другое место, например
OpenDialog1.InitialDir:='C:/WINDOWS';
--------- Чем больше женщину мы меньше, тем меньше больше мы ее!
Ответ отправил: Mo-skin (статус: 4-ый класс)
Ответ отправлен: 20.03.2007, 22:39 Оценка за ответ: 5
Вопрос № 79.165
Уважаемые Эксперты !
Как правильно передать указатель на массив
в процедуру и, самое главное,
Как правильно описать указатель на массив в
самой процедуре ?
Спасибо.
Отправлен: 21.03.2007, 05:45
Вопрос задал: Health (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: sir henry
Здравствуйте, Health!
Указатель на массив - это адрес его расположения в памяти. Поэтому процедура должна объявлятся либо с параметром-указателем, типа Pointer, либо, если заранее известен тип массива, типизированным указателем.
Type
TArray: array[0..9] of integer; //Это тип - Ваш массив
Var
PMyArr: ^TArray; //Это типизированный указатель на тип-Ваш массив
Arr2: array[0..9] of integer; //Это уже готовая переменная-массив
Процедура объявляется либо так:
Procedure MyProc(pp: Pointer);
Массив туда передается так:
MyProc(Arr2^);
Либо процедуру объявить с типизированным указателем:
Procedure MyProc(pp: Pointer);
Тогда в нее ничего кроме такого массива передать будет нельзя.
MyProc(PMyArr);
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 21.03.2007, 06:19
Отвечает: Melamed
Здравствуйте, Health!
Или использую так называемый открытый массив. В этом случае, вы можете передавать одномерный
массив любой длины, и работа с ним в функции будет легче
Пример смотри в приложении
Приложение:
Ответ отправил: Melamed (статус: 10-ый класс)
Ответ отправлен: 21.03.2007, 07:33