Два приложения по очереди \ Null
И ещё, как узнать, что поле содержит Null.
Пробовала
if (DM1->Q2->FieldByName["Adr"]->AsString=="")
ShowMessage("Есть Null!");
-не получается.
Спасибо всем, кто сможет помочь.
вот например
spawnlp(P_WAIT,e.c_str(), e.c_str(), h.c_str(), NULL);
где e - путь к ЕХЕ программы
h - ключи
2.
if (DM1->Q2->FieldByName["Adr"]->AsString.Legth()==0) ShowMessage("Есть Null!");
Привет! Подскажите, пожалуйста, как запустить из программы два приложения по очереди( т.е. дождаться окончания одного, потом запустить второе). Первое приложение запускаю с помощью CreateProcess.
И ещё, как узнать, что поле содержит Null.
Пробовала
if (DM1->Q2->FieldByName["Adr"]->AsString=="")
ShowMessage("Есть Null!");
-не получается.
Спасибо всем, кто сможет помочь.
По поводу процессов смотри WaitForSingleObject.
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
if(!CreateProcess(0, // No module name (use command line).
"c:\\WINNT\\NOTEPAD.EXE", // Command line.
0, // Process handle not inheritable.
0, // Thread handle not inheritable.
false, // Set handle inheritance to FALSE.
0, // No creation flags.
0, // Use parent's environment block.
0, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi )) // Pointer to PROCESS_INFORMATION structure.
{
ShowMessage("CreateProcess failed");
return;
}
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
//запуск второй программы через ShellExecute
ShellExecute(NULL, "", "c:\\WINNT\\regedit.exe", NULL, NULL, 0);
P.S. Последний параметр у CreateProcess - указатель на переменную типа PROCESS_INFORMATION (как и в комментарии). Просто броузер неверно отображает.
Привет! Подскажите, пожалуйста, как запустить из программы два приложения по очереди( т.е. дождаться окончания одного, потом запустить второе). Первое приложение запускаю с помощью CreateProcess.
И ещё, как узнать, что поле содержит Null.
Пробовала
if (DM1->Q2->FieldByName["Adr"]->AsString=="")
ShowMessage("Есть Null!");
-не получается.
Спасибо всем, кто сможет помочь.
По воводу NULL в поле:
if (DM1->Q2->FieldByName["Adr"]->IsNull)
ShowMessage("Есть Null!");
С приложениями теперь проблем нет, а с Null остались.
У меня есть такая процедура:
if(DM1->Q5->FieldValues["Adress"]->AsString.Length()==0)
AnsiString str="C:\\Program Files\\Windows NT\\Accessories\\ImageVue\\kodakimg.exe";
else
AnsiString str="C:\\Program Files\\Windows NT\\Accessories\\ImageVue\\kodakimg.exe "+ DM1->Q5->FieldValues["Adress"];
PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
CreateProcess(NULL, str.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
при компиляции выдает кучу ошибок, в том числе в других частях программы.
Если убрать проверку на Null - все работает (используя IsNull-то же самое).
Кто-нибудь знает, что это может быть?
попробуй написать
[COLOR=darkblue]if(DM1->Q5->FieldByName("Adress")->AsString.Length() == 0)[/COLOR]
Вместо if(DM1->Q5->FieldValues["Adress"]->AsString.Length()==0)
попробуй написать
[COLOR=darkblue]if(DM1->Q5->FieldByName("Adress")->AsString.Length() == 0)[/COLOR]
Пробовала - всё по-прежнему.
А что за ошибки?
Undefined symbol 'str' // строка, задающая путь в CreateProcess
Ambiguity between '_fastcall Variant::operator bool() const' and ''_fastcall Variant::operator__int64() const'
Ambiguity between '_fastcall Variant::operator float() const' and ''_fastcall Variant::operator double() const'
Последние два сообщения относятся к строке
DM1->Q5->Filter = "old" + " = '" + DM1->Q1->FieldValues["OLD"] + "'";
которая находиться в другой процедуре, осуществляющей фильтр записей в наборе Q5 с номером("old"), совпадающим со значением поля "OLD" активной записи Q1.
Но как это связано с проверкой на Null не могу понять.
Undefined symbol 'str' // строка, задающая путь в CreateProcess
Ambiguity between '_fastcall Variant::operator bool() const' and ''_fastcall Variant::operator__int64() const'
Ambiguity between '_fastcall Variant::operator float() const' and ''_fastcall Variant::operator double() const'
Последние два сообщения относятся к строке
DM1->Q5->Filter = "old" + " = '" + DM1->Q1->FieldValues["OLD"] + "'";
которая находиться в другой процедуре, осуществляющей фильтр записей в наборе Q5 с номером("old"), совпадающим со значением поля "OLD" активной записи Q1.
Но как это связано с проверкой на Null не могу понять.
Ты str объявляешь в if и при выходе из if str уничтожаеться. Поэтому объяви str до всех if
[COLOR=darkblue]
AnsiString str;
if(DM1->Q5->FieldValues["Adress"]->AsString.Length()==0)
str="C:\\Program Files\\Windows NT\\Accessories\\ImageVue\\kodakimg.exe";
else
str="C:\\Program Files\\Windows NT\\Accessories\\ImageVue\\kodakimg.exe "+ DM1->Q5->FieldValues["Adress"];
PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si, 0, sizeof(si));
si.cb = sizeof(si);
CreateProcess(NULL, str.c_str(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
[/COLOR]
Замени и скажи какие ошибки
Ты str объявляешь в if и при выходе из if str уничтожаеться. Поэтому объяви str до всех if
Замени и скажи какие ошибки
А ошибок больше нет!:)
Большое спасибо за помощь.