Maintaining .INI Files 
Author Message
 Maintaining .INI Files

I'm trying to maintain an INI file using C# and cannot
find an equivalent to the WriteProfileString and
ReadProfileString in VB

Thanks in advance



Tue, 31 May 2005 00:58:35 GMT  
 Maintaining .INI Files
INIs are somewhat 'obsolete'...

You have to use PInvoke like:
  http://www.mentalis.org/soft/class.qpx?id=6

--
 Thomas Scheidegger - MVP .NET - 'NETMaster'
 http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/



Tue, 31 May 2005 01:06:32 GMT  
 Maintaining .INI Files
Hi Richard,

Did you try to use the StreamWriter and StreamReader?
I think it's better for maintain the text file.

Quote:
>-----Original Message-----
>I'm trying to maintain an INI file using C# and cannot
>find an equivalent to the WriteProfileString and
>ReadProfileString in VB

>Thanks in advance
>.



Tue, 31 May 2005 01:19:38 GMT  
 Maintaining .INI Files
try using this class.

/*

IniReader class for C#

Version: 1.0 Date: 2002/04/24

*/

/*

Copyright ? 2002, The KPD-Team

All rights reserved.

http://www.mentalis.org/

Redistribution and use in source and binary forms, with or without

modification, are permitted provided that the following conditions

are met:

- Redistributions of source code must retain the above copyright

notice, this list of conditions and the following disclaimer.

- Neither the name of the KPD-Team, nor the names of its contributors

may be used to endorse or promote products derived from this

software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS

"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT

LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS

FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL

THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,

INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES

(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR

SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)

HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,

STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED

OF THE POSSIBILITY OF SUCH DAMAGE.

*/

using System;

using System.Text;

using System.Collections;

using System.Runtime.InteropServices;

// The Org.Mentalis.Files contains a number of classes that read from or
write to special files.

