Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Внизпереданный exe-ку параметр Найти похожие ветки
← →
tamroF (2004-06-04 02:30) [0]в отдельном юните:
function Prove(ParamCt:integer;ParamS:string):boolean;
begin
Result:=False;
if ParamCt > 0 then
if ParamS="111" then
Result:=True;
end;
эта функция проверяет переданный параметр exe-ку (он один)..
а это - в dpr:begin
if not Prove(ParamCount,ParamStr(1)) then Exit;
Application.Initialize;
Application.CreateForm(TForm1, Form1); // пусть так..
Application.Run;
end.
при запуске без параметра - все ок. (не запускается)
при передачи какого либо параметра exe-ку возникает runtime error..
так вот вопрос: правильно ли принят параметр?!
или в чем тут дело?
← →
Palladin © (2004-06-04 02:38) [1]да черт его знает в чем тут дело, но явно не в параметре...
← →
piople © (2004-06-04 06:17) [2]На обработчик OnCreate:
begin
if ParamCount < 1 then Halt(1)
else //Здусь делай все что надо!!!!
end;
← →
V-A-V (2004-06-04 06:26) [3]Ошибка видимо где-то в Form1. Попробуй прошерстить отладчиком по F8 пошагово, думаю, что найдешь где собака зарыта...
← →
piople © (2004-06-04 06:29) [4]
> tamroF
А может вместо Exit попробовать Halt(1)???
← →
piople © (2004-06-04 06:34) [5]Все нормально работает!!!!
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.res}
function Prove(ParamCt:integer;ParamS:string):boolean;
begin
Result:=False;
if ParamCt > 0 then
if ParamS="111" then
Result:=True;
end;
begin
if not Prove(ParamCount,ParamStr(1)) then Exit;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
← →
V-A-V (2004-06-04 06:36) [6]Можно пробовать, что угодно и даже
Application.Terminate
, но если вApplication.CreateForm(TForm1, Form1);
возникает ошибка, то рыть надо в Form1
← →
piople © (2004-06-04 06:39) [7]
> V-A-V
Повторяю
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.res}
function Prove(ParamCt:integer;ParamS:string):boolean;
begin
Result:=False;
if ParamCt > 0 then
if ParamS="111" then
Result:=True;
end;
begin
if not Prove(ParamCount,ParamStr(1)) then Exit;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
РАБОТАЕТ НОРМАЛЬНО!!!!!
← →
V-A-V (2004-06-04 06:44) [8]А у tamroF нормально работает, у него может в Form1 столько кода наворочено, что и не снилось, в голом виде оно конечно будет работать...
← →
piople © (2004-06-04 06:47) [9]
> А у tamroF нормально работает, у него может в Form1 столько
> кода наворочено, что и не снилось
И откуда же это те упало???
← →
V-A-V (2004-06-04 06:52) [10]> И откуда же это те упало???
А ты, что весь код автора сабжа видел???
← →
piople © (2004-06-04 07:07) [11]
> V-A-V
А ты что ли видел?
← →
tamroF (2004-06-04 10:33) [12]>> V-A-V (04.06.04 06:36) [6]
>> Можно пробовать, что угодно и даже Application.Terminate, но если в >> Application.CreateForm(TForm1, Form1); возникает ошибка, то рыть надо в Form1
Да, ошибка вылазит на креэйте..
>> piople © (04.06.04 06:39) [7]
>> Повторяю
>> РАБОТАЕТ НОРМАЛЬНО!!!!!
) это радует, но я ж не просто так сабж завел...
>> V-A-V (04.06.04 06:44) [8]
>> А у tamroF нормально работает, у него может в Form1 столько кода наворочено,
>> что и не снилось, в голом виде оно конечно будет работать...
Это правда.. действительно, оч. много..
К большому проекту (крупнокалиберному курсовику) решил в конце создать маленькую отдельную программку, кот. создает на рабочем столе ярлык на нее... с параметром..
(чтоб "повысить" уровень зашиты доступа)
все сделал и оттестил на пустом проекте, принимая этот параметр..
работает...
в курсач внедрил и вот те на.. как будто на пустом месте... сыпет..
так вот halt(1) (вместо Exit) нормально завершает работу программы, когда параметр приходит неверный (не 111)
ну то есть, когда и попадает на halt...
а вот еси параметр верный (как в примере - 111), halt обходит и тот же runtime error...
ну а вообще, почему обычный внешний параметр может давать такой эффект?!
← →
Anatoly Podgoretsky © (2004-06-04 10:47) [13]Ты смотрел справку по Exit? Область применимости. Я бы не рискнул использовать это в дпр файле.
← →
tamroF (2004-06-04 10:59) [14]Да, и сыпет она на первом же обращении dll:
const
fDLL = "fDLL.dll";
...
var
CreateSocket: procedure; stdcall;
lib : THandle;
...
begin
//------------------------------------------- CreateSocket
lib := LoadLibrary(fDLL);
CreateSocket := GetProcAddress(lib, "CreateSocket");
if @CreateSocket <> nil then
CreateSocket else // тута
ShowMessage("Error load socket...");
FreeLibrary(lib);
...
← →
tamroF (2004-06-04 11:01) [15]>> смотрел справку по Exit? Область применимости.
Нет.
еще...
А использую только от нежелания писать "начало-конец"
>> Я бы не рискнул использовать это в дпр файле.
но ведь уже от этого избавился...
← →
han_malign © (2004-06-04 11:03) [16]>ну а вообще, почему обычный внешний параметр может давать такой эффект?!
- он не дает никакого эффекта, у тебя код проекта протух(есть у него такое свойство), в проекте и ищи...
З.Ы. Если проверку параметра убрать - проект работает?
>Ты смотрел справку по Exit? Область применимости. Я бы не рискнул использовать это в дпр файле.
- все нормально с Exit, обычное ветвление, у него проблема в другом...
только что проверил:
if(...)then exit;
..............
test EAX,EAX
jz +... - на Halt0
← →
han_malign © (2004-06-04 11:07) [17]> if @CreateSocket <> nil then
- ну проверил ты, что адрес переменной не nil, и что...
if(Assigned(CreateSocket))then
← →
tamroF (2004-06-04 11:46) [18]>> Если проверку параметра убрать - проект работает?
Проект просто так работает (без проверки параметров и без их передачи)
но если передавать параметр (не важно какой), а в проге его не проверять (или проверять, но все равно грузить), то лезет тот же runtime error..
>> ну проверил ты, что адрес переменной не nil, и что...
>> if(Assigned(CreateSocket))then
А это тут вообще не причем...
dll есть. функция есть. И она assigned.
проект рабочий.
НО передача ему любого параметра вызывает runtime, когда проект запускается..
вот проблема.
← →
Anatoly Podgoretsky © (2004-06-04 11:52) [19]han_malign © (04.06.04 11:03) [16]
Я не говорю, что не работает, но я предпочитаю писать так, чтобы даже возможности ошибки не было.
И конечно я уверен, что дело не в этом, а тех кусках кода которые он не привел.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.032 c