weequ
2010-01-17 05:24:04
program AutoResponder;
type
SubClass = record
Name: String;
Words: Array of String;
end;
MainClass = record
Name: String;
Words: Array of String;
SubClass: Array[0..10] of SubClass;
end;
WordRecord = record
MainClass: Array[0..10] of MainClass;
end;
//------------------------------------------------------------------------------
function ArrayInStr(Str: String; Arr: TStringArray): String;
var
I: Integer;
begin
for I := 0 to High(Arr) do
if Pos(LowerCase(Arr[I]), Str) > 0 then
Break;
if I <= High(Arr) then Result := Arr[I];
end;
//------------------------------------------------------------------------------
function ArraysInStr(Str: String; Arr: Array of TStringArray): Array of String;
var
I: Integer;
begin
SetLength(Result, Length(Arr));
for I := 0 to High(Arr) do
Result[I] := ArrayInStr(Str, Arr[I]);
end;
//------------------------------------------------------------------------------
function CombineStringArrays(Arr: Array of TStringArray): TStringArray;
var
I, II: Integer;
begin
for I := 0 to High(Arr) do
for II := 0 to High(Arr[I]) do
begin
SetArrayLength(Result, Length(Result)+1);
Result[High(result)] := Arr[I][II];
end;
end;
//------------------------------------------------------------------------------
function SearchClass(S: String): TStringArray;
begin
Result := [];
end;
//------------------------------------------------------------------------------
function DeclareWords: WordRecord;
begin
Result.MainClass[0].Name := 'questions';
Result.MainClass[0].Words := ['?', 'what', 'who', 'when', 'where', 'how', 'why'];
Result.MainClass[1].Name := 'greetings';
Result.MainClass[1].Words := ['hi', 'hello', 'hey'];
Result.MainClass[2].Name := 'funny';
Result.MainClass[2].Words := ['lol', 'lmao', 'rofl', 'haha'];
Result.MainClass[3].Name := 'smiles';
Result.MainClass[3].SubClass[0].Name := 'good';
Result.MainClass[3].SubClass[0].Words := [':)', ':D', ';)', '(:', 'xd', ':P'];
Result.MainClass[3].SubClass[1].Name := 'average';
Result.MainClass[3].SubClass[1].Words := [':/', ':o'];
Result.MainClass[3].SubClass[2].Name := 'bad';
Result.MainClass[3].SubClass[2].Words := [':(', ':S', ';(', '):', '-.-'];
Result.MainClass[3].Words := CombineStringArrays([Result.MainClass[3].SubClass[0].Words,
Result.MainClass[3].SubClass[1].Words, Result.MainClass[3].SubClass[2].Words]);
Result.MainClass[4].Name := 'persons';
Result.MainClass[4].SubClass[0].Name := 'good';
Result.MainClass[4].SubClass[0].Words := ['m8', 'mate'];
Result.MainClass[4].SubClass[1].Name := 'average';
Result.MainClass[4].SubClass[1].Words := ['dude'];
Result.MainClass[4].SubClass[2].Name := 'good';
Result.MainClass[4].SubClass[2].Words := ['noob', 'idiot', 'newbs'];
Result.MainClass[4].Words := CombineStringArrays([Result.MainClass[4].SubClass[0].Words,
Result.MainClass[4].SubClass[1].Words, Result.MainClass[4].SubClass[2].Words]);
Result.MainClass[5].Name := 'skills';
Result.MainClass[5].Words := ['agility', 'attack', 'construction', 'cooking', 'runecrafting',
'crafting', 'defence', 'farming', 'firemaking', 'fishing', 'fletching', 'herblore',
'hitpoints', 'hunter', 'magic', 'mining', 'prayer', 'ranged', 'slayer', 'smithing',
'strength', 'summoning', 'thieving', 'woodcutting'];
end;
//------------------------------------------------------------------------------
function FilledStringsInArray(Arr: TStringArray): Integer;
var
I: Integer;
begin
for I := 0 to High(Arr) do
if Arr[I] <> '' then Inc(Result);
end;
//------------------------------------------------------------------------------
function GetAnsver(Text: String): String;
var
Words: WordRecord;
begin
Words := DeclareWords;
Result := '';
end;
//------------------------------------------------------------------------------
begin
WriteLn(GetAnsver(':)'));
end.It doesn't ansver to anything yet. Please comment and give suggestions.Should I use variant arrays so I could add subsubsub classes etc..?