PicShow 4.10 AV

Please post bug reports, feature requests, or any question regarding the DELPHI AREA projects here.

PicShow 4.10 AV

Postby mhieta » March 30th, 2009, 1:47 pm

Hi,

When executed PicShow quickly several times (sometimes more than 10 times) to show loaded image. I'm getting AV in TCustomPicShow.SetProgress line: if HandleAllocated then.

Image
Image

- Marko
mhieta
Active Member
Active Member
 
Posts: 23
Joined: November 16th, 2005, 7:58 pm

Re: PicShow 4.10 AV

Postby Kambiz » March 30th, 2009, 9:57 pm

Sorry, but neither the screenshot nor the description are helpful.

Could you please attach a code to regenerate the error? And, please mention which version of Delphi is in use.
Kambiz
User avatar
Kambiz
Administrator
Administrator
 
Posts: 2429
Joined: March 7th, 2003, 7:10 pm

Re: PicShow 4.10 AV

Postby mhieta » March 31st, 2009, 4:43 pm

Hi,

Okay here is the code what I use for showing next image:
Code: Select all
procedure TSlideShowForm.ShowNextImage;
var
  t: String;
begin
  IERegisterFormats;
  Timer.Enabled := False;
  // if there is not any image in the list exit
  if Pictures.Count = 0 then Exit;
  // if PicShow is playing, stops it
  if PicShow.Busy then
    PicShow.Stop;
  // Sets the animation style according to user sellection
  if (CustomStyle.Checked) and not (Index=-1) then
  begin
    t:=Pictures[Index];
    if ContainsText(t,'|') then
    begin
      if SetTransitionMode.Checked = True then
      begin
        Style.Value:=StrToInt(Split(t,'|',3));
        Step.Value:=StrToInt(Split(t,'|',4));
        Delay.Value:=StrToInt(Split(t,'|',5));
      end;
      ShowPause.Value:=StrToInt(Split(t,'|',6));
      TimeButton.Caption:=Split(t,'|',7);
      ShowPauseChange(nil);
      BackGroundColor.SelectedColor:=StringToColor(Split(t,'|',8));
      BackgroundColorColorChange(nil);
      FrameWidth.Value:=StrToInt(Split(t,'|',9));
      FrameColor.SelectedColor:=StringToColor(Split(t,'|',10));
      FrameColorColorChange(nil);
    end;
  end;
  if RandomStyle.Checked then
    Style.Value := Random(High(TShowStyle))+1
  else if TurnStyle.Checked then
    if Style.Value < High(TShowStyle) then
      Style.Value := Style.Value + 1
    else
      Style.Value := 1;
  // Updates image name status
  ShownImage := LoadedImage;
  if ClearOldImage.Checked then
  begin
    PicShow.Clear;
    PicShow.Update;
  end;
  StatusBar1.Panels.Items[0].Text:= 'Current Image: ' + MinimizeName(ShownImage,StatusBar1.Canvas,StatusBar1.Panels.Items[0].Width);
  CurrentImage1.Caption:='Current Image: ' + ExtractFileName(ShownImage);
  StatusBar1.Update;
  if SetDesktopMode.Checked then ChangeWallpaper;
  if (Panel7.Visible = True) and (AutoMonitorSwitch.Checked = True) then
  begin
    if (AutoMonitorSwitchMonitor1.ItemIndex = 0) and (AutoMonitorSwitchMonitor2.ItemIndex = 1) then
    begin
      if (PicShow.Picture.Height > PicShow.Picture.Width) and (GetMonitorFromWindow(handle) = 1) then GoTo1stMonitorClick(nil);
      if (PicShow.Picture.Width > PicShow.Picture.Height) and (GetMonitorFromWindow(handle) = 0) then GoTo2ndMonitorClick(nil);
    end;
    if (AutoMonitorSwitchMonitor1.ItemIndex = 1) and (AutoMonitorSwitchMonitor2.ItemIndex = 0) then
    begin
      if (PicShow.Picture.Height > PicShow.Picture.Width) and (GetMonitorFromWindow(handle) = 0) then GoTo2ndMonitorClick(nil);
      if (PicShow.Picture.Width > PicShow.Picture.Height) and (GetMonitorFromWindow(handle) = 1) then GoTo1stMonitorClick(nil);
    end;
    Application.ProcessMessages;
  end;
  // Begins the animation
  PicShow.Execute;
  IEUnRegisterFormats;
end;


And Delphi 2007 is in use. Its hard to show some code cause its not happening every time when PicShow is executed.

- Marko
mhieta
Active Member
Active Member
 
Posts: 23
Joined: November 16th, 2005, 7:58 pm

Re: PicShow 4.10 AV

Postby mhieta » March 31st, 2009, 6:32 pm

Hi,

Just reversed PicShow back to 4.07 version without modifying my own code. Now everything works as it should.

- Marko
mhieta
Active Member
Active Member
 
Posts: 23
Joined: November 16th, 2005, 7:58 pm

Re: PicShow 4.10 AV

Postby Kambiz » April 4th, 2009, 12:47 pm

I made consequent calls to ShowNextImage (in PicShow Demo) without delay, but no error occurred.

Your code is dependent to other codes, because of that I couldn't check it out.

Regarding your code, it's better to use

Code: Select all
  PicShow.OverDraw := not ClearOldImage.Checked;

instead of

Code: Select all
  if ClearOldImage.Checked then
  begin
    PicShow.Clear;
    PicShow.Update;
  end;
Kambiz
User avatar
Kambiz
Administrator
Administrator
 
Posts: 2429
Joined: March 7th, 2003, 7:10 pm

Re: PicShow 4.10 AV

Postby mhieta » April 4th, 2009, 6:05 pm

Hi,

Yes that code depends on many other codes, sorry. But anyway its very hard to explain this AV. Yes if you do that without any delay you don't hit AV, I noticed that too. But when calling ShowNextImage in the middle of transition several times it will eventually hit to AV. Also sometimes before AV is shown, PicShow shows blank image instead of image.

Thanks for the tip :)

- Marko
mhieta
Active Member
Active Member
 
Posts: 23
Joined: November 16th, 2005, 7:58 pm

Re: PicShow 4.10 AV

Postby Kambiz » April 4th, 2009, 8:26 pm

I have checked it with delay too, but no exception. Without being able to regenerate the AV, I don't know where should be fixed.
Kambiz
User avatar
Kambiz
Administrator
Administrator
 
Posts: 2429
Joined: March 7th, 2003, 7:10 pm

Re: PicShow 4.10 AV

Postby mhieta » April 4th, 2009, 9:56 pm

Hi,

Okay. If I find some way to show this issue better I will tell :)

- Marko
mhieta
Active Member
Active Member
 
Posts: 23
Joined: November 16th, 2005, 7:58 pm


Return to DELPHI AREA Projects

Who is online

Users browsing this forum: No registered users and 1 guest

cron