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
Solved

WritePrivateProfileString Function

Posted on 2001-08-11
10
280 Views
Last Modified: 2008-01-16
I am attempting to update the initialization file that I use for my ACCESS database application.  I identify it in the shortcut and use the SystemDB= line to strip off the location of the back-end database.mdb so that a ReAttach routine knows where to refresh the links to.  This is done routinely whenever a new front-end is sent out.

As a result of new servers being installed and the systems engineers renaming the servers with a slighly different naming convention I just test for the ability to read a file at the old location and if unsuccessful then update the .ini file on the PC c:\winnt location with the new naming convention and trigger the reattachment routine.

Problem is I am having a hard time getting the Declaration and call to the function correct.  I need a little help.

app.ini file

[Options]
SystemDB=\\GH9010_1\data\system.mdw

I want to change the underscore to a hyphen: -

What I have done so far:

General Declarations
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpAppName, ByVal lpKeyName, ByVal lpString, ByVal lpFileName) As Long


Dim xReturnedIniWriteValue As Long

xReturnedIniWriteValue = WritePrivateProfileString("[Options]", "SystemDB", "\\GH9010-1\data\system.mdw", "app.ini")

After executing the above statement I get a Dr. Watson error and system crashes.

Anyone awake out there.

Bob Scriver


0
Comment
Question by:Bob Scriver
  • 5
  • 2
  • 2
  • +1
10 Comments
 
LVL 2

Expert Comment

by:BozzoCage
ID: 6377011
didn't checked, but I'm quite sure you shouldn't use backslash with API's. Replace each \ with \\
...SystemDB", "\\\\GH9010-1\\data\\system.mdw", ...


0
 
LVL 3

Author Comment

by:Bob Scriver
ID: 6377142
I don't understand how that could be.  The parameter is just a string represenation of exactly what I want to be placed behind the SystemDB= in the [Options] section of the app.ini.  To put double backslashes will just place exactly that in the app.ini.

Does the API call analyze the string going to be written before it writes it? What is the final product of the write call.  four backslashes or two?   It must be two to represent the network representation of where the system.mdw file is located.

Bob Scirver
0
 
LVL 3

Author Comment

by:Bob Scriver
ID: 6377171
I have solved my own problem.  Amazing what 5 hours of sleep will do for one's logic.  

The declaration statement was not appropriate for 32-bit NT.  
16-bit:


32-bit:
Declare Function apiWritePrivateProfileString Lib _
         "kernel32" Alias "WritePrivateProfileStringA"
         (ByVal lpApplicationName As String, ByVal         lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
0
Enterprise Mobility and BYOD For Dummies

Like “For Dummies” books, you can read this in whatever order you choose and learn about mobility and BYOD; and how to put a competitive mobile infrastructure in place. Developed for SMBs and large enterprises alike, you will find helpful use cases, planning, and implementation.

 
LVL 3

Author Comment

by:Bob Scriver
ID: 6377172
I have solved my own problem.  Amazing what 5 hours of sleep will do for one's logic.  

The declaration statement was not appropriate for 32-bit NT.  
16-bit:


32-bit:
Declare Function apiWritePrivateProfileString Lib _
         "kernel32" Alias "WritePrivateProfileStringA"
         (ByVal lpApplicationName As String, ByVal         lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
0
 
LVL 3

Author Comment

by:Bob Scriver
ID: 6377181
Sorry I wasn't done with the explaination.  Fatfingered the enter key by mistake.

There is a difference between the 16-bit and 32-bit API Declaration statements. The following link to MSKB will list the common calls and their appropriate conversions.

http://support.microsoft.com/support/kb/articles/Q147/7/81.asp?LN=EN-US&SD=gn&FR=0&qry=writeprivateprofilestring&rnk=1&src=DHCS_MSPSS_gn_SRCH&SPR=ACC97 

See WritePrivateProfileString near the bottom.

After updating my Declaration statement with the changes it all worked correctly.  I will leave this question posted for a while so others may benefit from what I have found but then I will be deleting it.  

BozzoCage:  Thanks for the comeback but that was not the answer.  As I stated earlier the \\ were just string characters and shouldn't have been analyzed by the API  call.

Bob Scriver  



0
 
LVL 2

Expert Comment

by:BozzoCage
ID: 6377190
You'r right. \\ shouldn't be analyzed by APIs. I do remember that somewhere it is... I read about this, so I blindly guessed here with no real testing of your example.

I'm glad you figured this out yourself :-)

Best wishes,
  BozzoCage
0
 
LVL 7

Expert Comment

by:Nosterdamus
ID: 6377616
Hi scriverb,

I posted this http://www.experts-exchange.com/jsp/qManageQuestion.jsp?ta=commspt&qid=20167228 request at CS TA to PAQ this question and return the question point back to you.

Congrats for solving the problem by your self.

Nostedamus
0
 
LVL 3

Author Comment

by:Bob Scriver
ID: 6377633
Nostedamus:
Thanks for the assistance.  I didn't want to delete the question because I felt that it might be helpful to others.  Thanks again.

Bob Scriver
0
 
LVL 7

Expert Comment

by:Nosterdamus
ID: 6377634
;-)
0
 
LVL 1

Accepted Solution

by:
Moondancer earned 0 total points
ID: 6378031
Thank you all.  Rather than deleting this, I will refund points and move this to our PAQ so others can find the excellent help within this question.
Moondancer
Community Support Moderator @ Experts Exchange
0

Featured Post

The Eight Noble Truths of Backup and Recovery

How can IT departments tackle the challenges of a Big Data world? This white paper provides a roadmap to success and helps companies ensure that all their data is safe and secure, no matter if it resides on-premise with physical or virtual machines or in the cloud.

Question has a verified solution.

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

QuickBooks® has a great invoice interface that we were happy with for a while but that changed in 2001 through no fault of Intuit®. Our industry's unit names are dictated by RUS: the Rural Utilities Services division of USDA. Contracts contain un…
As tax season makes its return, so does the increase in cyber crime and tax refund phishing that comes with it
Familiarize people with the process of utilizing SQL Server stored procedures from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Micr…
With Microsoft Access, learn how to start a database in different ways and produce different start-up actions allowing you to use a single database to perform multiple tasks. Specify a start-up form through options: Specify an Autoexec macro: Us…

839 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