Помогите разобраться с использованием ShellExecute() для запуска стороннего приложения.
Задача следующая:
Есть таблица, в мемо-полях хранится список документов, в каждой строке — одна ссылка на документ.
Мемо-поля связаны с TDBMemo SH_EXTFILE.
Читаем в переменную AS одну из строк и проверяем на отсутствие пустоты.
AnsiString AS = " ";
if (HtmNumMax < 1 ) {
AS = RootDir + "\\Dbf\\Docs\\standart.htm";
} else {
AS = RootDir + SH_EXTFILE->Lines->Strings[HtmNumCurr];
};
Далее, при компилляции ShellExecute() выдается сообщение, что ожидается "const char" а имеется "AnsiString", и никак автоматом невозможно конвертонуть "AnsiString" в "const char".
К сожалению, я только начинаю изучать СИ, но достаточно хорошо знаю программирование в среде FoxPro, где все проблемы такого рода решаются автоматом, и вот возможно эти знания мне и клинят в разборках этой ошибки.
Если можно, помогите разобраться с конвертацией всяких строковых типов друг в друга, т.к. чувствую, что такого рода вопрос — не последний.
С уважением.
Виктор. Калининград.
16.08.04 18:12: Перенесено модератором из 'C/C++' — Odi$$ey
Здравствуйте, Nvisa, Вы писали:
N>Помогите разобраться с использованием ShellExecute() для запуска стороннего приложения.
N>Задача следующая:
N>Есть таблица, в мемо-полях хранится список документов, в каждой строке — одна ссылка на документ. N>Мемо-поля связаны с TDBMemo SH_EXTFILE. N>Читаем в переменную AS одну из строк и проверяем на отсутствие пустоты.
N> HtmNumMax = SH_EXTFILE->Lines->Count; N> if (HtmNumCurr > (HtmNumMax — 1) ) HtmNumCurr = HtmNumMax — 1;
N> AnsiString AS = " "; N> if (HtmNumMax < 1 ) { N> AS = RootDir + "\\Dbf\\Docs\\standart.htm"; N> } else { N> AS = RootDir + SH_EXTFILE->Lines->Strings[HtmNumCurr]; N> };
N>Далее, при компилляции ShellExecute() выдается сообщение, что ожидается "const char" а имеется "AnsiString", и никак автоматом невозможно конвертонуть "AnsiString" в "const char".
N> if((UINT)ShellExecute( N> NULL, N> "open", N> AS, N> NULL, N> NULL, N> SW_SHOWNORMAL) <= 32) N> { N> // errors N> }
N>К сожалению, я только начинаю изучать СИ, но достаточно хорошо знаю программирование в среде FoxPro, где все проблемы такого рода решаются автоматом, и вот возможно эти знания мне и клинят в разборках этой ошибки. N>Если можно, помогите разобраться с конвертацией всяких строковых типов друг в друга, т.к. чувствую, что такого рода вопрос — не последний.
N>С уважением. N>Виктор. Калининград.
В классе AnsiString есть ф-я c_str вернет вам const char*.
Здравствуйте, maximilian, Вы писали:
M>Здравствуйте, Nvisa, Вы писали:
N>>Далее, при компилляции ShellExecute() выдается сообщение, что ожидается "const char" а имеется "AnsiString", и никак автоматом невозможно конвертонуть "AnsiString" в "const char".
N>> if((UINT)ShellExecute( N>> NULL, N>> "open", N>> AS, N>> NULL, N>> NULL, N>> SW_SHOWNORMAL) <= 32) N>> { N>> // errors N>> }
M>Вместо AS нужно написать AS.c_str()
Максим, огромное спасибо, все заработало !!!
Такой оперативности в получении ответа я не ожидал — буквально пара минут!!!
Здравствуйте, pigeon, Вы писали:
P>Здравствуйте, Nvisa, Вы писали:
N>>Помогите разобраться с использованием ShellExecute() для запуска стороннего приложения.
N>>Задача следующая:
N>>Есть таблица, в мемо-полях хранится список документов, в каждой строке — одна ссылка на документ. N>>Мемо-поля связаны с TDBMemo SH_EXTFILE. N>>Читаем в переменную AS одну из строк и проверяем на отсутствие пустоты.
N>> HtmNumMax = SH_EXTFILE->Lines->Count; N>> if (HtmNumCurr > (HtmNumMax — 1) ) HtmNumCurr = HtmNumMax — 1;
N>> AnsiString AS = " "; N>> if (HtmNumMax < 1 ) { N>> AS = RootDir + "\\Dbf\\Docs\\standart.htm"; N>> } else { N>> AS = RootDir + SH_EXTFILE->Lines->Strings[HtmNumCurr]; N>> };
N>>Далее, при компилляции ShellExecute() выдается сообщение, что ожидается "const char" а имеется "AnsiString", и никак автоматом невозможно конвертонуть "AnsiString" в "const char".
N>> if((UINT)ShellExecute( N>> NULL, N>> "open", N>> AS, N>> NULL, N>> NULL, N>> SW_SHOWNORMAL) <= 32) N>> { N>> // errors N>> }
N>>К сожалению, я только начинаю изучать СИ, но достаточно хорошо знаю программирование в среде FoxPro, где все проблемы такого рода решаются автоматом, и вот возможно эти знания мне и клинят в разборках этой ошибки. N>>Если можно, помогите разобраться с конвертацией всяких строковых типов друг в друга, т.к. чувствую, что такого рода вопрос — не последний.
N>>С уважением. N>>Виктор. Калининград. P>В классе AnsiString есть ф-я c_str вернет вам const char*. P>