Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » U++ Library support » U++ Core » Little .ini reading request
Re: Little .ini reading request [message #24284 is a reply to message #24273] Fri, 08 January 2010 18:13 Go to previous messageGo to previous message
mirek is currently offline  mirek
Messages: 14256
Registered: November 2005
Ultimate Member
mrjt wrote on Fri, 08 January 2010 07:49

The current Ini file reading util function is very handy, but it is unable to cope with sections that some people put in .Ini files. These are usually deliminated by [SECTION_NAME], but people have nasty habit of just making it up as they go along Smile

I have a requirement to read such a file and wondered whether the following minor change could be committed for me so that I don't have to duplicate code:

Util.cpp:
VectorMap<String, String> LoadIniFile(const char *filename) {
	FileIn in(filename);
	if(!in) return VectorMap<String, String>();
	return LoadIniStream(in);
}

VectorMap<String, String> LoadIniStream(Stream &in) {
	VectorMap<String, String> key;
	int c;
	if((c = in.Get()) < 0) return key;
	for(;;) {
		String k, v;
		for(;;) {
			if(IsAlNum(c) || c == '_')
				k.Cat(c);
			else
				break;
			if((c = in.Get()) < 0) return key;
		}
		for(;;) {
			if(c != '=' && c != ' ') break;
			if((c = in.Get()) < 0) return key;
		}
		for(;;) {
			if(c < ' ') break;
			v.Cat(c);
			if((c = in.Get()) < 0) break;
		}
		if(!k.IsEmpty())
			key.Add(k, v);
		if(k == "LINK") {
			in.Close();
			if(!in.Open(v) || (c = in.Get()) < 0) return key;
		}
		else
			for(;;) {
				if(IsAlNum(c) || c == '_') break;
				if((c = in.Get()) < 0) return key;
			}
	}
}


Util.h:
VectorMap<String, String> LoadIniFile(const char *filename);
VectorMap<String, String> LoadIniStream(Stream &in);

This means that I can just read .Ini file to correct section myself and then call LoadIniStream.

Cheers!


Why not.

BTW, what about adding some "real" support. Maybe we can detect sections and create keys like "SECTION.KEY"?

Mirek
 
Read Message
Read Message
Read Message
Read Message
Previous Topic: File/Folder deleting, Recycle Bin and Read only files
Next Topic: Pick problems
Goto Forum:
  


Current Time: Wed Apr 30 19:32:25 CEST 2025

Total time taken to generate the page: 0.02865 seconds