Member
Сообщений: 1,286
Сказал(а) спасибо: 1
Поблагодарили 3 раз(а) в 2 сообщениях
Регистрация: 14.06.2006
|
Как найти ошибку в программном коде -
13.08.2006, 03:34
Вчера столкнулся с такой проблемой (для простоты приведу один пример): у меня программа должна открывать файл с любого диска, скажем графический и после этого, допустим, запускать программу из папки где находится сама программа. Проблема в том, что она не запускает эту программу. Тоже самое и с другими: текстовыми файлами, картинками...
Нужна помощь!
Вот код с той самой процедурой:
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, ShellApi;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
OP: TOpenDialog;
Img: TImage;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if OpenDialog.Execute
then begin
image.Picture.LoadFromFile(OpenDialog.FileName);
end;
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
ShellExecute(0,'open','Proga.exe',nil,nil, SW_ShowNormal);
end;
end.
Может в коде ошибка!?...
|
|
|
Member
Сообщений: 125
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.12.2005
|

13.08.2006, 13:09
Попробуй так:
Код:
if OpenDialog1.Execute then
begin
if ShellExecute(Application.handle, nil, PChar(OpenDialog1.FileName), nil, nil, SW_SHOWNORMAL)<=32 then
MessageDlg('Такого файла не не существует, КРОСАФЧЕГ!',
[mbOk], 0);
|
|
|
Member
Сообщений: 1,681
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Регистрация: 23.11.2005
|

13.08.2006, 15:16
Скорее всего, у тебя текущий каталог не тот.
Попробуй вместо 'Proga.exe' написать ExtractFilePath(ParamStr(0))+'Proga.exe'
Код:
ShellExecute(0,'open',PChar(ExtractFilePath(ParamStr(0))+'Proga.exe'),nil,nil, SW_ShowNormal);
ЗЫ: ни Делфи ни Билдера под рукой нет, но должно работать
|
|
|
Member
Сообщений: 568
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.06.2005
|

13.08.2006, 15:24
Цитата:
Попробуй так:
Код:
if OpenDialog1.Execute then
begin
if ShellExecute(Application.handle, nil, PChar(OpenDialog1.FileName), nil, nil, SW_SHOWNORMAL)<=32 then
MessageDlg('Такого файла не не существует, КРОСАФЧЕГ!',
[mbOk], 0);
|
TOPT, а Ты вообще внимательно прочел задание???
Цитата:
Вчера столкнулся с такой проблемой (для простоты приведу один пример): у меня программа должна открывать файл с любого диска, скажем графический и после этого, допустим, запускать программу из папки где находится сама программа. Проблема в том, что она не запускает эту программу. Тоже самое и с другими: текстовыми файлами, картинками...
|
Виталик 1, для того, чтобы видеть прогу из папки главной проги, надо использовать
Код:
function ExtractFilePath(const FileName: string): string;
в итоге будет примерно так:
Код:
var
Temp:string;
.........
Temp:=ExtractFilePath(Application.ExeName) + 'Proga.exe';
ShellExecute(Application.handle, nil, PChar(Temp), nil, nil, SW_SHOWNORMAL);
Удачи!
|
|
|
Member
Сообщений: 1,286
Сказал(а) спасибо: 1
Поблагодарили 3 раз(а) в 2 сообщениях
Регистрация: 14.06.2006
|

13.08.2006, 15:46
LARS, D_K, TOPT, Спасибо ребята! Только TOPT, функция
Код:
ShellExecute(Application.handle, nil, PChar(OP.FileName), nil, nil, SW_SHOWNORMAL);
открывает в окне браузера папку с программой и все! (Только сейчас проверил). А вообще спасибо всем!!!
|
|
|
Member
Сообщений: 125
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.12.2005
|

13.08.2006, 17:26
Да... прогон с моей стороны...
Но, вообще, я с такой проблемой тоже сталкивался, Прикол в том что дириктория на которую ссылается прога меняется при использовании OpenDialog.
Поэтому, действительно, всегда лучше явно указывать путь к файлу, как это описано в ответах выше.
|
|
|
Member
Сообщений: 1,286
Сказал(а) спасибо: 1
Поблагодарили 3 раз(а) в 2 сообщениях
Регистрация: 14.06.2006
|

13.08.2006, 21:12
Да ладно... TOPT, я кучу раз прогоны делал...  . А вот я интерисуюсь, ты не знаешь какой-нибудь код сжатия файлов (исходник алгоритма, я имею ввиду)? А то мне интересно познакомится хоть с одним. В инете искал - только теория одна.
|
|
|
Member
Сообщений: 568
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 20.06.2005
|

14.08.2006, 03:29
ну кароче вот исходники, раз уж так приспичило...
http://bib.com.ua/categ4.html
|
|
|
Member
Сообщений: 2,085
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.09.2002
|

14.08.2006, 11:06
Просто обращение к .EXE недопустимо. Лучше и проще узнать путь к файлу а потом его запускать.
|
|
|
Опции темы |
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
|