namespace Org.Mentalis.Files {

/// <summary>

/// The INIReader class can read keys from and write keys to an INI file.

/// </summary>

/// <remarks>

/// This class uses several Win32 API functions to read from and write to
INI files. It will not work on Linux or FreeBSD.

/// </remarks>

public class IniReader {

// API declarations

/// <summary>

/// The GetPrivateProfileInt function retrieves an integer associated with a
key in the specified section of an initialization file.

/// </summary>

/// <param name="lpApplicationName">Pointer to a null-terminated string
specifying the name of the section in the initialization file.</param>

/// <param name="lpKeyName">Pointer to the null-terminated string specifying
the name of the key whose value is to be retrieved. This value is in the
form of a string; the GetPrivateProfileInt function converts the string into
an integer and returns the integer.</param>

/// <param name="nDefault">Specifies the default value to return if the key
name cannot be found in the initialization file.</param>

/// <param name="lpFileName">Pointer to a null-terminated string that
specifies the name of the initialization file. If this parameter does not
contain a full path to the file, the system searches for the file in the
Windows directory.</param>

/// <returns>The return value is the integer equivalent of the string
following the specified key name in the specified initialization file. If
the key is not found, the return value is the specified default value. If
the value of the key is less than zero, the return value is zero.</returns>

[DllImport("KERNEL32.DLL", EntryPoint="GetPrivateProfileIntA",
CharSet=CharSet.Ansi)]

private static extern int GetPrivateProfileInt(string lpApplicationName,
string lpKeyName, int nDefault, string lpFileName);

/// <summary>

/// The WritePrivateProfileString function copies a string into the
specified section of an initialization file.

/// </summary>

/// <param name="lpApplicationName">Pointer to a null-terminated string
containing the name of the section to which the string will be copied. If
the section does not exist, it is created. The name of the section is
case-independent; the string can be any combination of uppercase and
lowercase letters.</param>

/// <param name="lpKeyName">Pointer to the null-terminated string containing
the name of the key to be associated with a string. If the key does not
exist in the specified section, it is created. If this parameter is NULL,
the entire section, including all entries within the section, is
deleted.</param>

/// <param name="lpString">Pointer to a null-terminated string to be written
to the file. If this parameter is NULL, the key pointed to by the lpKeyName
parameter is deleted.</param>

/// <param name="lpFileName">Pointer to a null-terminated string that
specifies the name of the initialization file.</param>

/// <returns>If the function successfully copies the string to the
initialization file, the return value is nonzero; if the function fails, or
if it flushes the cached version of the most recently accessed
initialization file, the return value is zero.</returns>

[DllImport("KERNEL32.DLL", EntryPoint="WritePrivateProfileStringA",
CharSet=CharSet.Ansi)]

private static extern int WritePrivateProfileString (string
lpApplicationName, string lpKeyName, string lpString, string lpFileName);

/// <summary>

/// The GetPrivateProfileString function retrieves a string from the
specified section in an initialization file.

/// </summary>

/// <param name="lpApplicationName">Pointer to a null-terminated string that
specifies the name of the section containing the key name. If this parameter
is NULL, the GetPrivateProfileString function copies all section names in
the file to the supplied buffer.</param>

/// <param name="lpKeyName">Pointer to the null-terminated string specifying
the name of the key whose associated string is to be retrieved. If this
parameter is NULL, all key names in the section specified by the lpAppName
parameter are copied to the buffer specified by the lpReturnedString
parameter.</param>

/// <param name="lpDefault">Pointer to a null-terminated default string. If
the lpKeyName key cannot be found in the initialization file,
GetPrivateProfileString copies the default string to the lpReturnedString
buffer. This parameter cannot be NULL. <br>Avoid specifying a default string
with trailing blank characters. The function inserts a null character in the
lpReturnedString buffer to strip any trailing blanks.</br></param>

/// <param name="lpReturnedString">Pointer to the buffer that receives the
retrieved string.</param>

/// <param name="nSize">Specifies the size, in TCHARs, of the buffer pointed
to by the lpReturnedString parameter.</param>

/// <param name="lpFileName">Pointer to a null-terminated string that
specifies the name of the initialization file. If this parameter does not
contain a full path to the file, the system searches for the file in the
Windows directory.</param>

/// <returns>The return value is the number of characters copied to the
buffer, not including the terminating null character.</returns>

[DllImport("KERNEL32.DLL", EntryPoint="GetPrivateProfileStringA",
CharSet=CharSet.Ansi)]

private static extern int GetPrivateProfileString (string lpApplicationName,
string lpKeyName, string lpDefault, StringBuilder lpReturnedString, int
nSize, string lpFileName);

/// <summary>

/// The GetPrivateProfileSectionNames function retrieves the names of all
sections in an initialization file.

/// </summary>

/// <param name="lpszReturnBuffer">Pointer to a buffer that receives the
section names associated with the named file. The buffer is filled with one
or more null-terminated strings; the last string is followed by a second
null character.</param>

/// <param name="nSize">Specifies the size, in TCHARs, of the buffer pointed
to by the lpszReturnBuffer parameter.</param>

/// <param name="lpFileName">Pointer to a null-terminated string that
specifies the name of the initialization file. If this parameter is NULL,
the function searches the Win.ini file. If this parameter does not contain a
full path to the file, the system searches for the file in the Windows
directory.</param>

/// <returns>The return value specifies the number of characters copied to
the specified buffer, not including the terminating null character. If the
buffer is not large enough to contain all the section names associated with
the specified initialization file, the return value is equal to the length
specified by nSize minus two.</returns>

[DllImport("KERNEL32.DLL", EntryPoint="GetPrivateProfileSectionNamesA",
CharSet=CharSet.Ansi)]

private static extern int GetPrivateProfileSectionNames (byte[]
lpszReturnBuffer, int nSize, string lpFileName);

/// <summary>

/// The WritePrivateProfileSection function replaces the keys and values for
the specified section in an initialization file.

/// </summary>

/// <param name="lpAppName">Pointer to a null-terminated string specifying
the name of the section in which data is written. This section name is
typically the name of the calling application.</param>

/// <param name="lpString">Pointer to a buffer containing the new key names
and associated values that are to be written to the named section.</param>

/// <param name="lpFileName">Pointer to a null-terminated string containing
the name of the initialization file. If this parameter does not contain a
full path for the file, the function searches the Windows directory for the
file. If the file does not exist and lpFileName does not contain a full
path, the function creates the file in the Windows directory. The function
does not create a file if lpFileName contains the full path and file name of
a file that does not exist.</param>

/// <returns>If the function succeeds, the return value is nonzero.<br>If
the function fails, the return value is zero.</br></returns>

[DllImport("KERNEL32.DLL", EntryPoint="WritePrivateProfileSectionA",
CharSet=CharSet.Ansi)]

private static extern int WritePrivateProfileSection (string lpAppName,
string lpString, string lpFileName);

/// <summary>Constructs a new IniReader instance.</summary>

/// <param name="file">Specifies the full path to the INI file (the file
doesn't have to exist).</param>

public IniReader(string file) {

Filename = file;

Quote:
}

/// <summary>Gets or sets the full path to the INI ...

read more »



Tue, 31 May 2005 01:28:15 GMT  
 
 [ 4 post ] 

 Relevant Pages 

1. 2nd try: need a C library file for reading Windows-style .INI files

2. Q:DotNETs version on INI files

3. Replacement for INI Files?

4. Function to read a .ini file

5. How to read INI files (16bit DOS)

6. ini file class

7. Need source to read INI files, help?

8. Looking for source to read/write INI files?

9. C program for reading .ini files

10. What takes the place of old .ini files

11. Reading .INI files

12. who to read ini file

 

 
Powered by phpBB® Forum Software