Текущий архив: 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