Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как реализовать в ShellExecute следующий вариант >>> [D7, WinXP]


rtm ©   (2007-08-22 21:22:00) 

Всем привет, подскажите пожалуйста как вставить из
локальной таблицы с базой данных адрес на файл в строку,
вызывающей метод ShellExecute:
.....
procedure TForm1.Button1Click(Sender: TObject);
begin
shellexecute(handle, 'open', 'вот сюда (?)', nil, nil, SW_SHOW);
end;
.....

хочу создать архив заказов, чтобы юзер мог щелкнуть на строку
в БД, и нажав кнопку "Просмотреть" ему окрывался, сохраненный
ранее файл (допустим отчет в формате .txt).

Пытался реализовать Label.Caption с указанием пути и имени файла
но при следующей вставке в строку, типа такого
.....
shellexecute(handle, 'open', Label.Caption , nil, nil, SW_SHOW);
.....

компилятор конечно же меня обрадовал ошибкой, подскажите что
можно сделать.

С уважением, rtm.


Leonid Troyanovsky   (2007-08-25 17:42:00) [1]


> rtm ©   (25.08.07 14:58) [18]

> и вообще ребят давайте уже вопрос закроем, проблема решена

Cложней, продуманней и сроки -
это, соб-сно, надо и доказать.

--
Regards, LVT.


rtm   (2007-08-25 14:58:00) [2]

и вообще ребят давайте уже вопрос закроем, проблема решена на том и пост надо закрыть, не будем препираться кто тут умнее и прав.


rtm   (2007-08-25 14:57:00) [3]


> А думаешь, сейчас что то изменилось?

да уж поверь изменилось :)


Anatoly Podgoretsky   (2007-08-24 15:25:00) [4]

> @!!ex  (24.08.2007 14:59:15)  [15]

А думаешь, сейчас что то изменилось?


@!!ex   (2007-08-24 14:59:00) [5]

> [14] rtm ©   (24.08.07 14:20)

Так давно же сказали: Приведи тип string к PChar.
Вот это:
PChar(Label.Caption) - и есть то самое приведение.
Теперь ты знаешь, как приводить типы.
А если бы тупо получил код, который в [10] - то скопипастил бы его и в следюущий раз, когда нужно было скажем привести POinter к Cardinal, опять бы задавал этот вопрос на форуме.


rtm   (2007-08-24 14:20:00) [6]

да видишь в чем дело это не банальный копипаст, это чтобы понятнее форумчанам было, на самом деле там все сложнее и продумней и сроки поджимают, если ты знаешь решение то подскажи, а если нет то зачем выеживаться


@!!ex   (2007-08-24 09:30:00) [7]

> [9] rtm ©   (24.08.07 06:52)

Конечно не мне решать.
Только разница между программированием и копипастом, как между ********* и пулеметом.


rtm   (2007-08-24 07:35:00) [8]

alshtam
Спасибо большое ты оказался на 100 % прав, дельный совет, без всяких лишних комментариев, спасибо еще раз.


alshtam   (2007-08-24 07:03:00) [9]

вернее наверное Pansichar вместо Pchar, попробуй как пойдет


alshtam   (2007-08-24 06:58:00) [10]

shellexecute(handle, 'open',PChar(Label.Caption), nil, nil, SW_SHOW);


rtm   (2007-08-24 06:52:00) [11]

а заниматься мне программированием или нет это не Вам решать вообще, Москва не сразу строилась ИМХО


rtm   (2007-08-24 06:51:00) [12]

ну ладно ладно что ж так грубо, ведь форум для того и создан, но всеравно спасибо и на этом


@!!ex   (2007-08-23 21:01:00) [13]

> [6] rtm ©   (23.08.07 20:17)

Говорят тебе - сделай приведение типов!!!!
Винда понятия не имеет о существовании типа string.
Зато знает, что такое PChar.
Учитывая, что особенности архитектуры без проблем позволяют приводить string к PChar, этим надо пользоваться.
Но готового кода я все равно не скажу.. Ибо если после 5 постов разжевывания не сделаешь сам, не стоит вообще программрованием заниматься.
ИМХО

P.S.
маленькая подсказочка:
Приведение типов делаеться так
тип(переменная)


rtm   (2007-08-23 20:17:00) [14]

да нет ребят я не про перевод ошибки, я спросил как мне сделать так чтобы процедура ShellExecute открыла файл, адрес которой динамически меняется в компоненте Label.Caption, например, нажал я кнопку 1, Label.Caption имел бы значение C:\1.txt, нажал кнопку "Показать" и мне открылся бы этот файл, потом нажал я кнопку 2, Label.Caption имел бы значение С:\2.txt, нажал кнопку "Показать" и мне открылся ся бы этот файл и т.д.
Как это можно сделать?
Спасибо.


Leonid Troyanovsky   (2007-08-23 14:31:00) [15]


> rtm ©   (23.08.07 14:10) [3]

> извиняюсь за недоходчивость но что-то я здесь взаимосвязи
> не вижу

В окошечке Compiler Messages можно выделить строку с ошибкой,
нажать Ctrl-С и вставить в текст своего послания (Paste):

[Error] UnitX.pas(17): Incompatible types: 'String' and 'PChar'

Если текст не понятен даже со словарем, то можно,
стоя на той самой строке, нажать F1 и прочитать поучительную статью: Incompatible types: '<element>' and '<element>'

--
Regards, LVT.


Германн   (2007-08-23 14:19:00) [16]


> rtm ©   (23.08.07 14:10) [3]
>
> извиняюсь за недоходчивость но что-то я здесь взаимосвязи
> не вижу, получается Label.Caption мне надо указать как переменная
> PChar?
>

Точная формулировка:
переменную Label.Caption нужно передать как параметр приведя её тип к PChar.


rtm   (2007-08-23 14:10:00) [17]

извиняюсь за недоходчивость но что-то я здесь взаимосвязи не вижу, получается Label.Caption мне надо указать как переменная PChar?


Германн   (2007-08-22 22:26:00) [18]


> Пытался реализовать Label.Caption с указанием пути и имени
> файла
> но при следующей вставке в строку, типа такого
> .....
> shellexecute(handle, 'open', Label.Caption , nil, nil, SW_SHOW);
>
> .....
>
> компилятор конечно же меня обрадовал ошибкой, подскажите
> что
> можно сделать.
>

Сколько же раз за один день объяснять одно и то же :)
http://delphimaster.ru/cgi-bin/forum.pl?id=1187783503&n=18


Leonid Troyanovsky   (2007-08-22 21:41:00) [19]


> rtm ©   (22.08.07 21:22)  

> компилятор конечно же меня обрадовал ошибкой, подскажите
> что можно сделать.

Прочитать ее текст?

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо