![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ShellExecute
Nonamers © (2006-06-01 00:53:00)Такая проблемма, нада было сделать ссылку на файл лежащий в папке с программой, посоветовали сделать так:
1. Создал переменную dirRoot : string;
2. В OnCreate формы написал
dirRoot := ExtractFileDir(ParamStr(0));
3. Потом
ShellExecute(h27, 'open', dirRoot+'saper.doc', '', dirRoot, SW_SHOWDEFAULT);
Но проблемма в несовместимости string и PansiChar. Можно ли как-нить string переделать в PansiChar? А может есть доугое решение моей проблеммы?
evvcom (2006-06-01 09:33:00) [1]
> F1 не могу нажать, потому что Делфи справки у меня нет
Ты где такого кастрата взял?
> строка, содержащаяся в DirRoot на конце не имеет слэша
А отладчика в твоем Delphi тоже нет? Попробуй почитать про точки останова и трассировку по шагам (F4,F7,F8)
Nonamers (2006-06-01 08:26:00) [2]ВСЕМ СПАСИБО !
Все получилось)) Сделал по совету Cashmare ©
ShellExecute(h27, 'open', pchar(dirRoot+'saper.doc'), '', pchar(dirRoot), SW_SHOWDEFAULT);
Раньше не получалось, потому что не подумал, что строка, содержащаяся в DirRoot на конце не имеет слэша, поэтому и не открывался файл))
Nonamers (2006-06-01 08:12:00) [3]To ASoft
F1 не могу нажать, потому что Делфи справки у меня нет(((
> PAnsiChar(S)
Как я понял, она преобразовывает переменную S(string) в PAnsiChar? Ну сделал я так. Написал
> Var
> PC:PAnsiChar;
> ...
> Begin
> PC:=PansiChar(dirRoot);
> ...
> ShellExecute(h27, 'open', PC+'saper.doc', '', PC, SW_SHOWDEFAULT);
>
> ...
Но он опять кричит о несовместимости PansiiChar и String (( .
А если использовать эту
function TSettingsManager.GetRootDir: string;
begin
Result := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
end;
Вылазиет ошибка - Function needs result type - .
И вообще, обязательно ее использовать, чтобы узнать корн. директорию? Можно же эту?
dirRoot := ExtractFileDir(ParamStr(0));
Сильно не ругайте, лучше обьясните))
ASoft (2006-06-01 07:23:00) [4]Nonamers (01.06.06 03:32) [6]
вас, практически уже навели на путь истинный. осталось нажать F1 на этой функции...
тем не менее:
dirRoot - строковая переменная с путем к вашему файлу
пусть S будет именем файла (doc)
посылая вышеуказанной функции dirRoot вы возвращаете правильно оформленный путь к файлу.
Остается объединить результат функции и S, преобразовать в PChar и вызывать в ShellExecute.
Nonamers (2006-06-01 03:32:00) [5]to Kolan © and ЮЮ ©
Извеняйте конечно, но в Делфи я неособо то разбираюсь.
Написал я вот это -
function TSettingsManager.GetRootDir: string;
begin
Result := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
end;
Вылезла ошибка - Function needs result type -.
> ДЫк
> PAnsiChar(S)
поподробней, что такое S?
Kolan (2006-06-01 03:19:00) [6]
> Дык мне нада использовать не string, а PAnsiChar
ДЫк
PAnsiChar(S)
ЮЮ (2006-06-01 03:05:00) [7]ExtractFileDir возвратит имя папки без слэша
ExtractFilePath возвратит имя пути, т.е. со слэшем
Nonamers (2006-06-01 02:51:00) [8]to Cashmare ©
Немного подправил, сделал так, а то ошибка вылазила
ShellExecute(h27, 'open', pchar(dirRoot+'saper.doc'), '', pchar(dirRoot), SW_SHOWDEFAULT);
Ошибка перестала вылазить, но теперь ноль реакции, жму открыть, а ему пофиг((
to Kolan ©
Дык мне нада использовать не string, а PAnsiChar
Kolan (2006-06-01 02:28:00) [9]
function TSettingsManager.GetRootDir: string;
begin
Result := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
end;
Пользуюсь вот такой ф-цией и не знаю бед :)
Она вернёт строку с путем к папке, в которой лежит программа...
Cashmare (2006-06-01 02:20:00) [10]ShellExecute(h27, 'open', pchar(dirRoot+'saper.doc'), '', dirRoot, SW_SHOWDEFAULT);
Поможет?