Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 761
от 26.03.2007, 07:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 444, Экспертов: 75
В номере:Вопросов: 4, Ответов: 6


Вопрос № 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; что бы это функция могла работать в любом месте моей программы (программа создает не одну форму "Диалог"). Я понимаю, что это не лучший вариант. А есть другие?
Отправлен: 20.03.2007, 13:36
Вопрос задал: Карасев Алексей Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 11)

Отвечает: Ерёмин Андрей
Здравствуйте, Карасев Алексей Александрович!
Нет, других не изобрели - либо функция объявлена в модуле, где описан этот TTable и напрямую с ним работает, либо она в отдельном модуле с передачей в качестве параметра. Вариант с параметром предпочтительнее, т.к. это делает функцию независимой от конкретной формы. Ничего другого придумать не получится.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Помощь, советы, обмен опытом.
ICQ: 286867644
----
Ответ отправлен: 20.03.2007, 17:08

Отвечает: 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?
Заранее спасибо! С Уважением, Кирилл!
Отправлен: 20.03.2007, 22:11
Вопрос задал: Букаев Кирилл Иванович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.46 от 18.03.2007
Яндекс Rambler's Top100

В избранное