Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

Error Closing a Delphi Program

Posted on 2010-08-15
6
Medium Priority
?
1,235 Views
Last Modified: 2013-11-23
A program I'm writing requires data from a flash drive, so I inspect removable drives for the file. If there's a removable drive and the file exists, no problems. If there is no no file, I'd like to provide a message to the user to install his data flash drive then re-start the app. After he clicks OK, the program terminates but AFTER it ends, I get a error (from Windows?)  :
    EInvalidOperation with message 'Cannot change visible in OnShow or OnHide'

I don't use an OnShow or OnHide anywhere in the app yet the problem persists. I have installed the code in a new, blank form and it works fine. But when add it to the "OnActivate" event of my
program it bombs after termination.

Any help would is appreciated. Thanks.

Ed
SDataFile := LocateDataFile;   
             //Expecting like 'F:\DatFile.bin'

if SDataFile = '' then begin
   showmessage('Data File NOT found. '+
               'Please insert your data flash drive and re-start);
   Application.Terminate;      {'close' produces the same error}
End;

//Problems get much worse if I wait for the flash drive even
//when it gets inserted and the TDriveComboBox is updated.

Open in new window

0
Comment
Question by:Ed Covney
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
6 Comments
 
LVL 31

Accepted Solution

by:
Marco Gasi earned 2000 total points
ID: 33441714
I've tested your code and it doesn't raises any error. I used form's OnActivate. Are you using Form's event or Application event?
0
 
LVL 31

Assisted Solution

by:Marco Gasi
Marco Gasi earned 2000 total points
ID: 33441729
Tested with TApplicationEvent also: none error... Have you other secondary forms in your app? Or  procedure LocateDataFile calls and shows/hides some dialog or some form?
0
 
LVL 3

Author Comment

by:Ed Covney
ID: 33442085
That was fast - thank you.

Based on the fact that we both got the code to work on a fresh new form, I changed the basic set-up in the OnActivate event of the form. instead of;
             If not filefound then close;
 I start with
             if filefound then begin
               {the remainder of the event code here}
               else begin
                 showmessage('Insert data drive');
                 close;
              end;

I do sorta remember from 30 years ago, that bad juju can happen if you try to quit in the middle.

Thank you for your Help Marqus
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 31

Expert Comment

by:Marco Gasi
ID: 33443527
Glad you solved, but if the problem were that you think, should raise error even in a blank form, doesn't? I think there is something in LocateDataFile procedure or in some aother place that conflicts with Close statement. However, good bye
0
 
LVL 3

Author Comment

by:Ed Covney
ID: 33446505
marqus -

The first thing I did was to transfer the code to a new form, where it worked as expected. And now that I changed the way / order of code execution, it also worlks in my program - using LocateDataFile.

I agree there may still be a problem somewhere and wish I knew something about error trapping which I've always been able to avoid. A trip to the bookstore is in my near future -:)

Thanks for sticking araound. - Ed
0
 
LVL 3

Expert Comment

by:big_one01
ID: 33485970
Check in the Delphi IDE menu:
Project-->Options
 In the Forms tab --> Autocreate forms:

Maybe you have some form that must not be there, then the form is autocreated and when you dont close o destroy that instance, then raise the error.
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In our object-oriented world the class is a minimal unit, a brick for constructing our applications. It is an abstraction and we know well how to use it. In well-designed software we are not usually interested in knowing how objects look in memory. …
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
The viewer will learn how to use and create new code templates in NetBeans IDE 8.0 for Windows.
Suggested Courses

610 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question