Форум: "Основная";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
ВнизКосяк при создании форм Найти похожие ветки
← →
SPeller (2002-05-05 05:54) [0]Такой вот косяк в Дельфях. В модуле проекта в зависимости от передаваемых программе параметров выбираю как она дальше будет работать и какие формы создавать:
tm:=uppercase(paramstr(1));
if (tm="/C")or(tm="C")or(tm="-C") then
Application.CreateForm(TfrmConfig, frmConfig)
else begin
Application.CreateForm(TfrmOpen, frmOpen);
Application.CreateForm(TfrmTest, frmTest);
Application.CreateForm(TfrmEnd, frmEnd);
end;
Но. Если так сделать, то проект перестаёт запускаться вообще(!), хотя с успехом компилируется (Ctrl+F9) и выполняется. При попытке закрыть страницу с модулем вылазит
Error in module ***: Call to Application.CreateForm is missing or incorrect.
Закрыть проект можно только на File -> Close All. То же самое если открывать проект. Вылазит эта мессага и проект не загружается.
Однако опять же это можно преодолеть если сделать так:
tm:=uppercase(paramstr(1));
if (tm="/C")or(tm="C")or(tm="-C") then
Application.CreateForm(TfrmConfig, frmConfig);
if not((tm="/C")or(tm="C")or(tm="-C")) then begin
Application.CreateForm(TfrmOpen, frmOpen);
Application.CreateForm(TfrmTest, frmTest);
Application.CreateForm(TfrmEnd, frmEnd);
end;
Фактически никакой разницы в этих вариантах нет, алгоритм работы один и тот же, первый даже лучше с точки зрения написания кода, но вот Дельфям первый не нравится хоть убей.
Что это за нафиг и можно ли как-нибудь справиться с этим ??
← →
SeF (2002-05-05 08:29) [1]не знаю что у тебя но:
program Project1;
uses
Forms,sysutils,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas" {Form2},
Unit3 in "Unit3.pas" {Form3},
Unit4 in "Unit4.pas" {Form4};
{$R *.res}
var
tm:string;
begin
Application.Initialize;
tm:=uppercase(paramstr(1));
if (tm="/C")or(tm="C")or(tm="-C")then
Application.CreateForm(TForm1, Form1)
else
begin
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
end;
Application.Run;
end.
Замечательно скомпилился и выполнился..........
"истина где-то рядом..."
← →
SPeller (2002-05-05 11:28) [2]Вот полностью код модуля:
program UniTest;
uses
Forms,
sysutils,
Windows,
controls,
utconst in "UTConst.pas",
UTFuncs in "UTFuncs.pas",
UTFileFuncs in "UTFileFuncs.pas",
mfrmOpen in "mfrmOpen.pas" {frmOpen},
mfrmTest in "mfrmTest.pas" {frmTest},
mLED in "mLED.pas",
mfrmend in "mfrmend.pas" {frmEnd},
mfrmconfig in "mfrmconfig.pas" {frmConfig},
strfuncs in "strfuncs.pas";
{$R *.res}
var tm:string;
begin
{$MAXSTACKSIZE 2000000}
{$X+}
setpriorityclass(getcurrentprocess,realtime_priority_class);
screen.Cursor:=crappstart;
apppath:=extractfilepath(application.exename);
tm:=ut_testfolder;
if not directoryexists(apppath+tm)then createdirectory(pchar(apppath+tm),nil);
tm:=ut_testfolder+"\"+ut_testimgfolder;
if not directoryexists(apppath+tm)then createdirectory(pchar(apppath+tm),nil);
Application.Initialize;
tm:=uppercase(paramstr(1));
if (tm="/C")or(tm="C")or(tm="-C") then begin
Application.CreateForm(TfrmConfig, frmConfig)
end else begin
Application.CreateForm(TfrmOpen, frmOpen);
Application.CreateForm(TfrmTest, frmTest);
Application.CreateForm(TfrmEnd, frmEnd);
end;
screen.Cursor:=crdefault;
application.HintPause:=300;
application.HintHidePause:=20000;
setpriorityclass(getcurrentprocess,normal_priority_class);
Application.Run;
end.
Ну не хотит он работать как надо.
← →
KSergey (2002-05-06 10:20) [3]Попробуйте убрать AutoCreate формы в св-свойствах проекта. Может в этом дело? Может это место дельфя не может корректно обработать?
← →
Севостьянов Игорь (2002-05-07 13:23) [4]Вот тебе рабочий пример...
Причем не забудь в Project Options указать на закладке Forms
AutoCreate forms: frmConfig и ничего более...
Нужен код пришлю пиши на мыло...
program UniTest;
{$MAXSTACKSIZE 2000000}
{$X+}
uses
Forms,
SysUtils,
Windows,
Controls,
FileCtrl,
mfrmOpen in "mfrmOpen.pas" {frmOpen},
mfrmTest in "mfrmTest.pas" {frmTest},
mfrmEnd in "mfrmEnd.pas" {frmEnd},
mfrmConfig in "mfrmConfig.pas" {frmConfig};
{$R *.RES}
const
UT_TestFolder = "Testing";
UT_TestImgFolder = "Images";
var
AppPath, tm: string;
begin
SetPriorityClass(GetCurrentProcess, RealTime_Priority_Class);
Screen.Cursor := crAppStart;
AppPath := ExtractFilePath(Application.ExeName);
ForceDirectories(AppPath+"\"+UT_TestFolder);
ForceDirectories(AppPath+"\"+UT_TestImgFolder);
Application.Initialize;
tm := UpperCase(ParamStr(1));
if (tm = "/C") or (tm = "C") or (tm = "-C") then
begin
Application.CreateForm(TfrmConfig, frmConfig);
end
else
begin
Application.CreateForm(TfrmOpen, frmOpen);
Application.CreateForm(TfrmTest, frmTest);
Application.CreateForm(TfrmEnd, frmEnd);
end;
Application.HintPause := 300;
Application.HintHidePause := 20000;
SetPriorityClass(GetCurrentProcess, Normal_Priority_Class);
Screen.Cursor := crDefault;
Application.Run;
end.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c