A help program that uses a disk file
to store help information
/*
C# A Beginner's Guide
By Schildt
Publisher: Osborne McGraw-Hill
ISBN: 0072133295
*/
/*
Project 11-2
A help program that uses a disk file
to store help information.
*/
using System;
using System.IO;
/* The Help class opens a help file,
searches for a topic, and then displays
the information associated with that topic. */
class Help {
string helpfile; // name of help file
public Help(string fname) {
helpfile = fname;
}
// Display help on a topic.
public bool helpon(string what) {
StreamReader helpRdr;
int ch;
string topic, info;
try {
helpRdr = new StreamReader(helpfile);
}
catch(FileNotFoundException exc) {
Console.WriteLine(exc.Message);
return false;
}
try {
do {
// read characters until a # is found
ch = helpRdr.Read();
// now, see if topics match
if(ch == '#') {
topic = helpRdr.ReadLine();
if(what == topic) { // found topic
do {
info = helpRdr.ReadLine();
if(info != null) Console.WriteLine(info);
} while((info != null) && (info != ""));
helpRdr.Close();
return true;
}
}
} while(ch != -1);
}
catch(IOException exc) {
Console.WriteLine(exc.Message);
}
helpRdr.Close();
return false; // topic not found
}
// Get a Help topic.
public string getSelection() {
string topic = "";
Console.Write("Enter topic: ");
try {
topic = Console.ReadLine();
}
catch(IOException exc) {
Console.WriteLine(exc.Message);
return "";
}
return topic;
}
}
// Demonstrate the file-based Help system.
public class FileHelp {
public static void Main() {
Help hlpobj = new Help("helpfile.txt");
string topic;
Console.WriteLine("Try the help system. " +
"Enter 'stop' to end.");
do {
topic = hlpobj.getSelection();
if(!hlpobj.helpon(topic))
Console.WriteLine("Topic not found.\n");
} while(topic != "stop");
}
}
/*
#if
if(condition) statement;
else statement;
#switch
switch(expression) {
case constant:
statement sequence
break;
// ...
}
#for
for(init; condition; iteration) statement;
#while
while(condition) statement;
#do
do {
statement;
} while (condition);
#break
break; or break label;
#continue
continue; or continue label;
#goto
goto label;
*/
Related examples in the same category