Icon View Thread

The following is the text of the current message along with any replies.
Messages 11 to 19 of 19 total
Thread D6, DBISAM & W7 64bit
Sat, Dec 25 2010 4:51 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Gregory


As an update Malcolm kindly tested it on his W7 64bit machine and no problems.

>- That the session, database and datasets are all closed at design time so
>the app is is not accessing any design time path on the target machine when
>the app starts

Yup - GExperts does that for me - I got fed up of being caught out Smiley

>- That the Session.PrivateDir is set to a valid path at runtime and its not
>using a non existent design time path.

Session.PrivateDir is set once when the app starts using

Session.PrivateDir := GetWindowsTempPath;


function GetWindowsTempPath: string;
var
TempPathName: array[0..250] of Char;
begin
try
 if GetTempPath(250, TempPathName) <> 0
  then Result := TempPathName
 else begin
  ForceDirectories('C:\Temp');
  Result := 'C:\Temp';
 end;
except
 ForceDirectories('C:\Temp');
 Result := 'C:\Temp';
end;
end;

>Could also ask the user to :
>- Confirm that the hard disk is configured as C drive and that C does not
>point to a removable disk.

Already done

>- Update their copy of Windows as it could be Windows/ hardware issue.

Interesting thought.

>Got to go now. My daughter's preparing Christmas lunch. Merry Christmas to
>all.

Enjoy your contribution to it - eating Smiley

Roy Lambert
Mon, Dec 27 2010 7:57 PMPermanent Link

Gregory Sebastian

Hi Roy,

<< "Roy Lambert" <roy.lambert@skynet.co.uk> wrote in message
news:46B56E82-B3C1-48EA-B9A2-B177CE01CE3B@news.elevatesoft.com...

Session.PrivateDir is set once when the app starts using

Session.PrivateDir := GetWindowsTempPath;


function GetWindowsTempPath: string;
var
TempPathName: array[0..250] of Char;
begin
try
 if GetTempPath(250, TempPathName) <> 0
  then Result := TempPathName
 else begin
  ForceDirectories('C:\Temp');
  Result := 'C:\Temp';
 end;
except
 ForceDirectories('C:\Temp');
 Result := 'C:\Temp';
end;
end;

>>

I'm only speculating here but the only way I can see the above code causing
the issue that your end user is facing now is if the GetTempPath() function
does not work under Win7 64bit anymore. Then ForceDirectories('C:\Temp') may
or may not work under Vista and Win7 depending on the user UAC setting and
the execution level of the app. This may be just the standard error message
that W7 throws up when the folder C:\Temp folder could not be created.

Unfortunately, I too could not get my hands on a Win 7 64bit machine to
confirm this. I wonder if the 'C:\Temp folder was created on Malcolm's
64bit machine or if Windows did in fact return the Windows User Temp folder.

If you've had a look at other parts (like your database path, disabling AV
program etc) without any success and want to try something different for the
temp folder, try this :

function GetAppTempDir : String;
Const
APP_SUB_FOLDER = '\YourBizName\YourAppName';

var
AppTempPath, Mes1, Mes2 : String;
begin
 AppTempPath := GetEnvironmentVariable('Temp') + APP_SUB_FOLDER;
 result := AppTempPath;
 If Not DirectoryExists(AppTempPath) then
 try
   ForceDirectories(AppTempPath);
 except
   result := '';
   Mes1 := Format('Unable to create temp folder at : %s',[AppTempPath]);
   Mes2 := 'Program will close now. Ensure that the specified path is not
write protected, then try again';
   MessageDlg(Mes1, mtError, [mbOK], 0);
   MessageDlg(Mes2, mtError, [mbOK], 0);
   Application.Terminate;
 end;
end;

The above appears to work well from XP to W7. It also report back if
the temp folder could not be created so you can eliminate this as a problem.

<< Enjoy your contribution to it - eating Smiley>>
Yeah I always volunteer my services as "food taster" for these occasions.
Its hard work being a food taster Smiley.

Regards
Gregory Sebastian

Tue, Dec 28 2010 3:36 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Gregory


I'll suggest the user manually creates c:\Temp and see if that cures it. If so at least I know where the problem is coming from.

Roy Lambert
Tue, Dec 28 2010 4:42 AMPermanent Link

Gregory Sebastian

Roy,
One more thing the user could try is to right click the executable or its
shortcut and hit "Run As Administrator". If the error goes away then its
likely that the app is referencing folders etc that can only be accessed at
the higher execution level on this computer. May have nothing to do with
removable drives.

Regards
Gregory Sebastian
Tue, Dec 28 2010 8:13 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Gregory

>One more thing the user could try is to right click the executable or its
>shortcut and hit "Run As Administrator". If the error goes away then its
>likely that the app is referencing folders etc that can only be accessed at
>the higher execution level on this computer. May have nothing to do with
>removable drives.

Since I wrote the app I can be almost sure that that isn't the case. Apart from Session.PrivateDir it sticks to its own set of directories. Having said that, with Microsoft, who knows.

Tue, Dec 28 2010 10:56 AMPermanent Link

Malcolm Taylor

Roy Lambert wrote:

> Gregory
>
>
> I'll suggest the user manually creates c:\Temp and see if that cures
> it. If so at least I know where the problem is coming from.
>
> Roy Lambert

Hi Roy

The machine I tested on does not have a C:\Temp, but that would be
because it has a valid WindowsTempPath.

Do you use MadExcept or EurekaLog? Personally I use MadExcept, but
either should give the source code line number where the error is
raised.

Malcolm

--
Tue, Dec 28 2010 6:03 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Roy,

<< Someone is running an old app written in Delphi 6 using DBISAM 4.2x on
their nice new W7 64bit machine and are getting the following error:

---------------------------
Techniques.exe - No Disk
---------------------------
There is no disk in the drive. Please insert a disk into drive
\Device\Harddisk1\DR1.
---------------------------
Cancel   Try Again   Continue
--------------------------- >>

This means that your application is trying to access a path that doesn't
exist on the target machine.  If you want to send me the application, I can
try it here and tell you what the issue is.

--
Tim Young
Elevate Software
www.elevatesoft.com
Wed, Dec 29 2010 5:34 AMPermanent Link

Roy Lambert

NLH Associates

Team Elevate Team Elevate

Tim


Thanks for the offer. I may yet take you up on it. However, I've just spent another 30 mins on the phone with the user and I'm pretty sure the problem is Norton 360. The updated information is that if OK is clicked on the error message the app opens up and shows the data. Move to the contact or company page and the data is shown. Try and do a search on contacts and the error is shown again. Click OK and again the data is shown.

The user has gone away to have another look at excluding the directory from scanning or real time protection.

Roy Lambert
Mon, Jan 10 2011 7:26 PMPermanent Link

Malcolm Taylor

Glad to learn you solved thhis one.  <gdr>
« Previous PagePage 2 of 2
Jump to Page:  1 2
Image