Вниз
Скачать: CL | DM;

Проблема с процедурой   Найти похожие ветки 

← →
Adios ©   (2006-03-08 20:27) [0]

у меня в программе есть процедура которая устанавливает обои на рабочий стол, 2 типа файлов: .bmp и .jpg, процедура копирует картинку в юзертемп, а если это .jpg то сначала конвертирует её в .bmp, а потом устанавливает в качестве обоев, проблема в следующем: если картинка .bmp, то проблем нет, а если .jpg, то нажатие на кнопку вообще убирает обои с рабочего стола, но если сначала выбрать в качестве обоев .bmp, то потом и .jpg работает нормально, вот процедура:

procedure Tmenu1.choiseClick(Sender: TObject);
begin
FileExt := ExtractFileExt(FileListBox1.Filename);
 if FileExt=".jpg" then
 begin
 JPEGtoBMP(filelistbox1.FileName);
 end;
 if FileExt=".bmp" then
 begin
 f:=FileListBox1.Filename;
 f1:=c_GetTempPath+"\"+"wallpapers"+".bmp";
 Copyfile(PChar(f),PChar(f1),false);
 end;
wallpapers("wallpapers");
panel1.SetFocus;
end;
========================================
procedure wallpapers(const FileName: TFileName);
begin
reg := TRegIniFile.Create("Control Panel\\Desktop" );
with reg do begin
sWallpaperBMPPath:=f1;
bTile:=false;
WriteString( "", "Wallpaper", sWallpaperBMPPath );
if( bTile )then begin
WriteString("", "TileWallpaper", "1" );
end
else begin
WriteString("", "TileWallpaper", "0" );
end;
end;
reg.Free;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Nil, SPIF_SENDWININICHANGE );

end;
============================================
procedure JPEGtoBMP(const FileName: TFileName);
var
 jpeg: TJPEGImage;  
 bmp:  TBitmap;  
begin  
   jpeg := TJPEGImage.Create;
 try
   jpeg.CompressionQuality := 100;
   jpeg.LoadFromFile(filename);
   bmp := TBitmap.Create;
   try
     bmp.Assign(jpeg);
     bmp.SaveTofile(ChangeFileExt(c_GetTempPath+"\"+"wallpapers", ".bmp"));
   finally
     bmp.Free
 end;
 finally
   jpeg.Free
end;
end;


← →
Adios ©   (2006-03-09 09:47) [1]

чё никто не знает чтоли?, люди, очень надо знать почему клинит!


← →
ЮЮ ©   (2006-03-09 10:02) [2]


> а если это .jpg то сначала конвертирует её в .bmp, а потом
> устанавливает в качестве обоев,


А потом не будет, ибо JPEGtoBMP никак не мееняет FileExt, т.е  условие FileExt=".bmp" всегда ложно для .jpg


← →
Adios ©   (2006-03-10 19:47) [3]

на всякий случай отвечу на свой вопрос сам:

> procedure Tmenu1.choiseClick(Sender: TObject);
> begin
> FileExt := ExtractFileExt(FileListBox1.Filename);
>  if FileExt=".jpg" then
>  begin                                <=  f1:=c_GetTempPath+"\"+"wallpapers"+".bmp";
>  JPEGtoBMP(filelistbox1.FileName);
>  end;
>  if FileExt=".bmp" then
>  begin
>  f:=FileListBox1.Filename;
>  f1:=c_GetTempPath+"\"+"wallpapers"+".bmp";
>  Copyfile(PChar(f),PChar(f1),false);
>  end;
> wallpapers("wallpapers");
> panel1.SetFocus;
> end;

<= там я забыл объявить переменнуб в которой содержится путь к обоям "f1", поэтому если сначала устанавливать jpg то процедуре негде взять путь к обоям, а если сначала ставить bmp, то переменная объявляется и потом jpg тоже работает нормально.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.025 c
2-1142237357
Gleb
2006-03-13 11:09
2006.03.26
как сделать анимацию в компоненте Chart


1-1140432435
SergProger
2006-02-20 13:47
2006.03.26
Иконка нестандартного размера


8-1129642025
фывыч
2005-10-18 17:27
2006.03.26
про HWaveOut


2-1142155503
Ega23
2006-03-12 12:25
2006.03.26
Сохранить файл в Unicode


15-1141648992
Piter
2006-03-06 15:43
2006.03.26
Как в PHP получить путь до папки с выполняемым скриптом?




   Наверх