Вниз
Скачать: CL | DM;

Очень кривое решение?   Найти похожие ветки 

← →
Vemer ©   (2004-01-14 13:26) [0]

Здравствуйте.
В начале писания программы применил следующее решение - пишу процедуру и функцию в коде без TForm. (или т.п.) спереди, а потом объявляю ее в Var модуля. После этого она замечательно вызываеться по имени из всех модклей, где "несущий прописан".

То есть примерно так:

Var
DM: TDM;// - Сам датамодуль
Function Call_Proc(N1:Real):Integer; // - моя функция(пример)

{$R *.dfm}
. . . .

Function Call_Proc(N1:Real):Integer;
Begin
Result := Trunc(N1);
End


Вопрос в надежности и кривости такого решения.
Пихнуть в Public не предлагать.
А как еще можно "определить некоторый набор действий", чтобы по имени вызывался (только пожалуйста с примерами)?


← →
DVM ©   (2004-01-14 13:34) [1]

Вынеси все функции и процедуры, которые используются несколькими другими модулями в отдельный модуль, не содержащий форм. Так будет логичнее.


← →
GLFox   (2004-01-14 13:38) [2]

Не совсем понятно зачем тут VAR. Обычно заголовок функции объявляется в разделе interface, а реализация в implementation. Вот и вся заморочка... Или я чего-то недопонял...


← →
Vemer ©   (2004-01-14 13:39) [3]

To DVM
Там же написано - датамодуль. Я специально все в него пихнул, т.к. почти все на него ссылаеться и собственного кода у него мало.. Или я не понял про "отдельный модуль"..


← →
DVM ©   (2004-01-14 13:41) [4]


> Там же написано - датамодуль

А что это за тип TDM? Что за ним стоит?


← →
Vemer ©   (2004-01-14 13:41) [5]

To GLFox Обычно наверно так и делаеться.. Но тогда я D только начинал принать.. И все работает.. Пример ни в коем случае приводить не надо...


← →
alex_*** ©   (2004-01-14 13:43) [6]

Я чего-то тоже не понял.. причем тут TDM вообще? Call_Proc к нему не относится.


← →
Vemer ©   (2004-01-14 13:44) [7]

to DVM
Это и есть датамодуль, DM - его название.. этот код весь в начале модуля написан..


← →
GLFox   (2004-01-14 13:45) [8]

Простейший пример:


unit Utils;

interface

function GetBinFlag(iFlags, iFlagNum: Cardinal):Boolean;
procedure InvertBinFlag(var iFlags: Cardinal; iFlagNum: Cardinal);

implementation

procedure InvertBinFlag(var iFlags: Cardinal; iFlagNum: Cardinal);
var iMask:Cardinal;
begin
iMask:=1 shl iFlagNum;
iFlags:=iFlags xor iMask;
end;

end.


← →
Sandman25 ©   (2004-01-14 13:46) [9]

Vemer © (14.01.04 13:26)

Судя по всему, Вы начинали с Delphi. Нет ничего страшного в использовании обычных процедур и функций. Они ничем не хуже методов. А в некоторых случаях (как у Вас в примере) даже лучше :)


← →
Vemer ©   (2004-01-14 13:53) [10]

Всем большое спасибо.
Начинал я с Access. Потом на D переполз (как инструмент для БД).
Ну с/х образование у меня, поэтому все эти (даже простые)паскакалевские заморочки иногда в тупик ставят.
Просто первый серьезный заказ, хочеться сделать все правильно и надежно. Сейчас буду разбираться.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.006 c
1-83195
xyz
2004-01-14 16:47
2004.01.26
Build with run time packages


3-83102
evniy12
2003-12-29 08:23
2004.01.26
Как загрузить в Combobox данные через ADO


4-83306
snake1977
2003-11-20 17:25
2004.01.26
Кнопка в другом приложении


1-83149
Goida
2004-01-15 11:21
2004.01.26
Независимая дата и время


14-83251
Думкин
2004-01-04 07:25
2004.01.26
С Днем Рождения! 4 января.




   Наверх