Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.11.01;
Скачать: CL | DM;

Вниз

Станное поведение программы.   Найти похожие ветки 

 
FEV   (2009-09-10 08:04) [0]

В общем создал программку-оболочку (autorun) для диска и более простой навигации по файлам. Использовал ShellTreeView и FileListBox.
При выборе папки в ShellTreeView выводится список файлов в папке на эл. FileListBox. Оттуда запускаем что нужно.
В общем все работает. Создал образ диска (.ISO) и собрал полностью и эту программку Autorun закинул на диск. Смонтировал Daemon Tools образ. Все работает как и хотел. НО когда записал образ на диск FileListBox (FLB) не показывает файлов... Точнее при выделении пункта в ShellTreeView (STV) не происходит никаких действий, которые происходят на виртуальном диске. Не передаются пути элементу FileListBox и одной кнопке.
Возможно пути и передаются, но FileListBox и кнопка не реагирует.

procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
str:="";
Drive1:=GetCurrentDir();
delete(Drive1,3,(length(drive1)-2));
{stv.Root:=Drive1+ "\ADDITIONAL"; }
stv.Root:="F:\Образы\ExUltimate4\ADDITIONAL";
flb.Mask:="*.exe";
flb.Directory:=stv.Path;
  begin
  form1.alphablend:=true;
  for  i:=1  to 185 do
    begin
    form1.alphablendvalue:=i;
    sleep(3);
    end;
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
form1.alphablend:=true;
for  i:=1  to 185 do
begin
form1.alphablendvalue:=185-i;
sleep(3);
end;
end;

procedure TForm1.STVClick(Sender: TObject);
begin
mm.Clear;
if FileExists(STV.Path+"\info.txt") then
mm.Lines.LoadFromFile(STV.Path+"\info.txt") else
if FileExists(STV.Path+"\~.txt") then mm.Lines.LoadFromFile(STV.Path+"\~.txt") else
mm.Text:="Нет описания";
if FileExists(STV.Path+"\setup.exe") then
begin
Button4.Enabled:=true;
str:=STV.Path+"\setup.exe";
end else  Button4.Enabled:=false;
FLB.Directory:=STV.Path;
end;

procedure TForm1.FLBDblClick(Sender: TObject);
begin
ShellExecute(Handle, nil , pansichar(flb.FileName), nil, nil, SW_SHOW)
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
ShellExecute(Handle, nil , pansichar(flb.FileName), nil, nil, SW_SHOW)
end;

procedure TForm1.FLBClick(Sender: TObject);
var
s:string;
begin
s:=flb.FileName ;
delete(s,1,(length(flb.FileName)-4));
if s=".txt" then mm.Lines.LoadFromFile(flb.FileName) else
mm.clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
{stv.Root:=Drive1+ "\ADDITIONAL"; }
stv.Root:="F:\Образы\ExUltimate4\ADDITIONAL";
flb.Mask:="*.exe";
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
{stv.Root:=Drive1+ "\SOFT"; }
stv.Root:="F:\Образы\ExUltimate4\SOFT";
flb.Mask:="*.*";
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
ShellExecute(Handle, nil , pansichar(str), nil, nil, SW_SHOW)
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
ShellExecute(Handle, nil , pansichar(str), nil, nil, SW_SHOW)
end;

initialization
OleInitialize(nil);

finalization
OleUninitialize;


 
KilkennyCat ©   (2009-09-10 08:35) [1]

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


 
KilkennyCat ©   (2009-09-10 08:39) [2]

Button5 - кнопка, которой все-таки можно запустить файл, даже если он отсутствует :)


 
FEV   (2009-09-10 16:31) [3]


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

Это там для теста у меня папки с прогами :)
Чтобы компилировать конечный результат, я убираю "{}" из {stv.Root:=Drive1+ "\ADDITIONAL"; }
и ставлю их здесь:
stv.Root:="F:\Образы\ExUltimate4\ADDITIONAL";

типа наоборот.


> Button5 - кнопка, которой все-таки можно запустить файл,
>  даже если он отсутствует :)

Она не доступна, если файла нет :)

Я не пойму только того, что на виртульном приводе всё супер, а на реальном баги... Хотя на то он и виртуальный, чтобы на 99% создавать условия, как при запуске с реального...
Не пойму, почему так с моей прогой.


 
DVM ©   (2009-09-10 18:07) [4]


> FEV

Не работает, потому что твой код плохо форматирован.


> Это там для теста у меня папки с прогами :)
> Чтобы компилировать конечный результат, я убираю "{}" из
> {stv.Root:=Drive1+ "\ADDITIONAL"; }
> и ставлю их здесь:
> stv.Root:="F:\Образы\ExUltimate4\ADDITIONAL";
>
> типа наоборот.

Ты сразу бы делал по человечески, а то тебе для каждой буквы привода свои версии программ выпускать придется.


 
Servy ©   (2009-09-10 19:24) [5]


> Drive1:=GetCurrentDir();
> delete(Drive1,3,(length(drive1)-2));


Текущая папка - плохой способ для определения с какого диска запустили твою программу. Текущую папку, например, может изменять стандартный TOpenDialog, ее можно указывать в свойствах ярлыка, etc.

Я бы задавал все пути относительно папки с твоим исполняемым файлом автобега. Предположим, что полный путь к твоему autorun.exe:

X:\Autonrun\Autorun.exe

тогда:

var
 Prefix: string;

...
 Prefix := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + "..\";


Prefix будет содержать путь к X:\, после чего ты можешь дописать к нему ADDITIONAL, или что там тебе нужно. При этом, это будет работать и при перемещении всего содержимого диска в какую-нибудь директорию, то есть не будет необходимости что-то комментировать и раскомментировать.



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

Текущий архив: 2009.11.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.018 c
2-1251884776
kyn66
2009-09-02 13:46
2009.11.01
Нарушение полосатости грида при SQL-запросах


2-1253022950
kostyl_kostyl
2009-09-15 17:55
2009.11.01
Не пойму почему ошибка при SetLetngth


1-1222409853
Zheksonz
2008-09-26 10:17
2009.11.01
Привязка к графическому объекту вне зависимости от масштаба


15-1251731165
HarryG
2009-08-31 19:06
2009.11.01
Печать картинок под wine


2-1252576515
eu1bc
2009-09-10 13:55
2009.11.01
Перейти на конкретную запись DBGrid