Цитата:
Сообщение от Alegun
Ведь для этого специально функция Execute у диалога результатом булева, поддерживает такую конструкцию
Код:
...
if sOpenDialog1.Execute then
begin
// Здесь всё что нужно сделать при выборе кнопки OK в диалоге
//
end;
...
если ничего не выбрано (нажата отмена) то ничего и не произойдёт
|
Помогите с ошибкой, что не так делаю ?
Код:
var
Form1: TForm1;
Icon: TIcon;
Pch: array[0..256] of Char;
IconIndex: Word;
S:String;
.......
.......
procedure TForm1.sSpeedButton1Click(Sender: TObject);
begin
if S='' then
begin
if sOpenDialog1.Execute then
begin
S:=sOpenDialog1.FileName;
Icon:=TIcon.Create;
StrPCopy(Pch,S);
Icon.Handle:= ExtractAssociatedIcon(hInstance, Pch, IconIndex);
sSpeedButton1.Glyph.Width:= Icon.Width;
sSpeedButton1.Glyph.Height:= Icon.Height;
sSpeedButton1.Glyph.Canvas.Draw(0, 0, Icon);
Icon.Free;
end;
end
else
begin
ShellExecute (Form1.Handle, nil, PChar(S), nil, nil, SW_RESTORE);
end;
end;
Всё работает нормально, ярлык отображается, но как только закрываю программу, выскакивает ошибка
access violation at address 00000000
В интернете естественно искал, но нашёл только одну похожую тему. Человек делал что-то похожее на то, что делаю я, только в
2004 году

. -
ссылка
Внятного ответа не было. Будьте добры, помогите
