Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Вниз

ShellExecute   Найти похожие ветки 

 
Nonamers   (2006-06-01 00:53) [0]

Такая проблемма, нада было сделать ссылку на файл лежащий в папке с программой, посоветовали сделать так:
1. Создал переменную dirRoot : string;
2. В OnCreate формы написал
dirRoot := ExtractFileDir(ParamStr(0));
3. Потом
ShellExecute(h27, "open", dirRoot+"saper.doc", "", dirRoot, SW_SHOWDEFAULT);


Но проблемма в несовместимости string и PansiChar. Можно ли как-нить string переделать в PansiChar? А может есть доугое решение моей проблеммы?


 
Cashmare ©   (2006-06-01 02:20) [1]

ShellExecute(h27, "open", pchar(dirRoot+"saper.doc"), "", dirRoot, SW_SHOWDEFAULT);

Поможет?


 
Kolan ©   (2006-06-01 02:28) [2]

function TSettingsManager.GetRootDir: string;
begin
 Result := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
end;

Пользуюсь вот такой ф-цией и не знаю бед :)
Она вернёт строку с путем к папке, в которой лежит программа...


 
Nonamers   (2006-06-01 02:51) [3]

to Cashmare ©

Немного подправил, сделал так, а то ошибка вылазила

ShellExecute(h27, "open", pchar(dirRoot+"saper.doc"), "", pchar(dirRoot), SW_SHOWDEFAULT);

Ошибка перестала вылазить, но теперь ноль реакции, жму открыть, а ему пофиг((

to Kolan ©

Дык мне нада использовать не string, а PAnsiChar


 
ЮЮ ©   (2006-06-01 03:05) [4]

ExtractFileDir возвратит имя папки без слэша
ExtractFilePath возвратит имя пути, т.е. со слэшем


 
Kolan ©   (2006-06-01 03:19) [5]


> Дык мне нада использовать не string, а PAnsiChar

ДЫк
PAnsiChar(S)


 
Nonamers   (2006-06-01 03:32) [6]

to Kolan ©  and ЮЮ ©

Извеняйте конечно, но в Делфи я неособо то разбираюсь.
Написал я вот это -
function TSettingsManager.GetRootDir: string;
begin
Result := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
end;


Вылезла ошибка - Function needs result type - .


> ДЫк
> PAnsiChar(S)

поподробней, что такое S ?


 
ASoft   (2006-06-01 07:23) [7]

Nonamers   (01.06.06 03:32) [6]
вас, практически уже навели на путь истинный. осталось нажать F1 на этой функции...
тем не менее:
dirRoot - строковая переменная с путем к вашему файлу
пусть S будет именем файла (doc)
посылая вышеуказанной функции dirRoot вы возвращаете правильно оформленный путь к файлу.
Остается объединить результат функции и S, преобразовать в PChar и вызывать в ShellExecute.


 
Nonamers   (2006-06-01 08:12) [8]

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));

Сильно не ругайте, лучше обьясните))


 
Nonamers   (2006-06-01 08:26) [9]

ВСЕМ СПАСИБО !

Все получилось)) Сделал по совету Cashmare ©

ShellExecute(h27, "open", pchar(dirRoot+"saper.doc"), "", pchar(dirRoot), SW_SHOWDEFAULT);

Раньше не получалось, потому что не подумал, что строка, содержащаяся в DirRoot на конце не имеет слэша, поэтому и не открывался файл))


 
evvcom ©   (2006-06-01 09:33) [10]


> F1 не могу нажать, потому что Делфи справки у меня нет

Ты где такого кастрата взял?

> строка, содержащаяся в DirRoot на конце не имеет слэша

А отладчика в твоем Delphi тоже нет? Попробуй почитать про точки останова и трассировку по шагам (F4,F7,F8)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.011 c
1-1147367029
hgd
2006-05-11 21:03
2006.06.18
Edit в чужом окне


15-1148657865
AlexanderMS
2006-05-26 19:37
2006.06.18
Интересное задание.


15-1148220731
DillerXX
2006-05-21 18:12
2006.06.18
type AString = array [1..maxInput] of string;


3-1145887884
Квэнди
2006-04-24 18:11
2006.06.18
Dbexpress Delphi 2006


3-1145635197
DevilDevil
2006-04-21 19:59
2006.06.18
Удаление нескольких записей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский