Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу Как найти ошибку в программном коде
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Виталик 1 Виталик 1 вне форума
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.
Может в коде ошибка!?...
Ответить с цитированием
  (#2 (permalink)) Старый
TOPT TOPT вне форума
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);
Ответить с цитированием
  (#3 (permalink)) Старый
D_K D_K вне форума
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);
ЗЫ: ни Делфи ни Билдера под рукой нет, но должно работать


импортирован с progz.ru
Ответить с цитированием
  (#4 (permalink)) Старый
LARS LARS вне форума
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);
Удачи!
Ответить с цитированием
  (#5 (permalink)) Старый
Виталик 1 Виталик 1 вне форума
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);
открывает в окне браузера папку с программой и все! (Только сейчас проверил). А вообще спасибо всем!!!
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
TOPT TOPT вне форума
Member
 
Сообщений: 125
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.12.2005
По умолчанию 13.08.2006, 17:26

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

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

ну кароче вот исходники, раз уж так приспичило...
http://bib.com.ua/categ4.html
Ответить с цитированием
  (#9 (permalink)) Старый
SH@DOW SH@DOW вне форума
Member
 
Сообщений: 2,085
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 18.09.2002
По умолчанию 14.08.2006, 11:06

Просто обращение к .EXE недопустимо. Лучше и проще узнать путь к файлу а потом его запускать.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти ошибку в программном коде Leks100 C++ Builder 0 07.06.2011 05:18
Как найти ошибку в программном коде mbhamster DHTML, JavaScript, VBScript 2 30.03.2011 19:21
Как найти ошибку в программном коде Xaksik С/С++ 9 23.01.2011 11:01
Как найти ошибку в программном коде Koten C++ Builder 3 16.11.2009 11:37
Как найти ошибку в программном коде katen Программирование графики 0 05.11.2009 18:08
Как найти ошибку в программном коде Goose J2ME 4 04.05.2009 15:03
Как найти ошибку в программном коде nikolaya Lisp 0 07.03.2008 19:47
Как найти ошибку в программном коде baklan2004 Delphi 2 23.06.2006 05:52
Как в программном коде найти ошибку Алексеев Николай Delphi 16 17.05.2006 12:43
Как найти ошибку в программном коде gip С/С++ 5 23.01.2006 00:30
Как найти ошибку в программном коде Виноград Вопросы начинающих программистов 1 04.04.2005 21:54
Как найти ошибку в программном коде Daredevil С/С++ 2 17.12.2004 10:58



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов