1 people like it.
Like the snippet!
WinAPI IniFile F# Interface
work with ini file with WritePrivateProfileString, GetPrivateProfileString
easy as pie
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
|
module Configuration
open System
open System.Text
open System.Runtime.InteropServices
module kernel =
[<DllImport(@"kernel32")>]
extern int64 WritePrivateProfileString(string section, string key, string v, string filePath);
[<DllImport("kernel32")>]
extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
type public IniFile(iNIPath : string) =
let mutable path = iNIPath
member X.Path
with get() = path
and set v = path <- v
member X.IniWriteValue section key value =
kernel.WritePrivateProfileString(section, key, value, X.Path)
member X.IniReadValue section key =
let temp = new StringBuilder(255)
let i = kernel.GetPrivateProfileString(section, key, "", temp, 255, X.Path)
temp.ToString()
|
module Configuration
namespace System
namespace System.Text
namespace System.Runtime
namespace System.Runtime.InteropServices
Multiple items
type DllImportAttribute =
inherit Attribute
new : dllName:string -> DllImportAttribute
val EntryPoint : string
val CharSet : CharSet
val SetLastError : bool
val ExactSpelling : bool
val PreserveSig : bool
val CallingConvention : CallingConvention
val BestFitMapping : bool
val ThrowOnUnmappableChar : bool
member Value : string
Full name: System.Runtime.InteropServices.DllImportAttribute
--------------------
DllImportAttribute(dllName: string) : unit
Multiple items
val int64 : value:'T -> int64 (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int64
--------------------
type int64 = Int64
Full name: Microsoft.FSharp.Core.int64
--------------------
type int64<'Measure> = int64
Full name: Microsoft.FSharp.Core.int64<_>
val WritePrivateProfileString : section:string * key:string * v:string * filePath:string -> int64
Full name: Configuration.kernel.WritePrivateProfileString
Multiple items
val string : value:'T -> string
Full name: Microsoft.FSharp.Core.Operators.string
--------------------
type string = String
Full name: Microsoft.FSharp.Core.string
val section : string
val key : string
val v : string
val filePath : string
Multiple items
val int : value:'T -> int (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int
--------------------
type int = int32
Full name: Microsoft.FSharp.Core.int
--------------------
type int<'Measure> = int
Full name: Microsoft.FSharp.Core.int<_>
val GetPrivateProfileString : section:string * key:string * def:string * retVal:StringBuilder * size:int * filePath:string -> int
Full name: Configuration.kernel.GetPrivateProfileString
val def : string
Multiple items
type StringBuilder =
new : unit -> StringBuilder + 5 overloads
member Append : value:string -> StringBuilder + 18 overloads
member AppendFormat : format:string * arg0:obj -> StringBuilder + 4 overloads
member AppendLine : unit -> StringBuilder + 1 overload
member Capacity : int with get, set
member Chars : int -> char with get, set
member Clear : unit -> StringBuilder
member CopyTo : sourceIndex:int * destination:char[] * destinationIndex:int * count:int -> unit
member EnsureCapacity : capacity:int -> int
member Equals : sb:StringBuilder -> bool
...
Full name: System.Text.StringBuilder
--------------------
StringBuilder() : unit
StringBuilder(capacity: int) : unit
StringBuilder(value: string) : unit
StringBuilder(value: string, capacity: int) : unit
StringBuilder(capacity: int, maxCapacity: int) : unit
StringBuilder(value: string, startIndex: int, length: int, capacity: int) : unit
val retVal : StringBuilder
val size : int
Multiple items
type IniFile =
new : iNIPath:string -> IniFile
member IniReadValue : section:string -> key:string -> string
member IniWriteValue : section:string -> key:string -> value:string -> int64
member Path : string
member Path : string with set
Full name: Configuration.IniFile
--------------------
new : iNIPath:string -> IniFile
val iNIPath : string
val mutable path : string
val X : IniFile
member IniFile.Path : string with set
Full name: Configuration.IniFile.Path
val set : elements:seq<'T> -> Set<'T> (requires comparison)
Full name: Microsoft.FSharp.Core.ExtraTopLevelOperators.set
member IniFile.IniWriteValue : section:string -> key:string -> value:string -> int64
Full name: Configuration.IniFile.IniWriteValue
val value : string
module kernel
from Configuration
property IniFile.Path: string
member IniFile.IniReadValue : section:string -> key:string -> string
Full name: Configuration.IniFile.IniReadValue
val temp : StringBuilder
val i : int
StringBuilder.ToString() : string
StringBuilder.ToString(startIndex: int, length: int) : string
More information